Kustomer

Identifies the customer and records a tracking event on their Kustomer timeline in one call to /v1/tracking/identityEvent.

Why route Kustomer through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Kustomer even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • One consent decision governs every destination. Kustomer is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

Create an API key

In Kustomer, open Settings > Security > API Keys and create a key with the org.tracking role.

Note your organisation name

The subdomain of your Kustomer URL; it forms https://{org}.api.kustomerapp.com.

Configuration

FieldTypeRequiredDescription
org_namestringYesYour Kustomer organization subdomain. It forms the API host https://<org_name>.api.kustomerapp.com. Find it in your Kustomer URL (https://<org_name>.kustomerapp.com) or under Settings > Security > API Keys, which shows your base URL.
api_keysecretYesA Kustomer API key (JWT) with the org.tracking role, plus org.user.customer if it should create or update customer records. Create one under Settings > Security > API Keys. Sent as ‘Authorization: Bearer <api_key>’.

Signal setup

  1. Navigate to Integrations in the sidebar and open the Integration Library tab.
  2. Find Kustomer, click Install and fill in the fields above.
  3. Pick the preset for your use, then review the mappings in the blueprint editor.

API endpoint

POST https://{org_name}.api.kustomerapp.com/v1/tracking/identityEvent
Authorization: Bearer {api_key}

Example request:

{"identity": {"email": "jane.doe@example.com", "externalId": "crm-user-7", "name": "Jane Doe"},
 "event": {"name": "OrderCompleted", "meta": {"orderId": "ORD-1001", "revenueNum": 279.98, "currency": "GBP",
   "taxNum": 46.66, "shippingNum": 4.99, "coupon": "SPRING10", "productIds": "SKU-1,SKU-2",
   "productNames": "Parka Jacket,Wool Hat", "occurredAt": "2026-09-22T10:13:20Z", "anonymousId": "df_anon_...",
   "pageUrl": "https://www.example.co.uk/checkout"}}}

The presets turn on the strict output contract: only the fields the blueprint maps are sent.

Event mapping

Default preset (default)

Retail support context: page views, sign-up, login, search, product views, cart adds, checkout, orders and refunds. Each event identifies the customer by email (trimmed, lower-cased) and the Signal user ID as externalId, with their name, in plain text because Kustomer’s agents see and match the customer on them, and records a tracking event on the customer’s timeline. Event names have no spaces (Kustomer rejects them); meta keys follow Kustomer’s suffixes (Num numbers, At date-times), currency upper-case. Events with neither an email nor a user ID are not sent.

Signal eventSent to the vendor asEnabled
pagePageViewedyes
sign_upSignedUpyes
loginLoggedInyes
searchProductsSearchedyes
view_itemProductViewedyes
add_to_cartProductAddedyes
begin_checkoutCheckoutStartedyes
purchaseOrderCompletedyes
refundOrderRefundedyes

B2B / SaaS preset (saas)

SaaS support context: sign-up, login, trial and subscription lifecycle, support tickets and feature use. Each event identifies the customer by email (trimmed, lower-cased) and the Signal user ID as externalId, with their name, in plain text because Kustomer’s agents see and match the customer on them, and records a tracking event on the customer’s timeline. Event names have no spaces (Kustomer rejects them); meta keys follow Kustomer’s suffixes (Num numbers, At date-times), currency upper-case. Events with neither an email nor a user ID are not sent.

Signal eventSent to the vendor asEnabled
sign_upSignedUpyes
loginLoggedInyes
trial_startedTrialStartedyes
subscription_startedSubscriptionStartedyes
subscription_cancelledSubscriptionCancelledyes
support_ticket_createdSupportTicketCreatedyes
feature_usedFeatureUsedyes

Identity and personal data

The customer is identified by the email trait (trimmed, lower-cased) and the Signal user ID as externalId, with their name. These are sent in plain text because Kustomer matches the customer on them and shows them to agents. Events with neither an email nor a user ID are not sent.

Map the integration to the consent category your organisation uses for CRM or sales data. Signal does not write cookie consent into the CRM: no subscription status, do-not-disturb flag, list or tag is set from it, because a cookie banner choice is not a permission to email or call someone.

Known limitations

  • Event names cannot contain spaces (Kustomer’s pattern is ^[a-zA-Z][a-zA-Z0-9-_.]+$), so they are PascalCase.
  • Meta values are flat: keys ending Num are numbers, keys ending At are date-times, everything else is a string. Product IDs and names are comma-separated lists.

Troubleshooting

SymptomCause and fix
400An event name with a space, or a meta key whose value does not match its suffix.
403The key lacks org.tracking.