Skip to content
Browse documentation

Migration postback (moving from another tracker)

Forward conversions of click IDs that belong to your previous tracker, so nothing is lost during a switch.

Last updated 2 min read

On this page

When you move an advertiser from another tracker to TrackCrown, conversions keep arriving for clicks the old tracker created — sometimes for weeks (long sales cycles, rebills). With a migration postback, the advertiser keeps one postback URL: conversions with TrackCrown click IDs are recorded here, and conversions with click IDs we do not know are forwarded to the old tracker.

How it works#

For an S2S postback authenticated with the advertiser's token (or with the workspace token and an offer_id of that advertiser's offer):

  1. click_id is one of ours and the click exists → normal conversion.
  2. click_id is not one of ours — another tracker's format (letters, digits, ., _, :, -, up to 128 characters) — or it is a 32-hex ID that matches no click in the workspace → the request is forwarded: the advertiser's Migration postback URL is expanded and queued for delivery like a partner postback (same retries, visible in the Delivery log).
  3. No migration URL configured → unknown click_id (32 hex) or 400 invalid click_id (expected 32 hex characters) (other formats).

Response of a forwarded request:

JSON
{"ok":true,"status":"forwarded","reason":"migration_postback","forwarded":true}

Pixels are never forwarded.

Set it up#

  1. Open Advertisers → the advertiser → Postback security tab.

  2. In Migration postback URL, enter the old tracker's postback URL with macros, for example:

    URL
    https://old-tracker.example/postback?cid={click_id}&amount={amount}&txid={txid}&status={status}
  3. Click Save postback security. The engine picks the change up within about 10 seconds.

  4. Give the advertiser their TrackCrown postback URL (offer → Tracking → Server-to-server postback URL) with the advertiser's token. They replace the old tracker's URL with it.

The URL must be an absolute http/https URL after expansion; an invalid URL disables forwarding (the request is then treated as if no migration URL existed).

Macros#

Values are URL-encoded. These are the request's values, not a conversion's:

MacroValue
{click_id}The unknown click ID as received
{event}event parameter
{amount}amount (normalised decimal)
{payout}payout, only when sent with the workspace token
{revenue}revenue
{txid}txid / adv_txid / order_id
{status}status (normalised: approved, pending, rejected)
{currency}currency
{adv1} … {adv5}Advertiser values
{offer_id}The offer_id parameter as sent

Security#

If an offer named by offer_id enforces the advertiser's postback IP allowlist, a forward from another IP is refused with 403 postback IP not allowed for this offer.

Test#

Add test=1: the response is {"ok":true,"status":"forwarded","forwarded":true,"test":true} and nothing is queued.

Shell
curl -s "https://trackcrown.com/pb?click_id=OLD-abc123&amount=20&token=ADVERTISER_TOKEN&test=1"

Forwarded requests appear in Reports → Postback log → Received with result Forwarded (migration), and the outgoing request in the Delivery log.

When to remove it#

Keep the URL until forwarded requests stop appearing (filter Result = Forwarded), then clear the field. For bulk moves of partner postbacks use Import partner postbacks.

Something unclear or missing in this article?Tell us