Guides
Postback and stats setup in CPA: the 2026 checklist

An updated version of a 2017 article. The basic principles remain, but in 2026 a lot is done via server-side and macro replacement rather than cookie-based tracking.

Without server-side stats you’re burning budget blind. Plenty of clicks — but which placements/creatives actually bring approval is unknown. This guide covers what to set up, and how, so you can see data at the source → creative → offer → payout level.

1. What an S2S postback is (in short)

A postback (S2S, server-to-server) is an HTTP request a CPA network sends to your tracker the moment a lead is approved. Unlike cookie/pixel tracking, it works through the server and doesn’t suffer from browser blocking (Safari ITP, iOS ATT, ad blockers).

The flow is this:

  1. You create a campaign in the tracker and get a unique clickid for every click.
  2. The clickid is passed into the CPA-network link as a parameter.
  3. When a lead is confirmed (or set to reject/trash) — the CPA network pings your postback URL with that clickid and status.
  4. The tracker ties the clickid to the click source and shows the real conversion.

2. What to set up in the tracker

Let’s take Keitaro as an example (one of the most common trackers in the niche); the principles are the same for Voluum, BeMob, RedTrack:

  • A unique clickid per click — Keitaro generates it itself, pass it via the {subid} or {external_id} macro.
  • Subaccounts (sub1-sub10) — parameters you forward from the traffic source (Facebook adset, teaser campaign_id, push subscriber_id). Without them you can’t separate good sources from bad.
  • Postback URL — you’ll find it in the campaign settings, it looks like https://your-tracker.com/postback?subid={subid}&status={status}&payout={payout}.
  • Status events — set up handling for at least approved, rejected, trash, hold. Not every network sends every status.

3. What to pass to the CPA network

When creating a campaign in the CPA dashboard:

  • A target link with a placeholder for the clickid: https://offer.shakes.pro/...&subid={clickid}. The exact parameter name (subid/sub1/clickid) — check the network’s dashboard.
  • Subaccounts — if the network supports sub1-sub5, push creative_id, adset_id, geo, device there. That gives you drill-down in the network’s reports independent of the tracker.
  • Postback URL — paste it from the tracker. Most networks accept both a global and a per-offer postback. A global one is enough at the start.

4. CPA-network macros

When you paste the postback, the network substitutes its own macros into your URL. The standard ones:

  • {clickid} or {subid} — your clickid, must match what the tracker expects.
  • {status} — the lead status (approved/rejected/hold/trash).
  • {payout} — the payout for the specific lead in the currency of the rate.
  • {offer_id} — which offer converted (if you run several in one campaign).
  • {country}, {datetime} — extra parameters.

The exact macro names differ across networks. Check your CPA’s documentation.

5. Test the postback before launch

The most common mistake — you set it up, launch, and three days later discover 0 conversions recorded in the tracker. To avoid that:

  1. In the CPA dashboard find the “send test postback” feature (almost everywhere has one).
  2. Send a test with status approved and some clickid.
  3. Open Keitaro → conversions report → your test clickid should arrive.
  4. Check that status, payout and subaccounts came through correctly.
  5. If something is empty — fix the macros and repeat the test.

This step takes 10 minutes and saves you from 3-day wasted budgets.

6. Stats reconciliation

Once a week, reconcile: tracker data ≠ CPA dashboard data at 100%, there’s always a 1-3% delta (delayed postbacks, hold→approve, technical lags). If the delta is >5% — something is wrong:

  • The postback isn’t arriving for some statuses.
  • The tracker and the dashboard use different conversion-time logic (click date vs approve date).
  • Double firing (one event arrived as both approve and hold).

Regular reconciliation catches problems before they become chronic.

7. What NOT to pass in the postback

  • Sensitive customer data (lead’s phone, email) — it violates GDPR/CCPA and the terms of most CPA networks.
  • The advertiser’s internal offer IDs (if they differ from the IDs in the network’s dashboard) — you’ll get data that means nothing for optimization.

Pre-launch checklist

  • Tracker campaign created, clickid is generated.
  • The target link in the CPA dashboard contains the clickid macro.
  • Postback URL pasted into the CPA dashboard, all required macros filled in.
  • Sub1-sub5 set up and forwarded from the traffic source.
  • Test postback sent, conversion shown in the tracker.
  • Stats reconciliation on day 1 and day 7 after launch.

CTA

Shakes.pro has full postback documentation, ready-made templates for Keitaro/Voluum/BeMob, and a manager will help you set up the integration in a single call.

You may also like