# Postback Parameters

> Every value your postback URL accepts, what each one does, its default, and an example.

This page explains each parameter your postback URL accepts, so you know what to map, what to leave out, and what Proferex does when a value is missing.

Your postback URL is on **Tracker → Tracker Settings → General Settings**, in the **Global Postback URL** card. To set it up with an offer source, see [Postbacks](/docs/tracker/postbacks/index.md).

| Parameter | Required | What it carries | When it's missing |
|---|---|---|---|
| `clickid` | Yes | The Proferex click ID of the visit that converted | The postback is refused |
| `payout` | No | What you earn for this conversion | The offer's **Payout** |
| `currency` | No | The payout's currency | The offer's currency, then US dollars |
| `tid` | No | Your offer source's transaction ID | One conversion of each kind per click |
| `kind` | No | `primary`, `upsell`, or `rebill` | `primary` |
| `offerid` | No | One of your offer IDs | The offer the visitor was sent to |
| `s1` to `s5` | No | Any extra values you want to keep | Nothing is kept |
| `send` | No | `1` or `0`: send this conversion to the traffic source or not | The traffic source's **Upsells and rebills** setting |
| `count` | No | `1` counts an upsell or rebill in **Conversions** | Upsells and rebills add revenue only |

Parameter names are lowercase. `click_id` works as well as `clickid`, and `transaction_kind` as well as `kind`.

---

## Values left as macros are ignored

When an offer source has nothing for a parameter, it often sends the macro unchanged, such as `s3={sub3}` or `payout={payout}`. Any value that is still a single `{something}` is treated as missing, so it never shows up as text in your reports.

That makes it safe to keep the full postback URL even if your offer source can't fill every value. The one value that must be real is `clickid`.

---

## clickid

`clickid` is the click ID Proferex gave the visit. Proferex adds it to your Offer URL wherever you put `{clickid}`, your offer source stores it with the visit, and sends it back when the visitor converts. That is how a conversion finds its campaign, lander, offer, and traffic source.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}
```

Map `clickid` to the macro for the same sub ID parameter you sent `{clickid}` in. A click ID that doesn't belong to your account is refused with `Invalid click ID`.

To find a click ID yourself, go to **Tracker → Tracker Settings → Click/Conversion Log**, choose **Clicks**, and copy it from the **Click ID** column.

---

## payout

`payout` is what you earn for this conversion. It becomes the conversion's revenue.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}
```

- **Missing or not a number.** Proferex uses the **Payout** set on the offer. See [Payout and currency](/docs/tracker/offers/index.md#payout-and-currency). If the offer has no payout, the conversion is recorded with no revenue.
- **`payout=0`.** Proferex records the conversion with no revenue. An explicit 0 is not replaced by the offer's payout.
- **Written loosely.** `12.50`, `$12.50`, and `12.50 USD` all record 12.50.
- **Below zero.** A negative payout, such as a chargeback, is refused with `Negative payouts are not accepted`. Proferex doesn't subtract revenue for a reversed sale.

Send your offer source's payout macro whenever it has one. Payouts change, and the amount the offer source sends is always the current one.

---

## currency

`currency` is the three-letter code of the payout's currency, such as `USD`, `EUR`, or `GBP`.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&currency={currency}
```

Leaving `currency` out is not the same as sending `USD`. Without it, Proferex uses the currency set on the offer, and only then US dollars. When Proferex uses the offer's payout because `payout` was missing, it always uses the offer's currency with it.

Proferex converts the payout at the exchange rate for the day of the conversion, and shows it in your display currency. The original amount and currency stay with the conversion in the **Click/Conversion Log**. See [Currency](/docs/account/currency/index.md).

A value that isn't a three-letter code is ignored, as if it were missing.

---

## tid

`tid` is your offer source's ID for the sale, often called the transaction ID, order ID, or conversion ID.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&tid={transaction_id}
```

`tid` does two jobs:

- **It stops a conversion being counted twice.** Offer sources retry postbacks. A second postback with the same click ID, the same `tid`, and the same `kind` is ignored and answers `Transaction ID already processed for this click`.
- **It lets one click have several conversions of the same kind.** Without `tid`, Proferex records only one conversion of each kind per click. Two monthly rebills on the same click each need their own `tid`, or the second is ignored as a repeat.

> **Tip:** Always map your offer source's transaction ID to `tid`. It costs nothing and protects every count in your reports.

---

## kind

`kind` says what sort of conversion this is.

| `kind` | Use it for | Counted in **Conversions** | Revenue |
|---|---|---|---|
| `primary` | The first sale or lead on a click. The default. | Yes | Added |
| `upsell` | An extra purchase in the same session, such as an order bump | No | Added |
| `rebill` | A later charge on the same customer, such as a monthly renewal | No | Added |

Anything else, including a missing value, counts as `primary`.

Upsells and rebills never use up an offer's conversion cap, and never add a CPA charge. Whether they reach your traffic source depends on the traffic source's **Upsells and rebills** setting. See [Upsells and Rebills](/docs/tracker/upsells-and-rebills/index.md).

---

## offerid

`offerid` moves the conversion to another of your offers. Use it when one offer source pays for several of your offers through the same link, or when the visitor ended up buying a different product than the one you sent them to.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&offerid=YOUR-OFFER-ID
```

Copy the offer's ID from its row in **Tracker → Offers**. The conversion then counts for that offer in your reports, uses its payout and currency as the fallback, and counts toward its conversion cap.

An ID that isn't one of your offers is ignored, and the conversion stays with the offer the visitor was sent to. Leave `offerid` out in every other case.

---

## s1 to s5

`s1` to `s5` keep extra values from your offer source with the conversion, such as the product the customer bought, the offer source's own sub ID, or a coupon code.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&s1={product_id}&s2={coupon}
```

You see them in the conversion's details: click **View** on the row in the **Click/Conversion Log**. They are also passed on to your piggyback postbacks as `{s1}` to `{s5}`.

---

## send

`send` decides, for this one conversion, whether Proferex passes it on to the traffic source the visitor came from.

- `send=1` sends it, even an upsell or rebill the traffic source would normally not hear about.
- `send=0` keeps it from the traffic source, even a first conversion.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&kind=upsell&send=1
```

Without `send`, the traffic source's **Upsells and rebills** setting decides. `1`, `true`, and `yes` all mean send. `0`, `false`, and `no` all mean don't. See [Upsells and Rebills](/docs/tracker/upsells-and-rebills/index.md#send-and-count).

---

## count

`count=1` counts an upsell or rebill in your **Conversions** column, like a first conversion.

```
https://track.mydomain.com/u/YOUR-ALIAS?clickid={aff_sub}&payout={payout}&kind=rebill&count=1
```

Use it when your offer source reports something as an upsell or rebill that you want to treat as its own conversion. On a CPA campaign, a conversion counted this way also adds a CPA charge. It still doesn't use up the offer's conversion cap, which only counts first conversions. `count=0` does nothing: a first conversion always counts.

---

## Next step

Map `clickid`, `payout`, and `tid` at every offer source you use, then send a test postback. See [Test a postback](/docs/tracker/postbacks/index.md#test-a-postback).
