Reconciliation · Ask 2

Reconciling RFQs across your systems

You asked us to reconcile the RFQ counts across the CRM, GA4, Google Ads and Microsoft Ads — say which to trust, and explain why they differ. Two questions, answered with the work shown. All on website RFQs only, settled days, against the CRM as the source of truth.

Bottom line
Which GA4 tag should we trust?
rfq_thankyoupage_w_rfqid_gtm — tracks the CRM to +2.7%
Do the ad platforms reconcile?
Yes — Google +2.1% over GA4 (modeled, expected). Microsoft's first-party check pends its API.
Microsoft Ads API isn't connected yet. We show GA4's Microsoft-Paid segment (observed), but can't pull Microsoft's platform-reported count first-party this window. Native API access is the open follow-up — it completes the Microsoft comparison; it won't change the conclusion.
Question 1
Which GA4 tag should we trust for website RFQs?
How we reached it

You run three GA4 events in parallel to test tracking methods. We compared each, day by day, against the CRM's Website RFQs — the settled source of truth — over Jun 15–24 (settled weekdays). Closest to the CRM, without over- or under-counting, wins.

CRM Websitethe truth · 1,009
ref
w_rfqid_gtmgated on valid rfq_id
+2.7%
gtmfires broadly
+6.3%
gafires broadly
+6.2%
DateCRM Webw_rfqid_gtmgtmga
Jun 15123132136136
Jun 16174179184184
Jun 17123118122122
Jun 18127132141141
Jun 199698100100
Jun 22114123129129
Jun 23132131136135
Jun 24120123125125
Total1,0091,0361,0731,072
Answer

Use rfq_thankyoupage_w_rfqid_gtm. It tracks the CRM to +2.7%; gtm (+6.3%) and ga (+6.2%) over-count because they fire on events that aren't always a valid RFQ.

Takeaway: make w_rfqid_gtm the canonical website-RFQ signal everywhere — dashboards, the offline-conversion match, alerts. Keep the other two for tracking experiments only.
A live catch (Jun 25). The two broad tags — gtm and gastopped recording at ~noon UTC on Jun 25 (a hard cliff in the hourly data), while w_rfqid_gtm kept firing and matching the CRM. That's why this comparison ends Jun 24. It points to a GTM/tag change that day worth checking — and it's the strongest case yet to standardize on w_rfqid_gtm: when the broad tags failed, it didn't.
Question 2
Do Google Ads and Microsoft Ads reconcile?
How we reached it

Each ad platform only sees its own paid clicks, so we compared each platform's reported RFQs against GA4's paid segment for that platform — like for like — over the same Jun 15–24 window. Google is a first-party refresh; Microsoft's platform count still awaits its API (below).

Google

Google Ads · RFQs625
GA4 · Google Paid612
+2.1% — Ads runs higher (modeled)

Microsoft GA4-observed · API pending

GA4 · Microsoft Paid161
Microsoft Ads · RFQspending API
no first-party delta yet · prior window +5.1%

Google Ads runs a few percent above what GA4 observed. That's expected: ad platforms are modeled and click-dated — they credit the day of the click and model unobserved conversions — while GA4 is observed and event-dated. Microsoft: we can see GA4's Microsoft-Paid segment (161), but without a Microsoft Ads API connection we can't pull its platform-reported count first-party this window — on the prior window it ran +5.1% over GA4, the same pattern. Wiring the native API completes it.

Answer

Yes — Google reconciles to GA4 within ~2% (Ads modeled, runs a touch higher). The small excess is attribution method, not lost or phantom conversions — structural and stable. Microsoft's first-party check awaits its API; the pattern is the same.

Takeaway: trust each ad platform for its own optimization (modeled is fine there), but report the true paid count from GA4 / the CRM — not the platform totals.
Which system to trust for which question
QuestionTrustWhy
How many RFQs total (incl. phone/email)?CRM · Total RFQsOnly the CRM sees non-web RFQs (~⅓ of the total).
How many website RFQs?CRM · Website RFQsSettled source of truth; the denominator.
Is web tracking healthy / which tag?GA4 · w_rfqid_gtmTracks the CRM to +2.7%; validates the signal — and it kept firing when the broad tags broke.
How is paid Google / Microsoft performing?Google Ads / Microsoft AdsModeled + click-dated; runs ~4–5% over observed — for optimization, not the true count.
What the non-web third is made of

Every comparison above is against Website RFQs for one structural reason: a large share of activity never touches the website — it arrives by phone, email, or the customer portal, and only the CRM sees it. Here's that non-web slice of converted deals (Quotes + Orders), by channel, over the 60-day window — the conversions GA4 and the ad platforms simply can't measure.

Email DirectEMD
1,640
PhonePHN
73
Phone DirectPHND
30
Email MarketingEM
13
Customer PortalCP
5
1,761 non-web converted deals in the 60-day window — overwhelmingly Email Direct · 1,631 carry consented email/phone. They have no ad click to attribute, so they're never part of the offline-conversion upload or any platform comparison — this is the structural reason "Total" always exceeds what GA4 or the ad platforms can show.
How this connects to Ask 1. The offline-conversions Marketing Worker feeds Google Ads the matched Quote/Order outcomes it can't self-attribute — closing the recoverable part of that paid gap over time. Reconciliation is how you'll watch it move.
Basis. Website RFQs only (rfq_source_id = 1) · unsettled days excluded · settled window Jun 15–24 (weekdays; ends Jun 24 — the broad tags broke Jun 25). Google Ads first-party; Microsoft's platform count pends the Microsoft Ads API. CRM = source of truth (Supabase). GA4 events via the GA4 Data API; Google Ads via the RFQs conversion action; Microsoft via GA4's paid segment + your reporting audit (native API pending). Cross-checked against your Reporting Audit sheet — same numbers, reproducible first-party (python -m fourstar.recon --reconcile). Read-only — this surface only reads and compares; it never writes.