Revenue Truth Check

Reconciles closed deals in a CRM against conversions reported by an affiliate platform and explains every gap by cause.

Synthetic data, September 2026 · 2026-09 · 120 deals, 117 partner events · Illustrative designs, not any company's systems

Walkthrough: 120 deals against 104 conversions · 3:44

Open in a new tab

Recorded on this page. All data is synthetic.

120

Closed deals in HubSpot

104

Approved conversions on the partner platforms

Net gap

What I check first, why the two numbers differ, and what catches it on day one.

1

What I check first

Before hunting for 16 lost sales, make sure both numbers count the same thing.

1.1Same definition, same month, same clock

QuestionHubSpotAffiliate platform
What countsA deal moved to closed wonAn approved action
Dated byClose dateAction date
MonthSeptember, in UTCSeptember, in UTC

1.2Record by record, on a shared key

KeyYou set itSafe in a linkComes back to a partner
Platform click IDirclickid, ps_xidNoYesNo
Founder's emailname@company.comYesNoSometimes
Your own referenceUse thisSub ID: sid, SubId1–3, SharedIdYesYesYes

Click ID: not on Impact's action record or in PartnerStack's partner endpoints. Email: only on PartnerStack rewards, and only if the program shares it. Sources: Impact Partner API (Actions, Clicks) and PartnerStack Partner API (rewards), checked 6 October 2026.

No key on a deal? Pair it with the closest event of the same partner, within 72 hours.

September, paired on the key

  • 97pairs on the key
  • 23deals left with no event
  • 7events left with no deal

1.3Both directions, because errors cancel out in the total

  • HubSpot12097 paired23
  • Platform10497 paired7

Red: 23 deals with no event, 7 events with no deal

120 − 104 = 23 − 7 = 16

The 97 pairs are on both sides and cancel out. The gap is only the difference between the leftovers, so 16 hides 30 records with no pair.

Pair 4 more by partner and time: 19 − 3 = 16. Same gap, fewer unknowns.

1.4Then give each of the 16 a cause

  1. Closed deals in HubSpot120
  2. PendingTiming−7
  3. ReversedReversals−4
  4. Lands next monthTiming−2
  5. Duplicate dealHubSpot hygiene−2
  6. No partner eventA close is not always a partner sale−4
  7. Conversion without a dealHubSpot hygiene+3
  8. Approved conversions on the partner platform104

Sub ID lost, pair found (4) does not move the total: each one found its pair.

2

The most likely reasons

Ranked by how often they show up this month. Pick one to see where it breaks.

  1. 1Timing

    9
  2. 2HubSpot hygiene

    5
  3. 3A close is not always a partner sale

    4
  4. 4Tracking lost

    4
  5. 5Reversals

    4
3

What catches it on day one

One check for each rhythm of the month, each with an owner.

  1. When a deal is created

    It must carry a partner reference and a partner status. Still empty after 24 hours, its owner gets a task.

  2. Every morning

    Yesterday's closes against the platform's report, record by record.

    • 6

      Closed deals with no partner Sub ID

      Red
    • 2

      One Sub ID on two deals

      Red
    • 4

      Closed deals with no partner event

      Red
    • 3

      Approved conversions with no deal

      Red
    • 7

      Pending conversions

      Amber
    • 4

      Reversed conversions

      Amber
    • 2

      Closes that land next month

      Amber

    A preview: the full board is the Morning Health Check.

  3. On the 1st of the month

    The month closes with one summary, and an alert for any defect.

    September: 120 closes

    • Matched97
    • Pending, reversed or next month13
    • Sub ID lost, paired by time4
    • Duplicate or no partner event6

    10 of 120 closes are defects (8.3%): any defect alerts RevOps, so each one gets a task.

    Plus 3 approved events with no deal, listed for RevOps.

  4. Every week

    The top causes and their trend, to fix the source, not the symptom.

  5. Always

    One SOP with an owner and a deadline, so anyone runs it the same way.

4

Go deeper

The same data from three angles, and every record behind the numbers.

