Postback URL setup for AffJoy dating offers
A postback URL is an address on your tracker that our server calls when something happens to your click, such as a signup or a payment. No browser pixel is involved, so ad blockers and closed tabs do not lose the conversion.
How it works, in three steps
- Your tracker adds its click ID to your offer link.
https://YOUR-OFFER-LINK?sub1={your tracker click ID} - We store the click with every parameter you passed.
- When an event fires, we fill your template and call it, by GET or POST.
Templates for your tracker
Paste one into the portal, then use the test send. Copy the base address from your own tracker, because it differs per account. Check parameter names against your tracker's current docs. These examples assume you pass the click ID as sub1.
Keitaro
https://YOUR-TRACKER/YOUR-KEY/postback?subid={click.queryParams.sub1|url}&status={event.type|url}&payout={clickPrice.amount}&tid={event.eventId} Binom
https://YOUR-TRACKER/click.php?cnv_id={click.queryParams.sub1|url}&cnv_status={event.type|url}&payout={clickPrice.amount} Voluum
https://YOUR-DOMAIN.trackvoluum.com/postback?cid={click.queryParams.sub1|url}&et={event.type|url}&payout={clickPrice.amount}&txid={event.eventId} RedTrack
https://YOUR-DOMAIN/postback?clickid={click.queryParams.sub1|url}&type={event.type|url}&sum={clickPrice.amount} Add |url to a macro to URL-encode its value. Use it for anything that can hold unusual characters.
The payout trap
{clickPrice.amount} is the total booked on the click so far, not the amount for this one event. If your tracker adds each postback's payout together, a user who pays three times is overcounted. Set the tracker to replace the payout for that click, or send only one event.
Events
| Event | What it means |
|---|---|
| REGISTRATION | He signs up. SOI pays here. |
| EMAIL_CONFIRMED | He confirms his email. DOI and CPL pay here. |
| DEPOSIT | Any payment. |
| FIRST_DEPOSIT | His first payment. CPA starts here. |
| SECOND_DEPOSIT | His second payment. |
| THIRD_DEPOSIT | His third payment. |
| CLICK_PAID | Money was booked on the click. It fires each time that happens. |
Which event pays on your deal is set per offer and confirmed in writing.
Macros
| Macro | What you get |
|---|---|
| {click.clickId} | Our click ID, a UUID. |
| {click.queryParams.sub1} | Any parameter you put on your link. Swap sub1 for its name. |
| {click.country} | Country code of the click. |
| {click.deviceType} | mobile, desktop or tablet. |
| {offer.name} | Name of the offer. |
| {event.type} | The event that fired this postback. |
| {event.eventId} | Unique ID of the event. Use it as a transaction ID. |
| {event.createdAt} | Event time, ISO 8601. |
| {clickPrice.amount} | Total booked on the click so far, in USD. 0.00 until it qualifies. |
| {clickPrice.requirementsStatus} | success, pending or failed with a reason. |
| {clickPrice.unlockAt} | When the held money unlocks, ISO 8601. |
Delivery and limits
- 3 attempts: at once, after 5 minutes, after 30 minutes, each logged.
- Server events older than 24 hours are dropped.
- There is no rejection postback yet. Rejections show on the click in your portal, so compare it with your tracker.
- The portal has no CR or EPC report, so your tracker is your report.
Next: SOI, DOI and CPA compared, or the rules.