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:
- Visitor clicks your tracking link — platform records a
click_id - Visitor converts on the advertiser's site
- Advertiser fires a postback to the platform with the
click_id - Platform records the conversion and immediately fires your postback URL with the conversion data substituted into your macros
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.
Navigate to Campaigns → Global Postback
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}Select which statuses should fire
Choose Approved only (recommended for payout reconciliation), Pending, or all statuses.
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.
Open the campaign detail page
Go to Campaigns → All Campaigns and click the campaign you want to configure.
Click "Manage Postbacks" or the postback icon
Click "Add Postback"
Enter the callback URL with macros, select the HTTP method (GET or POST), and choose which conversion statuses trigger it.
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.
| Macro | Value | Notes |
|---|---|---|
{click_id} | Unique click identifier | Required — use this to match the conversion to a click in your system |
{payout} | Conversion payout amount (decimal) | e.g., 3.50 |
{status} | approved / pending / rejected | Filter by status in postback settings |
{offer_id} | Campaign ID on the platform | Useful for multi-campaign reconciliation |
{affiliate_id} | Your affiliate account ID | |
{sub_aff1}–{sub_aff5} | Sub-ID values you passed in the click URL | Echoed 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 OS | android, ios, windows, mac, linux |
{device} | Device type | mobile, tablet, desktop |
{ip} | Visitor IP address | |
{conversion_id} | Platform's internal conversion ID | Unique per conversion event |
{timestamp} | Conversion timestamp (Unix epoch) |
Testing Your Postback
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.
Send a test click
Open your campaign's tracking link in a browser. This generates a real click_id in the platform.
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.
Inspect the request in your webhook tool
Confirm all macros were substituted correctly and your server responds with
HTTP 200.
Troubleshooting
| Symptom | Likely Cause | Fix |
|---|---|---|
| Postback not firing | Conversion status filter mismatch | Check you've enabled the correct statuses (Approved/Pending/All) in your postback settings |
| Macros not replaced | Typo in macro name | Macro names are case-sensitive. Ensure braces are curly: {click_id} not [click_id] |
| Server returns non-200 error | Endpoint down or auth required | Verify your endpoint is publicly reachable. The platform cannot fire postbacks to internal/localhost URLs |
| Duplicate conversions received | Both global and campaign postback enabled | If a campaign-level postback is set, consider removing the global postback for that campaign to avoid doubles |