Postback Setup — Server-to-Server Conversion Tracking

Receive real-time conversion signals directly to your tracking system without relying on browser pixels or cookies. This guide covers global and campaign-level postbacks, all available macros, and testing steps.

What Is a Postback?

A postback (also called an S2S callback or pixel-less tracking) is an HTTP request sent by the platform directly to your server when a conversion event occurs. Unlike a browser pixel, it fires from the server side — making it immune to ad blockers, cookie restrictions, and JavaScript errors.

Flow:

  1. Visitor clicks your tracking link — platform records a click_id
  2. Visitor converts on the advertiser's site
  3. Advertiser fires a postback to the platform with the click_id
  4. Platform records the conversion and immediately fires your postback URL with the conversion data substituted into your macros
Recommended over pixel tracking

Server-to-server postbacks are the industry standard. Pixels rely on a browser loading a 1×1 image — they break in Safari ITP, Firefox ETP, and any environment with an ad blocker. S2S postbacks have no such limitations.

Global Postback

A global postback fires for every conversion across all your approved campaigns — ideal if you use a single DSP or tracker for all your campaigns.

  1. Navigate to Campaigns → Global Postback

  2. Enter your postback URL

    Paste your tracking system's callback URL and insert the macros you need.
    https://yourtracker.com/postback?cid={click_id}&payout={payout}&status={status}

  3. Select which statuses should fire

    Choose Approved only (recommended for payout reconciliation), Pending, or all statuses.

  4. Save and test

    Click Save. See the Testing section below to verify the postback fires correctly.

Campaign-Specific Postback

Override or supplement the global postback for individual campaigns — useful when different advertisers or offers need different callback endpoints.

  1. Open the campaign detail page

    Go to Campaigns → All Campaigns and click the campaign you want to configure.

  2. Click "Manage Postbacks" or the postback icon

  3. Click "Add Postback"

    Enter the callback URL with macros, select the HTTP method (GET or POST), and choose which conversion statuses trigger it.

  4. Save

    Campaign-level postbacks take priority over the global postback for this campaign.

Available Macros

Insert any of these macros into your postback URL. The platform replaces them with real values at the time of firing.

MacroValueNotes
{click_id}Unique click identifierRequired — use this to match the conversion to a click in your system
{payout}Conversion payout amount (decimal)e.g., 3.50
{status}approved / pending / rejectedFilter by status in postback settings
{offer_id}Campaign ID on the platformUseful for multi-campaign reconciliation
{affiliate_id}Your affiliate account ID
{sub_aff1}–{sub_aff5}Sub-ID values you passed in the click URLEchoed back to your postback exactly as sent
{country}Visitor's country code (ISO 3166-1 alpha-2)e.g., US, GB, IN
{os}Visitor's OSandroid, ios, windows, mac, linux
{device}Device typemobile, tablet, desktop
{ip}Visitor IP address
{conversion_id}Platform's internal conversion IDUnique per conversion event
{timestamp}Conversion timestamp (Unix epoch)

Testing Your Postback

  1. Use a webhook testing service

    Set your postback URL temporarily to a service like webhook.site or requestbin.com to inspect the incoming request before pointing it at your production system.

  2. Send a test click

    Open your campaign's tracking link in a browser. This generates a real click_id in the platform.

  3. Ask your account manager to fire a test conversion

    The network can trigger a test approved conversion against your click_id, which should immediately fire your postback URL.

  4. Inspect the request in your webhook tool

    Confirm all macros were substituted correctly and your server responds with HTTP 200.

Troubleshooting

SymptomLikely CauseFix
Postback not firingConversion status filter mismatchCheck you've enabled the correct statuses (Approved/Pending/All) in your postback settings
Macros not replacedTypo in macro nameMacro names are case-sensitive. Ensure braces are curly: {click_id} not [click_id]
Server returns non-200 errorEndpoint down or auth requiredVerify your endpoint is publicly reachable. The platform cannot fire postbacks to internal/localhost URLs
Duplicate conversions receivedBoth global and campaign postback enabledIf a campaign-level postback is set, consider removing the global postback for that campaign to avoid doubles
Rate this article
★★★★★
Thanks for rating!

Was this article helpful?