TUNE
Datafly Signal reports conversions to TUNE (formerly HasOffers) using TUNE’s server postback mechanism. Instead of a browser pixel, Signal fires the conversion postback from your server using the click transaction_id that TUNE issued when the user arrived from a partner link. This is the conversion-tracking method TUNE recommends, and it is unaffected by ad blockers, cookie loss, or browser tracking prevention.
Prerequisites
Before configuring TUNE in Signal you need an advertiser (or network) account in TUNE with at least one offer, and you need to know how the click transaction_id reaches your landing page.
Step 1: Identify your postback host
Your TUNE postback host is normally your network subdomain on go2cloud.org, for example demo.go2cloud.org. The part before .go2cloud.org is your Network ID. If your network uses a custom/vanity tracking domain, note that full hostname instead.
Step 2: Confirm the transaction_id is reaching your site
TUNE tracking links append a click identifier (the transaction_id) and redirect the user to your landing page. Your landing page must receive this value as a URL parameter (commonly transaction_id, tid, or aff_sub) and persist it through to the conversion event. Signal sends back exactly this value — TUNE will only credit a conversion when it matches a real, non-duplicate click.
Signal cannot invent the transaction_id. If your landing page does not capture and carry it to the conversion, TUNE silently rejects the postback (and still returns HTTP 200). Confirm the parameter name with your TUNE tracking link before going live.
Step 3: (Optional) Advertiser Security Token
If your offer has an Advertiser Security Token enabled in TUNE, copy it. When present, every postback must include it or TUNE rejects the conversion.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
network_id | Yes | Your TUNE postback subdomain. Enter demo for demo.go2cloud.org. Use the full host if you have a custom tracking domain. |
security_token | No | Advertiser Security Token, if the offer requires one. Appended to every postback as security_token. |
Management UI Setup
Add the integration
Go to Integrations > Add Integration > TUNE.
Choose a variant
- Default — purchase, signup, and lead conversions.
- Retail — reports add-to-cart, checkout start, and purchase as distinct TUNE offer goals.
Enter your settings
Enter your network_id (and security_token if required).
Map the transaction_id
Confirm the transaction_id field mapping points at the property your landing page carries the TUNE click id in (default: properties.transaction_id).
Save
Select your consent categories and click Save.
API Endpoint
GET https://{network_id}.go2cloud.org/aff_lsr?transaction_id={transaction_id}&amount={amount}¤cy={currency}&goal_id={goal}All conversion data is carried in the URL query string — there is no request body. Per-event offer goals are reported via the goal_id parameter (Signal sets this to the mapped event name, e.g. purchase).
TUNE returns HTTP 200 even for rejected or duplicate postbacks. A 200 is not proof a conversion was recorded — always validate in the TUNE Conversion Report, not by the HTTP status.
Identity Signals
TUNE does not match on hashed PII. Attribution is deterministic on the click transaction_id:
| Signal | Parameter | Description |
|---|---|---|
transaction_id | transaction_id | The TUNE click id captured at landing. Required — this is how TUNE links the conversion to the originating partner click. |
adv_sub | adv_sub | Advertiser sub id. Signal sends the Datafly anonymous_id so you can reconcile conversions against your own analytics. |
adv_sub2 | adv_sub2 | Secondary sub id. The Default and Retail presets send the order_id here. |
Because TUNE attributes on the click id rather than user PII, no email/phone hashing is involved. Make sure consent is handled upstream — Signal will only deliver to TUNE when the integration’s consent categories are satisfied.
Event Mapping
Default preset
| Signal event | TUNE goal (goal_id) |
|---|---|
Order Completed | purchase |
Signed Up | signup |
Lead Generated | lead |
Page views and other events are dropped — TUNE is a conversion-attribution endpoint, not an analytics sink.
Example: Purchase conversion
Datafly.js call:
datafly.track("Order Completed", {
transaction_id: "a1b2c3d4e5f6", // captured from the TUNE click link
order_id: "ORD-001",
revenue: 129.99,
currency: "USD"
});TUNE postback fired by Signal:
GET https://yournetwork.go2cloud.org/aff_lsr?transaction_id=a1b2c3d4e5f6&goal_id=purchase&amount=129.99¤cy=USD&adv_sub=df_9f8e7d6c&adv_sub2=ORD-001Testing
Generate a test click
Click a TUNE tracking link for your offer and note the transaction_id that lands on your page.
Fire a conversion
Trigger the mapped event (e.g. Order Completed) carrying that transaction_id.
Verify in TUNE
Open the TUNE Conversion Report and confirm the conversion appears against the correct offer with the expected amount and goal. Do not rely on the HTTP 200 response.
Troubleshooting
| Problem | Solution |
|---|---|
| Conversion not in TUNE report (but Signal shows 200) | The transaction_id is missing, invalid, or a duplicate. Confirm your landing page captures it from the TUNE click link and carries it to the event. |
| Conversion rejected for missing token | The offer has an Advertiser Security Token enabled. Set security_token in the integration config. |
| Wrong or zero payout | For cost-per-sale / revenue-share offers TUNE needs the sale amount. Ensure revenue (or value) is populated on the event so it maps to amount. |
| Conversions on the wrong goal | Per-event goals are reported via goal_id (the mapped event name). Confirm your TUNE offer has matching goal ids/names configured. |
| Postbacks not sending at all | Verify network_id matches your *.go2cloud.org subdomain (or your custom tracking domain host). |