Adform
Datafly Signal delivers events to Adform Site Tracking server-to-server using the tracking-points API. Page views and conversions are sent as named tracking points scoped to your advertiser’s Tracking Setup, with cookie- and click-id-based attribution — no client-side Adform pixel required.
Prerequisites
Before configuring Adform in Signal you need:
- An Adform Ad Server or DSP account with Site Tracking enabled.
- A Tracking Setup ID for the advertiser (see below).
- Your tracking domain (the global default is
a1.adform.net; you may have a custom or regional domain). - One or more tracking points configured in Adform, with names that match the event names Signal will send (tracking-point names are case-sensitive).
Find your Tracking Setup ID
- In the Adform UI, open Site Tracking for your advertiser.
- Note the Tracking Setup ID — this is the advertiser’s tracking identifier used in every API request.
Find your tracking domain
The global tracking domain is a1.adform.net. If your advertiser uses a custom or regional tracking domain, use that value instead — it must match the domain configured for your tracking points and ad serving.
Configure your tracking points
Each conversion or event you want to record must exist as a tracking point in Adform Site Tracking. The tracking-point name you set in Adform is the value Signal sends in the name field, so keep the names aligned with the blueprint’s event mapping (e.g. Purchase, Add To Cart).
Adform matches server-side tracking points to users via the Adform cookie (adfuid) and the Adform click ID (_adfcd). For best match rates, ensure Signal is capturing the Adform cookie as a first-party identifier.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
tracking_setup_id | Yes | The advertiser’s Tracking Setup ID from Site Tracking in the Adform UI. |
tracking_domain | Yes | Your Adform tracking domain. Global default is a1.adform.net. |
Management UI Setup
Add the integration
Go to Integrations > Add Integration > Adform.
Enter your configuration
Provide your tracking_setup_id and tracking_domain.
Select consent categories
Select the consent categories that gate advertising delivery (typically advertising or marketing). Signal forwards the IAB TCF consent signal to Adform’s compliance block.
Save
Click Save. Signal begins delivering matching events as Adform tracking points.
API Endpoint
POST https://{tracking_domain}/v2/sitetracking/{tracking_setup_id}/trackingpoints/Requests are sent as JSON with Content-Type: application/json. The tracking-points ingestion endpoint is public — attribution is established by the cookie and click-id values carried in the payload, so no API key or access token is required.
Identity Signals
Adform attributes server-side tracking points using cookie and click identifiers, plus the request context. Signal sends these automatically:
| Signal | Field | Description |
|---|---|---|
| Adform cookie | identity.cookieId | The Adform user cookie value (adfuid), when captured by Signal as a first-party identifier. |
| Adform click ID | identity.clickId | The Adform click identifier (_adfcd) from the landing URL. |
| IP address | userContext.userIp | Visitor IP, forwarded from the original request. |
| User-Agent | userContext.userAgent | Visitor User-Agent, forwarded from the original request. |
| Browser language | userContext.browserLanguage | Visitor locale. |
Adform does not require hashed PII for server-side tracking — matching is cookie- and click-id-based. Signal does not hash or send email/phone to Adform.
Consent
Signal forwards consent to Adform’s compliance block:
| Field | Source |
|---|---|
compliance.gdpr | Whether GDPR applies (IAB TCF gdprApplies). |
compliance.gdprConsent | The IAB TCF consent string. |
Delivery is also gated by the consent categories you select on the integration, so events are only sent when the visitor has granted the relevant category.
Event Mapping
The Default preset maps Signal’s standard events to Adform tracking points:
| Signal event | Adform tracking point (name) |
|---|---|
page | Page Visit |
Product Viewed | Product View |
Product Added | Add To Cart |
Checkout Started | Begin Checkout |
Order Completed | Purchase |
Conversion data is sent under Adform’s advertiser-defined variables object (for example variables.orderid, variables.sales, variables.currency). The variable names must match the variables configured on your Adform tracking point. To customise, edit the integration’s Field Mappings in the Management UI.
Example: Purchase Event
Datafly.js call:
datafly.track("Order Completed", {
order_id: "ORD-001",
revenue: 129.99,
currency: "GBP",
products: [
{ product_id: "SKU-A", name: "Widget", price: 49.99, quantity: 2 },
{ product_id: "SKU-B", name: "Gadget", price: 30.01, quantity: 1 }
]
});Adform tracking-point payload sent by Signal:
{
"name": "Purchase",
"pageUrl": "https://example.com/checkout/confirmation",
"identity": {
"cookieId": "8f3c1a2b-...",
"clickId": "AbCdEfGhIjKl"
},
"userContext": {
"userAgent": "Mozilla/5.0 ...",
"userIp": "203.0.113.50",
"browserLanguage": "en-GB"
},
"compliance": {
"gdpr": true,
"gdprConsent": "CPx..."
},
"variables": {
"orderid": "ORD-001",
"sales": 129.99,
"currency": "GBP",
"subVariables": [
{ "product_id": "SKU-A", "name": "Widget", "price": 49.99, "quantity": 2 },
{ "product_id": "SKU-B", "name": "Gadget", "price": 30.01, "quantity": 1 }
]
}
}Testing Your Integration
Trigger a tracked event
Trigger a mapped event on your site (for example complete a test order).
Check Adform Site Tracking
In the Adform UI, open Site Tracking and review incoming tracking points for your Tracking Setup. The tracking point should appear with the name and variables Signal sent.
Confirm the variables
Verify that conversion variables (orderid, sales, currency) populated correctly against the tracking point’s configured variables.
Troubleshooting
| Problem | Solution |
|---|---|
| Tracking points not appearing in Adform | Confirm the tracking_setup_id and tracking_domain are correct, and that a tracking point with the matching name exists in Adform Site Tracking (names are case-sensitive). |
| Conversions recorded but variables empty | The variable names in the blueprint must match the variables configured on the Adform tracking point. Edit the integration’s Field Mappings to align them. |
| Low match / attribution rates | Ensure Signal is capturing the Adform cookie (adfuid) so identity.cookieId is populated; click-id-only matching attributes fewer conversions. |
| Events not sent at all | Check that the visitor granted the consent category gating the integration, and that the event is mapped and enabled in the active preset. |