Skip to content
Browse documentation

Postback delivery, testing and retries

How outgoing postbacks are sent, retried, logged and paused, and how to test one before going live.

Last updated 4 min read

On this page

Partner postbacks are queued in the same transaction as the conversion and delivered by a background worker within seconds. This page explains the delivery rules, the Delivery log, test fires, retries and automatic pausing.

Delivery rules#

RuleValue
Sent fromThe installation's server IPs (shown in the postback form: "Postbacks are sent from …")
User agentArcTrack-Postback/1.0 — a fixed technical identifier of the tracking engine, the same for every brand
MethodGET, or POST with the body template (S2S only). Image pixels are always GET with Accept: image/*,*/*;q=0.8.
Timeout10 seconds per attempt
RedirectsFollowed, at most 3, only to http(s) URLs
SuccessAny HTTP 2xx answer. The response body is ignored, so {"success":false} with 200 still counts as delivered.
DestinationsPublic IP addresses only; private, loopback and link-local addresses fail permanently.
Response keptStatus code, the first 500 characters of the response, duration

Retries#

A failed attempt (timeout, connection error, non-2xx) is retried after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours — 6 attempts over about 8.5 hours — then marked failed. Permanent errors (invalid URL, forbidden address, HTML postback without a browser) fail at once.

Postbacks that are never sent#

Error shownWhy
conversion rejectedThe conversion was rejected (or marked duplicate) after the postback was queued — for example by a reviewer. Postbacks with Fire on: Reversals or custom statuses including rejected are still sent.
html postback not delivered: …An HTML / iframe pixel postback can only be rendered by an iframe or JavaScript conversion pixel. The conversion came from an S2S postback, an image pixel or the panel.
conversion API delivery is not configuredA Meta / TikTok / Microsoft destination whose integration is not set up.

These are not counted as endpoint failures and do not trigger auto-pause.

Delivery log#

Reporting → Postback log → Delivery log tab lists every outgoing delivery (test fires included).

  • KPIs: Sent (with average duration), Failed, Queued / retrying, Success rate (sent ÷ (sent + failed)).
  • Filters: State (queued, sending, sent, failed), Affiliate, Offer, Test fires, and search by URL text, conversion ID or click ID.
  • Columns: Time, State, Affiliate, offer, Expanded URL, HTTP, Response, Attempts, Duration, Next attempt; optional Delivered and Conversion ID.
  • Details opens one delivery: HTTP status, attempts, duration, next attempt (or "No more attempts"), the conversion, which postback fired ("Workspace-wide" or "Affiliate" postback #id), the request body and the response.

Partners see their own deliveries in the partner portal.

Retry#

  • One row: row menu → Retry now (failed or queued rows).
  • Several: select rows → Retry selected. Sent or in-flight rows are skipped.
  • Everything that failed in the current filter: Retry failed (up to 10,000 rows).

A retry re-queues the row immediately and allows one more attempt. The URL is not re-expanded: fix the postback first if the URL was wrong, then wait for new conversions (or ask the partner to accept a manual list).

Test a postback#

  1. Open the postbacks list (partner Postbacks tab, Postback setup tab or partner portal Postbacks).
  2. Row menu → Send test. The test uses sample values (offer, partner, event and currency from the postback's scope; click_id 0192f3a4b5c6d7e8f9a0b1c2d3e4f5a6, payout 1.00, sub1 sub1-test, …).
  3. The Test postback panel shows the expanded URL and body; the delivery is queued as a test (one attempt, no retries, no conversion).
  4. Row menu → Recent results shows the latest deliveries with HTTP status and response.

An HTML / iframe pixel postback cannot be test-fired from the server: Send test shows the rendered snippet instead.

Auto-pause#

Every hour the worker pauses a postback that only fails:

  • at least 10 failed deliveries,
  • no successful delivery,
  • more than 72 hours between the first and the last failure,

counted since the postback was last saved (test fires and the "never sent" errors above excluded). The postback's status becomes Paused with the reason "Paused automatically: every delivery failed for more than 72 hours". Your team gets a notification ("Postback to <host> paused"), and the partner too when it is a partner postback.

To resume: fix the endpoint, then edit and save the postback with the switch on Active, or use Activate in the row menu. Saving starts a fresh 72-hour window.

Allowlisting our servers#

If the partner's endpoint filters by IP, give them the addresses shown in the postback form and on the advertiser integration page, and the user agent ArcTrack-Postback/1.0.

Something unclear or missing in this article?Tell us