> ## Documentation Index
> Fetch the complete documentation index at: https://docs.affixo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Attribution Recovery

> Sales that were never tracked can still be credited to the affiliate who earned them — after the fact.

Tracking misses things. A visitor clears cookies, a checkout happens on a page
the snippet was never installed on, a webhook endpoint is misconfigured for a
week, or a program migrates in from another platform with years of history
behind it.

Attribution Recovery is how those sales still reach the right affiliate.

<Note>
  This is recovery, not re-tracking. It credits sales that **already happened**.
  It cannot invent a click that was never recorded — see
  [What it cannot do](#what-it-cannot-do).
</Note>

## The three parts

|            | What it does                                                                                                                                         |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Detect** | A scheduled reconciliation compares your Stripe charges against the conversions Affixo has, and reports any charge with no tracked conversion.       |
| **Replay** | Historical Stripe charges are re-run through the live attribution pipeline, so [every attribution method](/attribution) gets another chance at them. |
| **Repair** | A single customer is credited directly to a known affiliate, when you already know who referred them.                                                |

## Where to see it

**Admin → Reports → Attribution Recovery.**

Three numbers, for the last 90 days:

* **Attributions recovered** — sales credited to an affiliate after the fact.
* **Revenue re-attributed** — what those sales were worth, in your workspace's
  base currency.
* **Sales with no attribution** — Stripe charges reconciliation found that still
  have no tracked conversion at all.

Below them is the list behind the first number: every recovered sale, the
affiliate it went to, and whether it was **Replayed** or **Repaired**. The count
is checkable rather than asserted.

<Note>
  If the third tile shows a dash rather than a number, reconciliation has not run
  for your workspace yet. That is deliberately different from `0` — "we found
  nothing" and "nothing has looked" are not the same claim.
</Note>

## How a sale gets recovered

**Replay.** Your connected Stripe account's historical checkouts and invoices are
re-submitted to the same pipeline that handles live sales, so coupon, cookie,
UTM, subscription and email matching all run again. Nothing is double-counted:
each charge is keyed by its Stripe id, so re-running is safe. Recovered sales are
recorded as settled history rather than new payable commission, which is what
stops a migrated program paying its affiliates twice for sales they were already
paid for elsewhere.

**Repair.** On **Referrals**, a referral that carries a Stripe customer id can be
imported directly: every paid checkout and invoice for that one customer is
credited to the affiliate you have already matched them to. Attribution is not
guessed here — you have asserted it.

## What it cannot do

Being straight about the limits is the point of the feature.

* **It cannot recover a click that was never recorded.** If a sale has no coupon,
  no cookie, no matching UTM, no prior subscription and no email match, replaying
  it will find nothing. It is an untracked sale, and it stays untracked.
* **It will not guess.** A replayed charge that matches no affiliate is left
  alone rather than assigned to a plausible one.
* **Recovered history is not new payable commission.** See above.
* **Replay covers Stripe.** Sales that never reached Stripe are outside its
  reach.

## Reducing what needs recovering

Recovery is a safety net, not a substitute for tracking. The two things that
close the gap fastest:

1. **Verify your install** — Admin → Integrate confirms the snippet is firing and
   the webhook is reaching Affixo.
2. **Give affiliates coupon codes.** [Coupon attribution](/attribution) needs no
   cookie at all, so it survives ad blockers, Safari's cookie limits, and
   checkouts on domains you do not control.
