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 tabRecorded on this page. All data is synthetic.
120
Closed deals in HubSpot
104
Approved conversions on the partner platforms
16
Net gap
What I check first, why the two numbers differ, and what catches it on day one.
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
| Question | HubSpot | Affiliate platform |
|---|---|---|
| What counts | A deal moved to closed won | An approved action |
| Dated by | Close date | Action date |
| Month | September, in UTC | September, in UTC |
1.2Record by record, on a shared key
| Key | You set it | Safe in a link | Comes back to a partner |
|---|---|---|---|
| Platform click IDirclickid, ps_xid | No | Yes | No |
| Founder's emailname@company.com | Yes | No | Sometimes |
| Your own referenceUse thisSub ID: sid, SubId1–3, SharedId | Yes | Yes | Yes |
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
- Closed deals in HubSpot120
- PendingTiming−7
- ReversedReversals−4
- Lands next monthTiming−2
- Duplicate dealHubSpot hygiene−2
- No partner eventA close is not always a partner sale−4
- Conversion without a dealHubSpot hygiene+3
- Approved conversions on the partner platform104
Sub ID lost, pair found (4) does not move the total: each one found its pair.
The most likely reasons
Ranked by how often they show up this month. Pick one to see where it breaks.
1Timing
92HubSpot hygiene
53A close is not always a partner sale
44Tracking lost
45Reversals
4
What catches it on day one
One check for each rhythm of the month, each with an owner.
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.
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.
- 6
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.
Every week
The top causes and their trend, to fix the source, not the symptom.
Always
One SOP with an owner and a deadline, so anyone runs it the same way.
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
- 1Normalize Sub IDs and flag duplicates: the earliest close keeps the Sub ID.
- 2Keep the month: deals by close date, partner events by action date, both read as UTC.
- 3Match by Sub ID and classify by the event's status: approved, pending or reversed.
- 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.
- 5Spot the month boundary: closes in the last 2 days of the month whose event falls in the first 2 days of the next.
- 6Deals still without an event have no partner event.
- 7Events still without a deal are conversions without a deal.
- 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)