---
title: Conversions are missing
description: A diagnostic order for when your offer source shows conversions and PostbackX does not.
updated: 2026-07-30
order: 3
related: [/concepts/attribution, /reference/postback, /guides/offer-sources]
---

Your offer source reports conversions. PostbackX shows fewer, or none. This is the
most common support question, and it has a small number of causes — worth working
through in this order, because it goes cheapest-first and each step rules out a
whole class of problem.

## 1. Are postbacks arriving at all?

Open [Conversions](https://app.postbackx.com/conversions) and look at the window
where you expect them.

**Nothing at all, ever.** The postback is not reaching PostbackX. Skip to step 2.

**Some conversions, fewer than expected.** Postbacks work; something is wrong with
specific ones. Skip to step 4.

## 2. Send one by hand

This separates "your offer source is not calling us" from "the call is failing".
Take a real click id from your [Clicks report](https://app.postbackx.com/clicks)
and fire a postback yourself:

```bash
curl -i "https://postbacks.postbackx.com/postback?click_id=REAL_CLICK_ID&payout=1.00&event_name=lead&transaction_id=manual-test-1"
```

**A `200` with a `conversion_id`.** PostbackX is working and the problem is on your
offer source's side — its postback URL is wrong, or it is not firing. Go to step 3.

**A `400`.** The click id was empty. Check for a stray space or an unsubstituted
macro in what you sent.

**A `404`.** That click id does not exist. Copy it again from the Clicks report.

**A `410`.** The click is over 90 days old. Use a recent one.

## 3. Check the postback URL in your offer source

Two things go wrong here, and they look identical from the outside.

**The URL is wrong.** Compare it character by character against what
[Offer Source](https://app.postbackx.com/offer-source) shows for that source. A URL
copied out of a tutorial or an old email is the usual culprit.

**The click id macro is wrong.** This is the more common one. Your offer source
substitutes its own macros — if it stored your click id in `sub5`, the postback
must send `click_id={sub5}`. Pointing it at `{sub1}` when the value is in `sub5`
sends an empty click id, and PostbackX answers `400`.

So check where the click id actually lands. Look at your offer URL in
[Create Offers](https://app.postbackx.com/create-offers): whichever parameter
carries `{click_id}` there is the one the postback must read back.

## 4. Check the click id is reaching the offer

If postbacks arrive but many carry no click id, the chain broke a step earlier: the
click id is not getting *into* the offer URL, so your offer source has nothing to
give back.

Your offer URL needs the macro. Not this:

```
https://track.yoursource.com/click?offer=123
```

But this:

```
https://track.yoursource.com/click?offer=123&sub5={click_id}
```

PostbackX substitutes `{click_id}` at redirect time. Without it, every conversion
arrives orphaned no matter how well the postback is configured.

The quickest check: click your own tracking link and look at the URL you land on.
If the click id is not visible in it, the macro is missing.

## 5. Conversions counted once that should be twice

Two genuine conversions on the same click, same event, collapse into one when no
`transaction_id` is sent — PostbackX cannot distinguish them from one conversion
delivered twice.

Add `transaction_id={transaction_id}` to your postback URL, using your offer
source's own macro. Repeat deliveries then dedupe correctly and genuine repeats
stay separate. See [attribution](/concepts/attribution).

## 6. Timing

Two effects that look like missing data but are not.

**Conversions lag clicks.** Someone clicks today and converts tomorrow. The
conversion is attributed to the *click*, so it appears in the report for the day
of the click, not the day of the sale. A report on today's traffic will keep filling
in for days.

**Time zones.** Your offer source reports in its zone, PostbackX in the one you
select. A day boundary shifted by a few hours moves conversions between days and
looks like a shortfall at the edges. Compare a whole week before concluding
anything from a single day.

## Still missing

Collect these before asking for help, since they are the first things anyone will
want:

- One click id you expect a conversion for
- The exact postback URL configured in your offer source, macros included
- What the `curl` in step 2 returned
- The window and time zone you are comparing