Exceptions (26)

  • Sub ID lost, pair foundD-1009Xero · closed 2026-09-03 · Closer A · community

    No Sub ID on the deal. Paired by partner and time with approved event E-0010, 7.8 h apart.

    Sub ID: none

  • No partner eventD-1014Tide · closed 2026-09-05 · Closer C · content

    The Sub ID has no partner event.

    Sub ID: ref_2abe0a9e

  • No partner eventD-1029Tide · closed 2026-09-08 · Closer D · community

    No Sub ID, and no unmatched approved Tide event within 72 h.

    Sub ID: none

  • No partner eventD-1035Wix · closed 2026-09-11 · Closer A · events

    The Sub ID has no partner event.

    Sub ID: ref_04db933f

  • Sub ID lost, pair foundD-1041monday.com · closed 2026-09-12 · Closer B · content

    No Sub ID on the deal. Paired by partner and time with approved event E-0043, 18.6 h apart.

    Sub ID: none

  • ReversedD-1043Xero · closed 2026-09-12 · Closer D · community

    Event E-0041 was reversed, so no payout. Ask the partner for the reason.

    Sub ID: ref_bb4d4592

  • ReversedD-1056monday.com · closed 2026-09-15 · Closer D · community

    Event E-0055 was reversed, so no payout. Ask the partner for the reason.

    Sub ID: ref_47a69c3a

  • No partner eventD-1060Xero · closed 2026-09-17 · Closer A · ads

    No Sub ID, and no unmatched approved Xero event within 72 h.

    Sub ID: none

  • ReversedD-1066Wix · closed 2026-09-18 · Closer D · events

    Event E-0067 was reversed, so no payout. Ask the partner for the reason.

    Sub ID: ref_198ac5e4

  • Duplicate dealD-1070Wix · closed 2026-09-18 · Closer B · community

    Same Sub ID as D-1069, closed 2026-09-18. HubSpot counts one close twice.

    Sub ID: ref_b505e8e8

  • ReversedD-1071Wix · closed 2026-09-19 · Closer B · ads

    Event E-0068 was reversed, so no payout. Ask the partner for the reason.

    Sub ID: ref_49f8f513

  • Duplicate dealD-1079Xero · closed 2026-09-20 · Closer C · ads

    Same Sub ID as D-1078, closed 2026-09-20. HubSpot counts one close twice.

    Sub ID: ref_b8ca4d95

  • Sub ID lost, pair foundD-1082Wix · closed 2026-09-21 · Closer C · community

    No Sub ID on the deal. Paired by partner and time with approved event E-0078, 4.7 h apart.

    Sub ID: none

  • PendingD-1090monday.com · closed 2026-09-22 · Closer A · content

    Event E-0085 is still pending. It counts once the partner approves it.

    Sub ID: ref_0dab0416

  • PendingD-1095Tide · closed 2026-09-23 · Closer A · content

    Event E-0090 is still pending. It counts once the partner approves it.

    Sub ID: ref_22aeec3b

  • PendingD-1096Wix · closed 2026-09-23 · Closer D · events

    Event E-0092 is still pending. It counts once the partner approves it.

    Sub ID: ref_b45ae1b0

  • PendingD-1098Xero · closed 2026-09-23 · Closer A · community

    Event E-0093 is still pending. It counts once the partner approves it.

    Sub ID: ref_818796ea

  • PendingD-1102monday.com · closed 2026-09-25 · Closer C · ads

    Event E-0101 is still pending. It counts once the partner approves it.

    Sub ID: ref_bcdd6df6

  • PendingD-1106Xero · closed 2026-09-26 · Closer A · content

    Event E-0106 is still pending. It counts once the partner approves it.

    Sub ID: ref_5eb2019c

  • Sub ID lost, pair foundD-1108monday.com · closed 2026-09-26 · Closer C · events

    No Sub ID on the deal. Paired by partner and time with approved event E-0103, 10.5 h apart.

    Sub ID: none

  • PendingD-1112Tide · closed 2026-09-26 · Closer A · content

    Event E-0109 is still pending. It counts once the partner approves it.

    Sub ID: ref_6c74d241

  • Lands next monthD-1119Wix · closed 2026-09-29 · Closer C · community

    Closed 2026-09-29, but event E-0116 is dated 2026-10-01. It lands in the next month's report.

    Sub ID: ref_476d3255

  • Lands next monthD-1120Wix · closed 2026-09-30 · Closer A · events

    Closed 2026-09-30, but event E-0117 is dated 2026-10-01. It lands in the next month's report.

    Sub ID: ref_f4e40590

  • Conversion without a dealE-0008Wix · event 2026-09-03 · approved · $75

    No deal carries this Sub ID, and no deal without one is within 72 h.

    Sub ID: ref_710a5740

  • Conversion without a dealE-0025Wix · event 2026-09-07 · approved · $50

    No deal carries this Sub ID, and no deal without one is within 72 h.

    Sub ID: ref_ac861eba

  • Conversion without a dealE-0097Xero · event 2026-09-25 · approved · $100

    No deal carries this Sub ID, and no deal without one is within 72 h.

    Sub ID: ref_684dde18

Partner by partner

Partner by partner

Deals Approved

  • WixImpact42 deals37 approvedgap 5
  • XeroPartnerStack34 deals30 approvedgap 4
  • monday.comPartnerStack29 deals26 approvedgap 3
  • TideImpact15 deals11 approvedgap 4

How the engine works

  1. 1Normalize Sub IDs and flag duplicates: the earliest close keeps the Sub ID.
  2. 2Keep the month: deals by close date, partner events by action date, both read as UTC.
  3. 3Match by Sub ID and classify by the event's status: approved, pending or reversed.
  4. 4For deals with no Sub ID, pair with an unmatched approved event of the same partner within 72 hours, closest first and one to one.
  5. 5Spot the month boundary: closes in the last 2 days of the month whose event falls in the first 2 days of the next.
  6. 6Deals still without an event have no partner event.
  7. 7Events still without a deal are conversions without a deal.
  8. 8Summarize: totals, the bridge, the causes and the exceptions.

Get the data, or bring your own

Or run the same engine on your own export. Files are read in this browser tab and never uploaded. Partners must be Wix, Xero, monday.com or Tide, dates are ISO 8601 (read as UTC), and a semicolon works as a delimiter.

Columns: dealId, closedAt, partner (optional: founderRef, closer, partnerClickId, source)

Columns: eventId, clickId, partner, actionDate, status (optional: payoutUsd)