To send affiliate conversions to Voluum, RedTrack, Keitaro or Binom, put the tracker's click ID into the network's tracking link as a sub ID, then register the tracker's postback URL in the network, using the network's macro for that sub ID. When a conversion is recorded, the network calls the URL and the tracker credits the original click with the payout.
This guide is for media buyers who run paid traffic through a tracker and want network revenue next to their ad costs. If you are new to server-to-server tracking, start with what a postback URL is. If you promote brands from our marketplace, see how tracking works for affiliates.
How network → tracker postbacks work
Two systems log the same visitor, and each issues its own click ID. The tracker's ID is the one you care about, because that is where your cost, placement and creative data live. The job of the postback is to carry the tracker's ID through the network and back.
- A visitor clicks your ad and hits your tracker's campaign URL. The tracker logs the click, creates its click ID and redirects to the offer URL: your affiliate link, with the click ID in a sub ID parameter.
- The network logs its own click, stores your sub ID values and redirects to the advertiser.
- The advertiser reports the conversion to the network.
- The network fires your postback URL, replacing its macro with the stored sub ID. The tracker matches the click ID and records the conversion and payout.
In practice that means two URLs, one in each system (domains and macros here are illustrative):
Offer URL in your tracker:
https://track.example-network.com/click?offer=42&aff=1001&sub1={clickid}
Postback URL saved in the network:
https://your-tracker-domain.com/postback?cid={sub1}&payout={payout}
The token in the first URL is the tracker's; the token in the second is the network's. Mixing them up is a common setup error.
Passing the tracker click ID into the affiliate link (sub ID)
Networks give you free-form sub ID parameters such as sub1 to sub5 (some call them aff_sub, s2 or subid). Reserve one of them for the tracker's click ID and use the others for things you want to see in the network's reports, like placement or creative.
- Use the tracker's click ID token. Voluum, RedTrack and Binom use
{clickid}; Keitaro uses{subid}. Each is linked to the official docs in the per-tracker section. - Use the same slot everywhere. If the click ID goes in
sub1on one offer andsub2on another, your postback will return the wrong value for half your campaigns. - Check length limits. Networks truncate long sub values. A truncated click ID never matches.
- Verify before spending. Click your campaign URL once and confirm the network's click report shows the tracker's ID in the right sub ID column.
On MassPartner, affiliate tracking links accept sub1 to sub5, values are kept up to 255 characters, and they are stored with each click and shown in your click and conversion reports.
Per-tracker setup
Where your tracker generates the postback URL in its interface, copy it from there rather than typing it by hand, then replace the placeholders with your network's macros. The formats below come from each tracker's official documentation.
Voluum
Add Voluum's {clickid} token to the offer URL under the parameter name the network expects. Voluum's own example is s2={clickid}, which the network then returns in the postback's cid parameter (Voluum docs). In the postback template, you swap the REPLACE and OPTIONAL strings for network tokens:
https://your-voluum-domain.com/postback?cid=REPLACE&payout=OPTIONAL&txid=OPTIONAL
cid is required to record the conversion. payout is optional; without it, you set a manual payout in Voluum instead. txid passes a unique transaction ID for secondary conversion steps such as upsells, et sets a custom conversion type configured under Settings > Custom conversions, and currency overrides the currency set on the offer (Voluum postback parameters).
RedTrack
Add RedTrack's {clickid} token to the offer URL (offer_url?network_parameter={clickid}); RedTrack describes it as the parameter that passes the click ID from and back to RedTrack, and lists {sum} as the offer payout (RedTrack dynamic parameters). The base postback looks like this:
https://your-redtrack-domain.com/postback?clickid=REPLACE&sum=REPLACE&type=Purchase
Copy the generated Postback URL from your offer source settings, and append &type= with a conversion type name if you track several events (RedTrack S2S guide). Type names are case-sensitive. RedTrack supports four statuses (approved, pending, declined and other), written in lowercase; the Conversion Tracking builder's "Show postbacks for statuses" toggle generates a postback for each one. RedTrack can also ignore duplicate postbacks by an event ID such as an order ID (RedTrack conversion types and statuses).
Keitaro
Keitaro's click ID macro is {subid}, so the offer URL gets something like &sub1={subid}. Copy the postback URL from Settings → Postback URL; it contains a unique key in the path that protects the tracker from fake requests:
https://your-keitaro-domain.com/POSTBACK_KEY/postback?subid=REPLACE&status=REPLACE&payout=REPLACE¤cy=usd
subid and status are mandatory; without them, Keitaro can't process the postback. payout (positive or negative), currency and tid (transaction ID) are optional. Base statuses include lead, sale, rejected, registration and deposit, and you can map a network's own status names with "training" parameters such as sale_status (Keitaro postback docs).
Binom
Binom's click ID token is {clickid}, added to the offer link after the network's parameter, for example &sub1={clickid}. The postback goes to click.php on your Binom domain (Binom docs):
https://your-binom-domain.com/click.php?cnv_id=REPLACE&payout=REPLACE&cnv_status=REPLACE
cnv_id carries the click ID back from the network, payout the conversion value, and cnv_status (plus an optional cnv_status2) accepts any value. cnv_currency sets the payout currency. Tick Upsell on the offer if one click can convert several times; Binom then adds the payouts together instead of letting the last postback replace them.
Quick reference
| Tracker | Click ID token in offer URL | Click ID in postback | Payout | Status or type | Currency | Transaction ID |
|---|---|---|---|---|---|---|
| Voluum | {clickid} |
cid |
payout |
et (custom conversions) |
currency |
txid |
| RedTrack | {clickid} |
clickid |
sum |
type; status variants from the builder |
Not in the basic template | Event ID |
| Keitaro | {subid} |
subid |
payout |
status (required) |
currency |
tid |
| Binom | {clickid} |
cnv_id |
payout |
cnv_status, cnv_status2 |
cnv_currency |
Upsell setting |
Mapping payout, status and currency
Getting a conversion into the tracker is half the job. The other half is making sure the revenue it shows matches what the network will actually pay you.
Payout. Map the tracker's payout field to your commission, not the customer's order value. On a RevShare deal the commission changes with every event, so a dynamic macro matters more than on a fixed CPA.
Status. Networks usually distinguish between a conversion being recorded, approved and rejected. Decide what your tracker should count:
- Approved only. Revenue in the tracker matches what you are paid, but feedback arrives after the network's review or hold period.
- Created, then updated. Faster signal for optimization, but you need a way to remove rejections. Keitaro supports this: a later postback for the same
subidwith a new status overwrites the earlier conversion unless you send a uniquetid. In Binom, you can pass the stage incnv_status, which accepts any value.
Currency. If you are paid in EUR but your tracker reports in USD, pass the currency explicitly (currency in Voluum and Keitaro, cnv_currency in Binom). RedTrack's dynamic parameter list doesn't include a currency token for the basic offer postback, so make sure the network pays in the currency your RedTrack setup expects.
MassPartner handles this through callbacks in the affiliate dashboard. You add your tracker's URL, choose GET (parameters in the query string) or POST (JSON body), and pick the events that trigger it: conversion created, approved or rejected, sales and refunds. Placeholders include {$sub1} to {$sub5}, {$commission}, {$saleamount}, {$currency}, {$status}, {$orderid}, {$affiliateid} and {$clickid}. Use {$sub1} (or whichever slot holds the tracker's ID) for the click ID, because {$clickid} is MassPartner's own ID, and {$commission} for the payout:
Offer URL in Voluum:
YOUR_MASSPARTNER_TRACKING_LINK&sub1={clickid}
Callback in MassPartner (GET, event: conversion approved):
https://your-voluum-domain.com/postback?cid={$sub1}&payout={$commission}¤cy={$currency}&txid={$orderid}
For Keitaro, a clean pattern is one callback per event with a fixed status: status=lead on "conversion created", status=sale on "conversion approved" and status=rejected on "conversion rejected".
Testing and debugging
Test with real traffic before you scale. A typical sequence:
- Click your tracker's campaign URL and note the click ID the tracker generated.
- Find that click in the network's click report and confirm the ID sits in the expected sub ID column, untruncated.
- Complete a real test conversion, or ask your affiliate manager to approve one.
- Check the network's postback log for the request and the response code, then the tracker's conversion log.
Network test buttons can mislead you. Keitaro notes that affiliate networks don't send a real subid in test postbacks, so test with a conversion that went through the tracker campaign link (Keitaro postback docs). Voluum's method is to take a valid click ID from Voluum, insert it into the postback template and fire it to generate a test conversion (Voluum docs).
| Symptom | Likely cause | Fix |
|---|---|---|
| Network shows the conversion, tracker doesn't | Postback not saved, wrong trigger event, or wrong tracker domain | Check the network's postback list and log |
Tracker receives {sub1} literally |
Macro syntax doesn't match the network's | Use the network's exact macro, including brackets |
| "Click not found" or similar in the tracker log | Click ID in a different sub ID slot, or truncated | Align the slot in offer URL and postback |
| Conversion recorded with zero revenue | Payout parameter missing or mapped to an empty macro | Map payout to the commission macro |
| Revenue higher than your earnings | Order value sent instead of commission | Switch to the commission macro |
| Duplicate conversions | Same event fired twice without a transaction ID | Add txid / tid / event ID, or narrow the trigger events |
If your traffic comes from Google Ads rather than a tracker-managed source, our guide to Google Ads offline conversion import for affiliates covers the other route.
Track MassPartner offers in your own tracker
MassPartner is free for affiliates: join brand programs from the marketplace, get personal tracking links with sub IDs and send conversions to your tracker through callbacks. See what affiliates get, including real-time stats and payouts by PayPal, Payoneer, bank transfer or crypto.
FAQ
What is the Voluum postback URL format?
It is your Voluum domain followed by /postback?cid=REPLACE&payout=OPTIONAL&txid=OPTIONAL. Replace REPLACE with the network macro that returns Voluum's {clickid}, and the optional values with the network's payout and transaction ID macros.
Which macro passes the click ID to an affiliate network in Keitaro?
Keitaro uses {subid}. Put it in the network's sub ID parameter in the offer URL, then return it in the postback's subid parameter.
Should a network postback fire on pending or approved conversions?
Fire on approved conversions if you want tracker revenue to match your payouts. Fire on created conversions as well if you need faster optimization data, but send a separate status for approvals and rejections so you can filter them.
Why does my tracker show conversions with zero revenue?
The postback reached the tracker without a payout value, usually because the payout parameter is missing or mapped to a macro the network leaves empty. Map it to the network's commission macro, or set a fixed payout on the offer in your tracker.