All articles

Advertisers

Postback tracking for adult offers: a plain guide to S2S conversions

What an S2S postback is, who sends it, the token and parameters, how to test it end to end, and the eight mistakes that break conversion counts.

By Arthur, founder · · 6 min read

If you run adult offers, sooner or later a traffic source asks you to "set up the postback". This guide explains what that means without assuming you are a developer: who talks to whom, what the token is for, which values travel where, how to prove it works before you spend, and the mistakes we see most. The exact macro list and every answer code are in our companion article, S2S postback tracking with macro examples.

The idea in one sentence

When a visitor converts, your server tells the traffic source which of its clicks it was, by calling a URL with that click's id. That call is the postback. Because it goes from one server to another, it does not depend on cookies, private browsing or ad blockers, which matter a lot on adult traffic where many visitors browse in private mode on mobile.

Who is involved

Four roles, even when one company plays two of them:

  • The traffic source. The network that showed your ad, for example Lana Network. It creates a click id for each click.
  • The landing page or tracker. Where the visitor arrives. A tracker such as Voluum, Keitaro, Binom or RedTrack stores the click id next to the visit.
  • The offer. Where the visitor signs up or pays: your own site, a paysite, a creator page, or an affiliate network's offer.
  • The postback. The call that brings the conversion back from the offer, through the tracker if you have one, to the traffic source.

If you promote an affiliate network's offer, there is one more hop: you pass the click id into the affiliate network's sub-ID field, and set that network's postback to fire back to your tracker or directly to the traffic source.

The three values that matter

1. The click id. On Lana Network, your landing URL carries ocid={click_id}, and we replace the macro with a 35-character id on every click. Your job is to keep that value, unchanged, until the visitor converts.

2. The event. What happened: lead for a sign-up, purchase for a first payment, purchase_recurring for each renewal. Picking the right one matters for subscription offers, where most of the money comes from rebills.

3. The token. A secret that proves the call comes from you. On Lana Network you generate it yourself on the Postback page of your advertiser space. It is shown once; we only keep a fingerprint, so copy it straight into your tracker. If you regenerate it, the old one stops working at once and conversions sent with it are refused until you update your tracker.

A minimal postback on Lana Network looks like this:

https://postback.lananetwork.com/v1/postback?token=YOUR_TOKEN&click_id=VALUE_FROM_OCID&event=purchase&payout=49.99

payout is optional and uses a dot as decimal separator. Add tx, your transaction id, for rebills.

Test it as soon as your first campaign is approved

On Lana Network the token only works once your account is approved, which happens with your first campaign. Before that, every postback, including the checker, answers ERROR: bad token (HTTP 401): that is expected, not a mistake in your URL. Once the campaign is approved, do these three checks in order, on a low daily budget. Each takes a few minutes and each catches a different kind of mistake.

  1. Check the URL. In your advertiser space, open Postback and paste the postback URL exactly as saved in your tracker. The checker tells you whether the token is accepted and which parameter is missing, and it never records a conversion.
  2. Send a made-up click id. On an approved account the answer should be ERROR: unknown click_id. That proves the token and the format are right, and that your tracker can reach us. If you still get ERROR: bad token, check that the account is approved, then that the token in your tracker is the current one.
  3. Convert once for real. Send one click through your live campaign, complete the sign-up or a test payment, and open Reports. The conversion should appear within a few minutes.

If steps 1 and 2 pass and step 3 fails, the click id got lost somewhere between the landing page and the offer. That is the most common failure by far.

The eight mistakes we see most

  1. The click id is cut short. A database column or form field limited to 32 characters, or a tracker field that trims values. Every postback then answers "unknown click".
  2. The click id is encoded twice. The value arrives URL-encoded and your tracker decodes it. Encoding it again on the way back changes it.
  3. The macro was never replaced. The postback sends the literal text {ocid} or {externalid} because the tracker field name was wrong. Check one real postback in your tracker's logs.
  4. The id is dropped between domains. The visitor moves from your landing page to a checkout on another domain and the click id is not passed along.
  5. The wrong event. Sending every rebill as purchase. A purchase counts once per click, so renewals vanish. Use purchase_recurring, with tx.
  6. A comma in the payout. 49,99 is refused. Use a dot.
  7. The postback fires from the browser. A pixel or front-end call exposes your token to anyone who opens the page source, and fails when the visitor closes the tab. Fire it from your server or tracker.
  8. It fires on the wrong moment. On page load of the checkout instead of on a confirmed payment. Your reports then show sales that never happened, and your bids follow them.

Reading the answers

The postback endpoint answers in plain text. OK means counted. OK: duplicate means it was already counted, which is fine. unknown click_id and click expired (older than 90 days) should not be retried. A bad token or a malformed parameter needs a fix, not a retry. Only a temporary error on our side is worth retrying later.

What to do next

Once the postback works, report and bid on cost per conversion, not on clicks. Our guide to buying adult traffic explains why, and the screen-by-screen setup is in conversions and postback. If you are about to launch, follow the 7-day checklist for a new network.

Frequently asked questions

What is the difference between a pixel and a postback?

A pixel runs in the visitor's browser and can be blocked, missed in private mode or lost when the tab closes. A postback is a server-to-server call that only needs the click id you stored.

Where do I get my Lana Network postback token?

On the Postback page of your advertiser space. It is shown once when you generate it; if you lose it, regenerate it and update your tracker, because the old one stops working at once.

Do I need a tracker to use S2S postbacks?

No, but it helps. Without one, your own server must store the click id at landing and send it back on conversion. With one, the tracker does both and gives you reports by source.

Why does my postback answer unknown click_id?

Usually because the click id was cut short, changed or lost between the landing page and the offer. A made-up test id also gives this answer on an approved account, which is expected; before approval you get bad token instead.