Postbacks

A postback is a server-to-server message that fires the moment a conversion happens. It is what closes the loop back to your tracker — the difference between optimizing on guesswork and optimizing on data.

What a postback does

When a user you referred subscribes on ourdream.ai, Everflow records the conversion against your account. A postback is an outbound HTTP request Everflow sends to a URL you control — almost always your own tracker. The request carries the click ID you passed through as sub5, the payout, and any other sub-parameters from the original click. Your tracker uses the click ID to credit the conversion to whatever upstream traffic source generated it.

For paid traffic, this loop is non-negotiable. Your tracker is the source of truth for attribution; the ad platform's own optimization algorithms then receive conversion signals from your tracker (via Conversions APIs) so they can bid intelligently. Skip the loop and the platform optimizes blind, your cost per conversion stays high, and scaling becomes impossible.

For organic traffic, postbacks are still useful for your own analytics and cohort tracking — but the urgency is lower.

The end-to-end flow

  1. 1

    A user clicks your link. Your tracker (RedTrack, Voluum, BeMob, etc.) generates a unique click ID for that click — for example, ?cid=abc123.

  2. 2

    The click ID flows through to ourdream.ai as sub5 on your tracking link.

  3. 3

    User subscribes on ourdream.ai. Everflow records the conversion with sub5 intact.

  4. 4

    Everflow fires your postback URL, substituting macros like {sub5} and {payout} with real values.

  5. 5

    Your tracker receives the conversion, matches the click ID back to the original click, and credits the upstream traffic source. From there, your tracker can forward the conversion on to ad platforms via their Conversions APIs.

Step-by-step in the Partner Platform

