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

FieldRequiredDescription
network_idYesYour TUNE postback subdomain. Enter demo for demo.go2cloud.org. Use the full host if you have a custom tracking domain.
security_tokenNoAdvertiser 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}&currency={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:

SignalParameterDescription
transaction_idtransaction_idThe TUNE click id captured at landing. Required — this is how TUNE links the conversion to the originating partner click.
adv_subadv_subAdvertiser sub id. Signal sends the Datafly anonymous_id so you can reconcile conversions against your own analytics.
adv_sub2adv_sub2Secondary 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 eventTUNE goal (goal_id)
Order Completedpurchase
Signed Upsignup
Lead Generatedlead

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&currency=USD&adv_sub=df_9f8e7d6c&adv_sub2=ORD-001

Testing

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

ProblemSolution
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 tokenThe offer has an Advertiser Security Token enabled. Set security_token in the integration config.
Wrong or zero payoutFor 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 goalPer-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 allVerify network_id matches your *.go2cloud.org subdomain (or your custom tracking domain host).