Skip to main content
Every delivery names its event in the X-Usertick-Event header, and every survey event also names it in the body’s type. Usertick may add events within v1, so a handler should check the event first and ignore any event it doesn’t recognize.

Response events

The AI analyzes a response that has a written answer of 20 characters or more, or two or more answers. A response it doesn’t analyze, or one the analysis failed on, is still sent after AI analysis with data.ai set to null. A workflow runs at most once for each event it starts on. Each event has a reference page with its full schema: response.created and response.analyzed.

AI events

Four more events report what happens after a response arrives: a status change, a correction to the AI’s reading, high urgency and a spiking theme. A workflow can start on response.urgent, but not on the other three events. Its Send to a webhook step sends the event the workflow started on. Reference pages: response.status_changed, response.classification_corrected, response.urgent and theme.spiking.

What changed

response.status_changed and response.classification_corrected carry the response as it reads now, plus data.change:
A correction to a theme looks like this:
response.urgent carries the response as it reads now, with no change. Its data.ai.urgency is high. A status a Jira or Linear sync applied comes with by.kind set to integration and is never sent back to the tracker, so a Zap or script that writes the same status again does not start a loop.

Theme spikes

Usertick checks themes every hour. A theme spikes when, over the last 24 hours:
  • it has at least 10 responses, and
  • that is at least 2 times its count in the 24 hours before.
Nothing spikes when the covered surveys had no responses at all in the 24 hours before, so a survey that just went live doesn’t trigger a spike. When those surveys had responses the day before, a theme with no responses that day spikes on its count alone. Each endpoint or subscription receives a spike for the same theme at most once every 24 hours, and at most 5 spikes per check, the largest first. The counts include only the surveys it covers, and they include corrections your team made.
data is a spike, not a response, so code that handles response events should check type first.

Filters

Each event takes the filters in this table. A subscription sets them in filters, and an endpoint in Settings sets them under Only these responses, or Only these themes for theme.spiking.
  • Feedback types: bug, idea, complaint, question, praise.
  • Urgency: high, medium, low.
  • Themes: theme ids from GET /themes, up to 5,000. A response matches when any of its answers is in one of them. On theme.spiking, only those themes are reported.
The API answers 400 with APK-006-002 for a filter the event doesn’t take, APK-006-010 for an unknown theme and APK-006-011 for more than 5,000 themes.

Choose the event in Settings

An endpoint’s Survey events settings appear when you create it with New webhook under Settings → Developers → Webhooks, and later under Settings in its row. Surveys starts at No surveys. When you select All surveys, including new ones or Only selected surveys, the When choices appear, each mapped to one event: Settings offers the filters from the table above. An endpoint sends one of these events, so another event needs a second endpoint with its own URL, such as a different path. Only selected surveys takes as many surveys as you select.

Latest items from the API

GET /responses/recent returns the newest items in the shape a delivery of the same event carries in data, filtered the way a subscription is. Zapier uses it for trigger samples. It looks through the newest 1,000 responses, or the newest 1,000 status changes, within your plan’s history. When a filter matches only older items, it returns fewer than limit. To read every response, use GET /responses.

A workflow’s Zapier step

A subscription can receive what a workflow sends to one of its Zapier steps instead of an event. Such a subscription sets event to workflow.step and names the step with workflowId and stepId, which GET /workflows/zapier-steps lists. The Zapier app’s Workflow Step trigger subscribes this way.
  • The workflow’s trigger, conditions, branches and waits decide which responses reach the step, so a workflow.step subscription takes no surveyId and no filters. A filter answers 400 with APK-006-002.
  • Each delivery carries the event that started the workflow’s run: type and the X-Usertick-Event header are response.created, response.analyzed or response.urgent, and data is the Response resource.
  • workflowId and stepId are required with workflow.step and refused with any other event, with 400 and APK-006-013. A workflow or a Zapier step the organization doesn’t have answers 404 with APK-006-014.
  • A step has one subscription at a time. While one is active, another subscription to the same step answers 409 with WH-005-010.
  • A step in a workflow’s draft can be subscribed to before the workflow is published, and a test run of the workflow never sends to the subscription.
  • The subscribe answer and the items of GET /webhooks include workflowId and stepId. They are set for a workflow.step subscription and null for every other subscription.
  • When an app such as Zapier subscribes, the person who connected it needs the Manage workflows permission, or the API answers 403 with AUTHZ-001-002.
  • When the workflow is deleted, Usertick deletes the subscriptions to its steps.

A full payload

The following body is a response.analyzed delivery. A response.created delivery has the same shape with "ai": null.
Every field of data is described on the Response resource. To see the payload for one of your own surveys, select an endpoint’s row under Settings → Developers → Webhooks, select Settings, and select a survey and an event under Payload sample. The sample is built the same way as a real delivery, from the survey’s newest response, or from its questions when the survey has no responses yet. For the two change events it adds an example change made by you, and for theme.spiking it shows an example spike for one of your themes.

Test pings

Send test in an endpoint’s row under Settings → Developers → Webhooks sends a ping event, which checks that the endpoint answers and that its signature check works. A ping carries the X-Usertick-Test: 1 header, is sent once without retries, and isn’t available for subscriptions made by an app or the API.
Test run on a workflow’s page runs the workflow once on the survey’s latest response, or on a sample response when the survey has none. Its Send to a webhook step sends a response envelope instead of a ping, also marked with X-Usertick-Test: 1.

Account notifications

An endpoint created in Settings can also receive account notifications. None are selected when the endpoint is created. Account notifications aren’t tied to a survey, and all of them share one body:
The X-Usertick-Event header carries the event key. Notifications about one person, such as a mention or a dashboard shared with someone, are not sent to webhooks.
Delivery failures are never sent as webhook events, because the report would go to the endpoint that is failing. Usertick notifies people in the app and by email instead.