
Common Use Cases
- Fire workflows in third-party platforms such as Zapier or Workato
- Sending an email campaign when a user submits a certain NPS score
- Sending content engagement events to your analytical tools for analysis in real-time
- Notify your back-end system when an event occurs in Userpilot
- Send real-time updates to CRM platforms like Hubspot
- Send real-time notifications to Slack channels after users take an action in Userpilot
- Trigger an email when a user clicks on a button in one of the flows.
If you signed up after May 30th 2023, this feature is only available for Growth and Enterprise plans. If you wish to know more about upgrading your plan please reach out to support@userpilot.com
Events
Webhooks can be created for any of these events:- Flows: Completed, Started, Dismissed
- Checklists: Completed, Started, Dismissed
- NPS: Score, Dismissed, Feedback
- Forms: Submitted
- Feature Tags: Click, Hover, Text Input
- Button Tracked Events: Tracked through the button action settings in a flow
How to create a Webhook
Navigate to the Integrations page under Configure, then to the Webhooks tab. From here:- Click on Create Webhook to initiate the creation pop-up.
- Give your Webhook a descriptive name and specify the endpoint where your events will be sent.
- Click Create.
- Select the Events that you would like to send in your Webhook from the Events list
- You can also include up to 10 user/company properties and a secret token to secure your requests.
We strongly recommend including the secret token to ensure requests are coming from Userpilot and nobody else. The complexity of this secret will vary based on your security protocol requirements.
- Click on Save and toggle the Status column to enable the Webhook.

Testing Webhook Events
You can send a test event before enabling the webhook live. Once you have configured all the settings mentioned in the steps above, you can click on the “Send Test” button.
Verifying Webhook Events from Userpilot
To ensure the security and integrity of the events we send to your webhook, we include a signature in theX-Signature header. By verifying this signature, you can confirm that the event was sent by Userpilot and has not been tampered with during transmission.
Structure of the X-Signature Header
The X-Signature header consists of two components (t={{TIMESTAMP}},v1={{SIGNATURE}}).
- t: Timestamp of the request.
- v1: Signature derived from the request payload and your secret key.
How to Verify the Signature
To verify the signature (v1 value) of an incoming webhook event:
- Parse the Request Body: Extract and stringify the JSON payload of the incoming webhook request.
-
Retrieve the Timestamp: Extract the timestamp value (
t) from theX-Signatureheader. As a fallback, the timestamp is also provided within the request body. -
Construct the Signature Base String: Concatenate the stringified request body and the timestamp with a period (.) in between:
signature_base_string = stringified_request_body + "." + timestamp - Compute the HMAC SHA-256 Signature: Using your secret key, compute the HMAC SHA-256 hash of the signature base string.
-
Compare Signatures: The computed hash should match the
v1value in theX-Signatureheader. If they are identical, the webhook event is verified.
Example in NodeJS
Webhook Payload Schema
Webhooks are sent to your specified destination endpoint as HTTP POST requests with a JSON-formatted body. You can find the payload information with a sample request below. The Event Response This part of the payload includes information about the triggered event. Generic Metadata This part of the payload includes default information sent with every payload - e.g. user id, app token, etc. Additional User & Company Properties This part of the payload includes user and company objects containing properties you’ve opted to send in your WebhookWe strongly recommend sending data only to third party systems you trust as Webhook information may contain personally identifiable information (PII)
Flows
Checklists
Surveys
NPS
Feature Tags
Forms
Button Tracked Events
For any questions or concerns please reach out to support@userpilot.com