Back to knowledge base

Postback tracking

How to compare a postback template vs a live request

Diff the callback you expected against the callback that actually fired so macro, encoding, and partner-side mismatches stop hiding inside 200 responses.

Last reviewed April 2026 9 min read

Introduction

A postback template is only a promise. The real troubleshooting value comes from proving whether the live callback matches that promise once the tracker expands macros, encodes the URL, and sends the request to the partner endpoint.

This workflow is for the common gray-zone failure mode: the network says your template looks right, the endpoint returns 200, but the conversion is still missing or the payload in the receiving log does not match what the team thought it shipped.

Explanation of the concept

The comparison needs two artifacts: the approved template from the tracker or partner documentation, and the exact live request that was actually sent. Without both, teams argue over screenshots instead of isolating the mismatch.

Treat the diff as structured QA. You are comparing parameter names, macro substitutions, encoding, payout formatting, event names, and any auth or signature fields, not just whether the request happened at all.

Common problems

Most postback disputes come from silent differences between the template and the delivered request. A macro may stay literal, a click ID may map to the wrong field, or a tracker may append an extra parameter that changes how the partner parses the callback.

Because many endpoints still answer with 200 on malformed payloads, teams often stop at transport success and miss the business-level mismatch that actually prevents attribution.

Step-by-step troubleshooting

Save the expected template and the live request in plain text before you compare anything. Once both are visible side by side, you can isolate whether the mismatch happened in the tracker template, during macro substitution, or at the receiving endpoint.

Run the comparison in order. Confirm the template first, then replay the real request, then inspect only the differences that remain. That keeps the debugging path short and evidence-based.

If you need to send the callback again while preserving the exact structure, use Postback Tester for a controlled replay and keep Postback Debugger ready for the deeper transcript when the server response still does not explain the failure.

  1. Freeze the approved template

    Copy the exact tracker or partner template that was supposed to fire, including parameter names, macros, placeholders, signatures, and notes about encoding.

  2. Capture the real callback

    Pull the actual request from your tracker log, network log, or Postback Debugger so you compare against the live payload instead of a reconstructed guess.

  3. Diff field by field

    Check click ID, payout, status, goal, sub IDs, auth fields, and URL encoding one field at a time. If the structure looks suspicious before replaying it, run the URL through Postback URL Checker first.

  4. Replay the request in a controlled test

    Send the corrected or suspicious version through Postback Tester and save the full response, headers, and latency so the team can prove what changed.

  5. Route the mismatch to the right fix path

    If macros stayed literal, continue with Postback Macro Not Replaced. If the endpoint returns 200 but the partner still does not credit the event, continue with Postback Returns 200 but No Conversion.

Tools that help solve the problem

You do not need a large stack for this audit. Use the postback tools as a sequence: validate the callback URL structure, inspect the live request, replay the payload, and then move to the matching fix guide only after the mismatch is proven.

That sequence keeps template reviews grounded in evidence instead of assumptions from screenshots or tracker UI labels.

Conclusion

A postback comparison is complete only when the team can point to the exact field that drifted between template and live request. That removes guesswork from partner escalations and prevents repeated 200-response dead ends.

Keep the approved template, the live request, and the replay evidence together. That small evidence pack makes future postback launches and incident reviews much faster.

Tools mentioned in this article

Postback Tester

Fire sample conversion callbacks and read the raw response before launch.

Open tool

Postback URL Builder

Generate correct postback URLs for trackers and affiliate networks.

Open tool

Redirect Checker

Inspect redirect paths, status codes, and campaign landing behavior before launch.

Open tool

UTM Builder

Create campaign tracking URLs with UTM parameters.

Open tool

Click ID Extractor

Extract click IDs and tracking parameters from URLs instantly.

Open tool

Facebook CAPI Tester

Send test events to Facebook Conversion API and verify responses instantly.

Open tool

Related issues

Tracking bugs rarely travel alone. Explore these related guides to build a full remediation plan.

Postback Macro Not Replaced

Callbacks arrive but contain literal {clickid} or {payout} strings because the template never swapped values.

View guide β†’

Postback Returns 200 but No Conversion

The endpoint answers successfully, but the network, tracker, or CRM still does not record the conversion you expected.

View guide β†’

More affiliate tracking guides

From the Tracking Tools blog

What is fbclid?

Understand Facebook click IDs, protect them through redirects, and keep Meta reporting aligned.

Read article →

How to Check a Redirect Chain

Learn how to trace every HTTP hop, document problems, and keep affiliate links honest.

Read article →

What Are UTM Parameters?

A deep dive into UTM tagging, troubleshooting, and the tools that keep analytics clean.

Read article →

Need help debugging your tracking setup?

Pair these diagnostics with a guided audit and keep attribution clean.