Zendesk
Datafly Signal delivers your first-party events to the Zendesk Events API as custom events on the Zendesk end-user profile timeline. Each event Signal collects (a page view, a product view, an order, a sign-up) is recorded against the matching Zendesk end user, so your support agents see the customer’s recent activity before they ever open a ticket.
Delivery is server-to-server: events go from your Signal deployment straight to Zendesk’s API. No Zendesk JavaScript runs in the browser.
Prerequisites
- A Zendesk account with the Events API available on your plan.
- An admin or agent email address.
- A Zendesk API token. Create one in Admin Center → Apps and integrations → APIs → Zendesk API → Add API token. Make sure token access is enabled.
- Your Zendesk subdomain (the
acmeinacme.zendesk.com).
Configuration
| Field | Required | Description |
|---|---|---|
| Zendesk Subdomain | Yes | Subdomain only — acme, not acme.zendesk.com. |
| Agent/Admin Email | Yes | Email of an admin or agent in your account. |
| API Token | Yes | The API token created in Admin Center. Stored encrypted. |
Authentication uses Zendesk’s API-token scheme: Signal sends the credential {email}/token:{api_token} as an HTTP Basic Authorization header.
Configure in Signal
- In your Signal management UI, open Integrations and add Zendesk.
- Enter your Subdomain, Email, and API Token.
- Attach the Zendesk blueprint to the pipeline that carries the events you want recorded.
- Save and enable the integration.
The blueprint maps Signal’s standard snake_case events (page, Product Viewed, Order Completed, Signed Up, Logged In, Lead Generated) to Zendesk custom event types. Any event not in the blueprint is dropped.
API Endpoint
POST https://{subdomain}.zendesk.com/api/v2/user_profiles/eventsThe request body carries two objects: a profile (which Zendesk matches to an existing end user) and an event (the activity to record).
Identity Signals
Zendesk matches each event to an end user using the profile identifiers Signal sends:
| Signal source | Identifier type | Notes |
|---|---|---|
email trait | email | Trimmed and lowercased so Zendesk can resolve an existing end user. |
user_id | external_id | Your stable customer ID. |
The email is sent in plain form (lowercased, trimmed) — Zendesk matches end users by the actual identifier value, so a hashed email would not resolve to a known user. If no profile matches, Zendesk creates an anonymous user and attaches the event to it.
Marketing consent (from your CMP, via Signal’s canonical consent category) is recorded as a marketing_consent profile attribute (granted / denied / unknown).
Event Mapping
A Signal event like this:
datafly.track("Order Completed", {
order_id: "1001",
revenue: 99.99,
currency: "USD",
coupon: "WELCOME10"
});with an identified user:
datafly.identify("u-42", { email: "Jane@Example.com", name: "Jane Doe" });produces this Zendesk Events API payload:
{
"profile": {
"source": "datafly_signal",
"type": "visitor",
"name": "Jane Doe",
"identifiers": [
{ "type": "email", "value": "jane@example.com" },
{ "type": "external_id", "value": "u-42" }
],
"attributes": { "marketing_consent": "granted" }
},
"event": {
"source": "datafly_signal",
"type": "order_completed",
"description": "Completed an order",
"created_at": "2026-06-06T10:00:00Z",
"properties": {
"order_id": "1001",
"revenue": 99.99,
"currency": "USD",
"coupon": "WELCOME10"
}
}
}Default event map
| Signal event | Zendesk event type |
|---|---|
page | page_viewed |
Product Viewed | product_viewed |
Order Completed | order_completed |
Signed Up | signed_up |
Logged In | logged_in |
Lead Generated | lead_generated |
Testing
- Send a test event through the pipeline (or use Signal’s Event Debugger to preview the outgoing payload).
- In Zendesk, open the matching end user’s profile and check the events / interaction timeline for the new custom event.
- A successful call returns HTTP 200.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
401 Unauthorized | Wrong email or API token, or token access disabled | Re-check the email, regenerate the token, and confirm token access is on in Admin Center → APIs. |
403 Forbidden | The acting user lacks permission | Use an admin/agent account. |
404 Not Found | Wrong subdomain | Enter the subdomain only (acme), no .zendesk.com. |
422 Unprocessable | No valid identifier on the profile | Ensure events are identified — at least an email or user_id must be present. |
400 Bad Request | Event properties not valid JSON | Avoid unsupported/deeply nested types in event properties. |
| Event created against a new anonymous user | No existing end user matched the email | Confirm the email matches an existing Zendesk end user, or accept that Zendesk creates a profile for new contacts. |