darkcore docs
PWAReference

Postback parameters

Complete reference for incoming-postback parameters — aliases, validation, response codes, and deduplication.

Reference for incoming postback parameters (tracker → darkcore). For practical setup, see stream postbacks and the Keitaro integration.

Receiver URL

https://edge.darkcorepwa.com/p

It is shared by all workspaces. GET and POST are accepted with query parameters, form-urlencoded, or JSON bodies. If a value is present in both the query and the POST body, the query value wins. The legacy /postback path alias works identically.

Parameters

For each parameter, the first non-empty alias from the list is accepted.

ParameterAliasesRequiredDescription
click_idclickid, cid, subid, sub_idyesdarkcore click identifier received by the tracker through {click_id}
statusgoal, eventyesConversion status (registration, deposit, custom)
payoutsum, amount, revenuenoPayout amount; always USD
transaction_idtxid, tx_id, transactionid, conversion_id, conv_idnoIdentifier used for deduplication

Validation rules

  • A value longer than 512 characters is ignored (treated as absent).
  • payout must be a number in the 0…1,000,000 range; otherwise it becomes 0.
  • There is no currency field: all payout is counted in US dollars.

Status mapping

status matches a workspace conversion type by its key or alias. Base mappings, when a custom registry is not set:

Incoming statusType
reg, registration, leadregistration
dep, deposit, ftd, first_deposit, saledeposit

Any other non-empty unmatched status results in 400 invalid_status. To accept custom statuses, add them as aliases in Settings → Conversions.

Response codes

SituationResponse
Success200 ok
Duplicate (same transaction_id, or click_id + status without a tx_id)200 ok
Missing / too-long click_id200 ok (to avoid exposing internal state)
Unknown non-empty status400 invalid_status
Request rate limit exceeded429
Infrastructure error500 — the tracker must retry

The tracker should retry on 500. 200 and 400 are final and should not be retried.

Deduplication

  • With transaction_id: unique by that ID; every conversion, including a repeat deposit for the same click, is recorded separately.
  • Without transaction_id: unique by the click_id + status pair.

Therefore, always pass a unique transaction_id for repeating events (redeposits and rebills).

Automatic registration completion

If deposit arrives without an earlier registration, darkcore automatically synthesizes a registration event so the funnel, pixels, and push remain consistent.

On this page