Postback parameters and macros, one by one
Every postback is a GET request to your URL with the conversion in the query string. Publisher postbacks always carry action_id, sub_id, offer_id, status, payout, conversion_name, is_offer_complete and a verifier; the rest appear when they apply.
See also: Signed postbacks
On this page
The lane decides what payout means. Read the right one before you credit anything.
| Lane | Your earnings | The player’s reward |
|---|---|---|
| Offer API, Top Offers Feed, Offer Links | payout | user_payout |
Hosted Offerwall (placement=offerwall) | revenue | payout and user_payout |
Track your revenue from revenue whenever it’s present, otherwise from payout. Don’t add the two together.
Example: the install postback Pebble Rewards gets for Harbor Blocks, through the Offer API. The values are made up.
GET https://api.pebble.example/afos
?action_id=act_5Kq2Wc
&sub_id=u_48213
&offer_id=aff_7c2e91b04d3a
&status=completed
&payout=4.2
&user_payout=1.5
&offer_name=Harbor+Blocks
&clicktimestamp=2026-10-29T19%3A06%3A00Z
&conversion_name=Install
&goal_id=1
&offer_id_numeric=136539454590266
&goal_id_numeric=83339613210995
&is_offer_complete=false
&verifier=9f86d081884c7d659a2feaa0c55ad015…| Parameter | Sent | Meaning |
|---|---|---|
action_id | Always | The ID of this conversion. A reversal repeats it. |
sub_id | Always | The user ID from your tracking link, or the uid you opened the wall with. |
offer_id | Always | Our offer ID, as in the Offer API. |
offer_id_numeric | Usually | The same ID as an integer, matching numericId. |
status | Always | completed or reversed. |
payout | Always | Your earnings for this step, in USD. On the Hosted Offerwall, the player’s reward. |
revenue | Wall | Your earnings for this step on the Hosted Offerwall, in USD. |
user_payout | With a reward | The player’s reward in USD. Credit it as sent. |
conversion_name | Always | The step’s name: the goal’s name in the Offer API. |
offer_name | Usually | The offer’s title. Store it: a pulled offer can’t be looked up later. |
goal_id | Per step | Matches goals[].id in the Offer API. |
goal_id_numeric | With goal_id | Matches goals[].numericId. |
is_offer_complete | Always | true on the offer’s last step. |
clicktimestamp | Usually | Click time as the advertiser’s side reported it. The format varies and it can be empty, so parse it with care. |
placement | Wall | Always offerwall. Marks a wall postback. |
manual_credit | Hand credits | 1 on a credit that isn’t a completed step: a goodwill credit from our team, or one you sent from User Credit where it’s on for your account. |
reason | Some reversals | Why the conversion was taken back, in plain words, up to 200 characters. Never on credits. |
sub1 to sub10 | If on the link | Your own values from the tracking link, on credits and reversals alike. Kept for 90 days. |
test | Tests only | true on a test from Send test postback. Don’t credit it. |
verifier | Always | The signature: HMAC-SHA256 of the URL without it. |
All values are strings in the query. Amounts have no trailing zeros: 4.2, not 4.20. New parameters can appear; verify the URL as received and every one stays covered by the signature.
- The advertiser set a reward for the step:
user_payoutis that reward, including when it’s0. - On an account paid per step,
user_payoutalways equals yourpayouton Offer API, feed and link postbacks. - No reward set: it’s a suggested share of your
payout,0on the install step. Where your account shows it, change the share under My Profile, then API user reward. Your payout doesn’t change, and your Hosted Offerwall keeps its own reward setting. - A reversal repeats the
user_payoutits credit was sent with, so deduct exactly what you added.
Put a macro anywhere in your postback URL and we replace it with the value. Macros work in any case ({SUB_ID} works too). Any other {placeholder} is sent exactly as you typed it.
| Macro | Holds |
|---|---|
{sub_id} | sub_id |
{transaction_id} | action_id |
{payout} | payout |
{revenue} | Your earnings on every lane: revenue on the wall, payout elsewhere |
{user_payout} | user_payout, empty when none is set |
{offer_id}, {offer_id_numeric} | The offer ID and its integer form |
{goal_id}, {goal_id_numeric} | The goal ID and its integer form, empty on offers with no goals |
{conversion_name}, {offer_name} | The step’s name and the offer’s title |
{status} | completed or reversed |
{reason} | The reversal reason, empty otherwise |
{purchase_type} | purchase, deposit or subscription when the step is one, else empty. Macro only |
{purchase_amount} | The one dollar price the step’s name asks for, such as 9.99, else empty. Macro only |
{sub1} to {sub10} | Your own values from the link, empty when the link had none |
Every parameter in the first table is also added to your URL under its own name, with or without macros.
The URL under Workspace settings receives a shorter set, added to the URL as is (no macros).
| Parameter | Sent | Meaning |
|---|---|---|
action_id | Always | The conversion’s ID. A reversal repeats it. |
sub_id | Always | The value from the tracking link. |
offer_id | Always | Our offer ID. |
status | Always | completed or reversed. |
payout | Always | Your earnings in USD. |
user_payout | With a reward | The player’s reward in USD. |
conversion_name | Always | The step’s name. |
offer_name | Usually | The offer’s title. |
goal_id | Per step | The goal’s ID. |
is_offer_complete | Always | true on the last step. |
clicktimestamp | Usually | Click time as the advertiser’s side reported it. |
verifier | With a secret | The signature. Without a secret, postbacks are unsigned. |