Documentation sections

Transaction ID, duplicates and conversion corrections

How the tracker uses txid to tell a repeated postback from a status change and from a payout correction.

A transaction ID is the number of the deal in the affiliate network. The network passes it in the incoming postback as the txid or tid parameter. Based on it, the tracker decides what to do with a postback for a click that already has a conversion: skip it, update the status or correct the amount.

What counts as one conversion

A conversion is identified by a pair: the click ID and the txid.

  • Postbacks with the same click ID and the same txid belong to one conversion.
  • The same click with a different txid is a separate conversion. To change the status, the network must send the previous txid; for a new conversion, a different one.
  • The same txid on a different click is a different conversion.
  • If the request has both txid and tid, txid is used.
  • The value is compared as is, case-sensitive.
  • An unreplaced macro counts as an empty value: {txid}, {{txid}}, ${txid}, [txid], [[txid]], %txid%, #txid#, <txid>. In square and angle brackets and between % or #, a value that starts with a digit, for example [12345] or #1001#, still counts as a transaction ID. In curly braces, any value counts as empty.
  • If the click already has a conversion recorded under such a value in square or angle brackets, between % or #, or in the form ${txid}, a postback with that value continues this conversion: a repeat is skipped, and a status change updates it.

Each change to a conversion is recorded as a new version. Reports and logs use the latest version.

Processing rules

The tracker compares the postback with the latest version of the conversion with the same txid. The status is compared after status mapping.

What arrivedWhat the tracker doesOutgoing S2S and CAPI
The first postback with this txidRecords the conversionSent
Same status, same payoutSkips the postbackNot sent
Same status, no payout passedKeeps the previous payout and skips the postbackNot sent
Same status, different payoutRecords a new version with the new amountNot sent
Different statusRecords a new version with the new statusSent
lead or hold after saleSkips the postback, the sale staysNot sent

The tracker responds to all of these postbacks with ok and code 200.

Events go to the configured recipients: the source and campaign S2S postbacks and the Facebook Conversions API. Only the lead and sale statuses are sent to Facebook.

Exact repeat

A postback with the same txid, status and payout as the latest version is an exact repeat. It does not create a second conversion and is not sent to recipients a second time. A repeat without an amount also counts as exact: the previous payout is kept.

In the Logs → Postbacks («Логи → Postbacks») log, a repeat shows up as a line where SUBID is the click ID:

text
Duplicate transaction for SUBID (status sale) — skipped

Status change

A postback with the same txid and a different status updates the conversion, for example lead → sale, hold → sale, sale → rejected, rejected → sale. The tracker records a new version and sends the event to recipients.

  • If the send postback to source («слать постбэк в источник») checkbox is cleared for the conversion type, no S2S is sent for this status.
  • The amount is taken from this same postback according to the payout rules. If the postback has no amount, the previous one is not carried over: 0 or the offer payout is recorded.

Payout correction

A postback with the same txid, the same status and a different amount corrects the conversion's payout. Reports keep the new amount. The event is not sent to recipients again, because the status did not change.

  • payout=0 is also a correction: the payout becomes zero.
  • A postback without an amount, with an empty value or with an amount that could not be parsed keeps the previous payout.
  • If the offer has a payout set and the Payout from postback parameter («Выплата из параметра постбэка») checkbox is cleared, the amount from the postback is not used, and you cannot correct it with a postback.
  • Changing the payout in the offer settings does not recalculate recorded conversions: a repeat with the same status keeps the previous amount.
What else counts as a correction

A new version that is not sent to recipients is also recorded in two cases:

  • the network sent a different status of its own that maps to the same tracker status;
  • a different cost was passed in the cost parameter.

If cost is not passed in the repeated postback, is empty or still contains an unreplaced macro, the cost from the previous version is kept.

Late lead or hold after sale

If lead or hold with the same txid arrives after sale, the tracker skips the postback. The conversion stays a sale, and nothing is sent to recipients. This line appears in the Logs → Postbacks log:

text
Late transaction status for SUBID — skipped

The rule applies only to lead and hold. The rejected status after sale is accepted and moves the conversion to rejected.

Exchange rate on repeats

The payout is converted to USD when the postback is received, see Currencies and rates.

  • A postback with the same txid in the same currency is converted at the rate recorded in the previous version of the conversion. A change of status or amount a few days later does not change the rate.
  • If the payout currency is different, the rate for the day the postback was received is used.
  • If a repeat with the same status arrived without an amount, the previous amount, currency and rate are kept.

Postback without txid

The tracker does not check a postback without txid for repeats:

  • the postback is recorded and sent to recipients, even if it is a repeat from the network;
  • in reports, the conversion log and the click card, all postbacks without txid for one click are one conversion with the latest status and the latest amount;
  • the exception is lead or hold after sale: such a postback is skipped, as is a postback without status. The sale stays, nothing is sent to recipients, and the line Late status without txid for SUBID — skipped appears in the Logs → Postbacks log;
  • several sales on one click remain one.
Warning.

Without txid, a repeat from the network sends the event to the source and to Facebook a second time. Pass your network's transaction ID macro in txid.

If the network has no such macro, remove &txid={txid} from the postback URL rather than leaving it unreplaced.

How versions are shown in the panel

Earlier versions of a conversion are not shown in the panel — only the latest one.

  • Campaign conversion log: one row per pair of click and txid with the latest status, payout and time for the selected period. The transaction ID is in the Txid column.
  • Click card, the Conversions («Конверсии») block: the latest state of each of the click's transactions. A conversion without an ID shows “No txid” («Без txid») in the Transaction («Транзакция») column.
  • Event delivery log, the Logs → Event delivery («Логи → Доставка событий») tab: each recorded version is a separate Conversion record («Запись конверсии») row. For a new conversion and a status change, S2S and CAPI rows are added to it if recipients are configured. A payout correction has no such rows. A skipped repeat and a late status create no rows.
  • Reports: with attribution by conversion date, a conversion is assigned to the time of its latest version. A payout correction moves the conversion to the day of the correction, see Attribution: click date or conversion date.

The Logs section is visible to the owner and the admin.

CSV import

Rows of a conversion import go through the same rules: an exact repeat does not create a duplicate, and a different status or a different payout updates the conversion. The tracker replaces an empty tid in the file with import: followed by the sub_id value. Outgoing events are sent during an import only if the Send outgoing S2S and CAPI («Отправлять исходящие S2S и CAPI») checkbox is checked.

Updated Need help? ↗