Talon.One
Datafly Signal delivers events to Talon.One server-to-server using the Integration API (the Track Event V2 endpoint). Events arrive as Talon.One custom events and are evaluated by the Rule Engine to drive promotions, coupons, loyalty, and referral campaigns — with no client-side Talon.One SDK on your pages.
Prerequisites
Before configuring Talon.One in Signal you need a Talon.One Application, its deployment host, and a Production Integration API key.
Note your deployment host
Your Talon.One account lives on a region-specific host such as mycompany.europe-west1.talon.one. This is the host portion of the URL you use to reach the Campaign Manager. Signal posts events to https://<deployment>/v2/events.
Create the custom events
The Track Event V2 endpoint only accepts events whose type has been declared in the Campaign Manager. For each event you intend to send:
- In the Campaign Manager, open your Application > Settings > Developer settings (custom attributes and events).
- Create a custom event for each
typethis blueprint sends:pageview,signed_up,logged_in,product_viewed,product_added,checkout_started,order_completed,order_refunded. - Create a custom attribute (on the event or profile, with the correct data type) for every attribute key you intend to use — for example
productId(string),price(number),total(number),currency(string),couponCode(string).
Talon.One rejects events whose type is not declared, and rejects attributes that are missing or have the wrong data type, with a 400 response. Declare every event and attribute before going live.
Generate an Integration API key
- In your Application, go to Settings > Integration API Keys.
- Click Create API Key.
- Select Production as the key type, give it a name (e.g. “Datafly Signal”), and set an expiration date.
- Copy the key — Signal sends it as
Authorization: ApiKey-v1 <key>.
Use an Integration API key, not a Management API key. The two are different credentials with different scopes.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
deployment | Yes | Your Talon.One deployment host without the scheme, e.g. mycompany.europe-west1.talon.one. |
api_key | Yes | A Production Integration API key. Sent as Authorization: ApiKey-v1 <key>. |
Management UI Setup
- Go to Integrations > Add Integration > Talon.One.
- Choose the Default preset.
- Enter your
deploymenthost andapi_key. - Select the consent categories that should gate delivery (typically
marketing). - Click Save.
API Endpoint
POST https://<deployment>/v2/events
Authorization: ApiKey-v1 <api_key>
Content-Type: application/jsonThe request body carries a required profileId, the custom event type, and an attributes object:
{
"profileId": "user-123",
"type": "product_viewed",
"attributes": {
"productId": "SKU-A",
"price": 49.99,
"currency": "USD"
}
}If the profileId is new, Talon.One creates the customer profile automatically.
Identity Signals
Talon.One identifies users by profile, not by hashed PII, so no client-side or hashed match keys are required.
| Signal | Talon.One field | Description |
|---|---|---|
user_id | profileId | Your stable customer identifier. This is the primary key Talon.One uses to attach loyalty balances, coupons, and referral state. |
anonymous_id | profileId (fallback) | Used as the profileId when no user_id is present, so pre-login activity still reaches a profile. Also sent as the anonymousId attribute. |
email | attributes.email | Optional profile attribute, useful for cross-channel matching inside Talon.One. |
Call datafly.identify() when a user logs in or registers so a stable user_id flows into profileId:
datafly.identify("user-123", {
email: "jane.doe@example.com"
});Event Mapping
Default preset
| Signal event | Talon.One event type |
|---|---|
page | pageview |
Signed Up | signed_up |
Logged In | logged_in |
Product Viewed | product_viewed |
Product Added | product_added |
Checkout Started | checkout_started |
Order Completed | order_completed |
Order Refunded | order_refunded |
Events not in the mapping are dropped. To customise, edit the integration’s Field Mappings in the Management UI.
Example: Order Completed
Datafly.js call:
datafly.track("Order Completed", {
order_id: "ORD-001",
revenue: 129.99,
currency: "USD",
coupon: "SUMMER10",
products: [
{ product_id: "SKU-A", name: "Widget", price: 49.99, quantity: 2 },
{ product_id: "SKU-B", name: "Gadget", price: 30.01, quantity: 1 }
]
});Talon.One payload sent by Signal:
{
"profileId": "user-123",
"type": "order_completed",
"attributes": {
"orderId": "ORD-001",
"total": 129.99,
"currency": "USD",
"couponCode": "SUMMER10",
"cartItems": [
{ "product_id": "SKU-A", "name": "Widget", "price": 49.99, "quantity": 2 },
{ "product_id": "SKU-B", "name": "Gadget", "price": 30.01, "quantity": 1 }
],
"anonymousId": "a1b2c3d4...",
"marketingConsent": "true"
}
}Track Event V2 fires custom events; it does not maintain a customer session cart. If your promotions need cart-aware evaluation (running totals, applied coupons), use Talon.One customer sessions instead. Contact your Datafly representative about a session-based preset.
Testing
Send a test event
Trigger an event on a page where Datafly.js is installed (for example a product page for product_viewed).
Verify in the Campaign Manager
- Open your Application and go to the customer profile for the
profileIdyou sent (or search by it). - Confirm the event appears in the profile’s activity, with the attributes you mapped.
- If you have a rule listening for that custom event, confirm the expected effect (coupon, loyalty points, etc.) was applied.
Use the event debugger
Use Signal’s Event Debugger to inspect the exact JSON body Signal sent and the HTTP response code from Talon.One.
Troubleshooting
| Problem | Solution |
|---|---|
400 Bad Request | The custom event type or one of the attributes is not declared in the Campaign Manager, or an attribute has the wrong data type. Declare/correct it under Developer settings. |
401 Unauthorized | The Integration API key is wrong, expired, or you used a Management API key. Generate a new Production Integration API key. |
404 Not Found | The deployment host is wrong. Confirm the region subdomain (e.g. europe-west1). |
| Events accepted but no rule fires | Confirm a campaign rule is listening for that custom event type, and that the profile/session has the attributes the rule checks. |
Missing profileId errors | Ensure datafly.identify() is called so a user_id is present; otherwise the anonymous_id fallback supplies the profileId. |