Once you have your destination URL ready (we'll cover URL construction in the next section), the platform-side setup takes about two minutes. The button you're looking for is + Postback, top-right of the Postbacks page.

  1. 1

    Open the Postbacks section

    Hamburger menu (top left) → Postbacks. If you've never set one up, the list will be empty.

  2. 2

    Click + Postback

    Top-right of the page. Opens the new postback configuration form.

  3. 3

    Select the tracking type

    Conversion for paid subscriptions (the main thing you're tracking on ourdream.ai). Event for secondary actions, only if your tier and partnership unlock event payouts. CPC only on cost-per-click offers — not relevant to ourdream.ai's standard CPA / CPS payouts.

  4. 4

    Set the scope: Global or Specific

    Global fires on every ourdream.ai conversion. Use this if you only run ourdream.ai or you have one tracker that handles everything. Specific fires only on conversions for a specific offer — use this when an ad network (e.g. a Meta-only postback) needs its own dedicated endpoint, or when you want different sub-portfolios reporting to different destinations.

  5. 5

    Choose the delivery method

    Postback (server-to-server HTTP request) is the recommended method — it's reliable, server-side, and doesn't depend on the user's browser. HTML Pixel is browser-side and fragile (ad blockers, partial browser support); only use it if your destination explicitly requires a pixel.

  6. 6

    Paste the postback URL with macros intact

    Drop in the URL from the Generic S2S template below (or a tracker-specific recipe). Keep the { } wrappers — Everflow does the substitution at fire time. Don't URL-encode them; the platform handles encoding.

  7. 7

    Save and verify

    Save the postback. Then run a small test (an organic click that converts, or a manually fired test conversion if your account manager can do it) and check Reporting → Postback to confirm it fired and the destination returned a 2xx response. The row-level View Debug Info action shows the exact request and response for any single delivery — your first stop for any reconciliation question.

Auto-deactivation rules (worth knowing in advance)

Everflow auto-deactivates a postback after 10 consecutive failures within 72 hours (this rule applies to the Postback delivery method only — HTML Pixels aren't auto-deactivated). A failure is no response or an error code; any 2xx (including 204 No Content) counts as success. Each failed attempt is retried up to 5 times before being recorded as a single failure.

The most common cause of unexpected deactivation is a Global postback that requires a parameter only one traffic source provides — for example, expecting {fbclid} on every fire when only Meta traffic carries it. The fix is usually to switch from Global to a Specific postback scoped to that single source.

Generic S2S postback (start here)

The simplest postback is a GET request to a URL on a server you control. This is the classic model and works with any custom analytics endpoint, your own database, or a third-party tracker (RedTrack, Voluum, AnyTrack, BeMob).

# Generic postback URL — paste into Everflow with macros intact

https://your-tracker.example.com/conversion?click_id={sub5}&payout={payout}&offer_id={offer_id}&tx_id={transaction_id}

Macros wrapped in { } are placeholders — Everflow replaces them with real values when it fires the postback. The most useful Everflow macros for a basic setup:

MacroWhat it returns
{sub5}The click ID you captured into sub5 (your tracker's click ID, or a platform click ID if running direct)
{payout}Your payout in USD for this conversion
{transaction_id}Everflow's unique ID for this conversion
{offer_id}The ourdream.ai offer ID
{sub1}{sub4}Your other sub-parameters as captured at click time

Macro names follow Everflow's standard syntax. Confirm exact spelling against your Everflow dashboard's postback macro reference before saving.

Direct-to-platform recipes (no tracker)

Use these only if you are running paid traffic on a single platform without a tracker in the middle. The recommended setup for everyone else is the generic S2S above pointed at your tracker — your tracker then handles forwarding conversions to whichever ad platform you are running on, via that platform's Conversions API. Trackers like RedTrack, Voluum, BeMob, Binom and AnyTrack all do this natively and remove the complexity of dealing with each platform's API directly.

That said, if you are starting with one platform and one ad account, here is the click ID parameter to capture into sub5 and the path to report conversions back.

Google Ads

Click ID parameter

gclid

Macro to capture

{gclid}

Conversion endpoint

Offline Conversions API

Capture gclid from your landing page URL into sub5. To report conversions back to Google Ads, configure an Offline Conversion action in Google Ads, then upload conversions either via your tracker (RedTrack/Voluum/AnyTrack all integrate this natively) or via Google Ads' bulk CSV upload.

Direct GET-style postback to Google is not supported — Google requires authenticated API uploads. If you want a single-URL setup, route through a tracker.

Meta (Facebook & Instagram)

Click ID parameter

fbclid

Macro to capture

{fbclid}

Conversion endpoint

Conversions API (CAPI)

Capture fbclid into sub5. Meta's pixel-only attribution is heavily degraded post iOS 14, so CAPI is required for reliable tracking. Configure CAPI through your tracker, or via Meta's Business Manager → Events Manager → Conversions API setup.

Like Google, Meta does not accept GET-style postbacks. CAPI uses POST requests with an access token. Use a tracker as the middleman.

TikTok Ads

Click ID parameter

ttclid

Macro to capture

{ttclid}

Conversion endpoint

Events API

Capture ttclid into sub5. Configure the TikTok Events API through your tracker, or via TikTok Ads Manager → Assets → Events. The Events API requires an access token and POST requests to business-api.tiktok.com.

Reddit Ads

Click ID parameter

rdt_cid

Macro to capture

{rdt_cid}

Conversion endpoint

Conversions API

Capture rdt_cid into sub5. Reddit's Conversions API mirrors the Meta/TikTok pattern: POST requests with an access token. Configure through your tracker, or via Reddit Ads Manager → Conversions.

Generic S2S (your own server or tracker)

If you control the destination — your own analytics endpoint, a self-hosted tracker, or a third-party tracker that accepts GET requests — paste the URL with Everflow macros directly into the affiliate postback section of your Everflow dashboard. See the Generic S2S section above for the URL template.

This is also the recommended setup for organic traffic where you do not need to feed an ad platform — your own dashboard or a Google Sheet endpoint via Apps Script is enough to track which sub-parameters are converting.

Top 5 failure modes

Almost every postback issue we see falls into one of these five patterns. If something is not working, start here.

  1. 1. Empty macro value

    The postback fires, but {sub5} resolves to an empty string. The cause is almost always that the click ID was never captured into sub5 in the first place — your landing page is not appending it, or the URL parameter name on your landing page does not match what your tracker expects. Check by examining a recent click in Everflow: if sub5 is empty there, fix it at the link level, not the postback level.

  2. 2. Wrong macro name

    Macro names are case-sensitive and must match Everflow's reference exactly. {Sub5}, {sub_5}, or {sub-5} will all be sent literally as the string {Sub5} rather than substituted. If your destination is receiving a literal placeholder string instead of a click ID, this is the cause.

  3. 3. 400 errors from the destination

    The destination URL is rejecting the request. Common causes: a required parameter is missing, the URL was malformed by manual edits, the destination expects POST and you sent GET, or an authentication token is missing or expired. Check Everflow's postback log for the exact response code and body.

  4. 4. Auto-deactivated postbacks

    If a postback URL fails repeatedly, Everflow can automatically deactivate it to avoid wasting requests. Re-enable it from your dashboard once you have fixed the underlying issue. Always verify the destination is responding 200 OK before re-enabling.

  5. 5. URL mismatch

    The protocol (http vs https), domain, or path on the postback URL does not match what the destination expects. The most common version of this is HTTPS endpoints being given an HTTP postback URL — modern destinations reject the request without a useful error. Always use HTTPS unless the destination explicitly requires HTTP.

Other common mistakes

  • Setting up postbacks before tracking links work. Postbacks fire on conversions. If your link is not recording clicks, no conversion will ever fire. Verify the link first.

  • Trying to send GET-style postbacks to Meta/Google/TikTok directly. These platforms require authenticated POST requests via their Conversions APIs. Use a tracker as a middleman or accept the manual CSV upload path.

  • Configuring multiple postbacks that all fire on the same event. One postback per destination is enough. Duplicates create reconciliation headaches.

Stuck after working through this page? Email reception@ourdream.ai with the postback URL you are trying to use, the destination platform, and the response code Everflow is logging. We will route you to the right person on our network team.

Related

AI help