Skip to main content
Postback URL tracking lets your server report conversions to Partnero using a click ID instead of cookies or the PartneroJS snippet. Partnero appends a click_id query parameter to every referral-link visit; you store it and send it back when the visitor signs up or purchases. Unlike the REST API, the postback URL requires no API key — attribution is scoped by your program’s public ID and a valid click ID.

How it works

  1. A visitor clicks a partner’s referral link. Partnero records the click and generates a unique click ID.
  2. Your site receives the click ID — as a click_id query parameter on the landing URL, in the partnero_click_id cookie set by PartneroJS, or as a response from the click registration API (see Where the click ID comes from).
  3. You store the click_id value — in your session, database, or any storage that survives until conversion.
  4. Your server calls the postback URL with that click_id when the visitor converts. Partnero matches it to the click and attributes the sign-up or sale to the right partner.
Because the browser plays no part at conversion time, attribution survives ad-blockers, blocked cookies, Safari ITP, in-app browsers, and cross-device flows.

Where the click ID comes from

Partnero generates a click ID in three ways. All three create the same click record — pick whichever fits your setup. If your referral links go through a connected tracking domain (for example go.yourdomain.com/john), the redirect automatically appends the click ID to the destination URL:
Read it from the query string on your landing page. Nothing else to set up. If referral links point straight at your site (for example https://your-site.com/?aff=john) there is no redirect, so the PartneroJS snippet registers the click for you. On a referred visit it requests a click ID and stores it in a first-party cookie:
Read the cookie server-side at conversion time. The snippet also injects the click ID as a hidden partnero_click_id input into any <form data-partnero> form. If the visitor arrived through a redirect that already carries a click_id parameter, the snippet reuses it instead of registering a duplicate click.

3. Click registration API

Use this when neither of the options above fits: your referral links point straight at your site, but you don’t run PartneroJS — for example a backend-only integration, a mobile app, or a server-rendered site without the snippet. Your own code registers the click and receives the click ID in return.
1

Capture the referral key on landing

When a visitor arrives through a referral link like https://your-site.com/?aff=john, read the partner’s referral key (john) from the URL — the same way you would for any referral tracking.
2

Register the click

Send the referral key to the click registration endpoint. {pub_id} is your program’s public ID, shown on the Postbacks page. No API key is needed.
3

Store the returned click ID

A successful registration returns the click ID:
Store it with the visitor’s session or user record, and send it back in the postback when they convert.
Register one click per referred landing — not on every page view. Like the postback endpoint, this endpoint responds 200 with an empty JSON body on any failure (unknown program, unknown partner, or postback tracking disabled), and requests are rate-limited to 60 per minute per IP.

Enable postback tracking

  1. In the Partnero dashboard, open Program → Integration → Postbacks (affiliate programs).
  2. In the Inbound S2S tracking section, switch on Postback (S2S) tracking.
The section then shows your program’s unique postback endpoint and copy-ready example requests. Once enabled, referral-link redirects automatically start carrying the click_id parameter, PartneroJS starts registering clicks on direct referral visits, and the click registration API becomes active.

The postback endpoint

  • {pub_id} is your program’s public ID — the same ID used by the PartneroJS snippet. You don’t need to build the URL yourself: the Postbacks page shows your program’s complete endpoint, ready to copy.
  • Both GET (query parameters) and POST (form or JSON body) are accepted.
  • No authentication token is required. Requests are matched by the click_id value; requests with an unknown click_id are silently ignored.
  • The endpoint always responds 200 OK, whether or not the postback matched a click. This is intentional: it prevents third parties from probing for valid click IDs.
Two events are supported, selected with the event parameter.

Register a sign-up (customer_create)

The customer is created and attributed to the partner from the click record.

Register a sale (transaction_create)

The transaction flows through the normal pipeline — commission calculation, webhooks, notification emails, and outbound affiliate postbacks.
If you register the sign-up with customer_create first, you can skip options[create_customer] on the sale — the click record already knows the customer.

Trackable query parameters (sub-IDs)

Partners who run traffic through their own tracking platforms append extra parameters to referral links — typically their tracker’s click ID or campaign sub-IDs:
To capture these values, define the parameter names under Program settings → Referral link customization → Trackable query parameters. At click time Partnero stores the values on the click record. They are then available:
  • in click analytics, and
  • as placeholders in affiliate postbacks, so the partner’s tracker gets its own click ID echoed back at conversion.
You can add up to 50 parameter names per program. Common industry names (clickid, sub1, aff_sub, s1, …) are available as one-click suggestions in the dashboard.

Storing the click ID

Read click_id from the landing URL (redirect setups) or from the partnero_click_id cookie (PartneroJS setups) and persist it the same way you would a referral key:

Postback URL tracking vs. REST API

Checklist

  1. Enable Postback (S2S) tracking under Program → Integration → Postbacks.
  2. Store the click_id from the landing URL between click and conversion.
  3. Call the postback endpoint with event=customer_create at sign-up.
  4. Call it with event=transaction_create at purchase.
  5. Optionally, define trackable query parameters so partner sub-IDs are captured too.

Frequently asked questions

No. Requests are scoped by your program’s public ID and matched by the click_id; unknown click IDs are ignored.
To avoid leaking which click IDs are valid. To debug deliveries, open Logs in the Inbound S2S tracking section of the Postbacks page — every incoming request is recorded with its parameters and outcome (success, failed, or ignored).
Yes. GET takes query parameters; POST accepts the same fields as form data or JSON.
Both events are safe to retry. customer_create is idempotent — if a customer with the same key already exists, the request succeeds and returns the existing customer. Transactions are deduplicated by your transaction key — send a unique order or invoice ID per sale.

Next steps

Affiliate postbacks

Echo conversions back to your partners’ tracking platforms

REST API S2S tracking

API-key-based server-side tracking with full field control