Every RFQ → Quote → Order conversion from the CRM, matched to its ad click and pushed to Google Ads + GA4 — with a live count of what uploaded, what didn't, and why.
Conversions uploaded · last 30 days
PHASE 1Last run
Why 87 rows didn't import
the answer the spreadsheet never gaveThe per-record feed that replaces the export-and-diff. Every RFI/order ID, its upload status, the match key, value, and — when it fails — exactly why.
| RFI / Order ID | Date | Stage | Status | Match key | Value | Detail |
|---|---|---|---|---|---|---|
| RFI-10486 | Jun 22 | Order | Uploaded | gclid | $18,400 | matched · deterministic |
| RFI-10485 | Jun 22 | Quote | Uploaded | ECL | $4,250 | hashed email · probabilistic |
| RFI-10484 | Jun 22 | Quote | Failed | none | $2,100 | no gclid — missing UTM on landing page |
| RFI-10481 | Jun 21 | Order | Failed | gclid | $9,800 | EXPIRED_EVENT — click older than the action window |
| RFI-10479 | Jun 21 | Quote | Uploaded | gclid | $3,600 | matched · deterministic |
| RFI-10477 | Jun 21 | Quote | Bing | msclkid | $1,150 | routed to Microsoft leg · Phase 2 |
| RFI-10472 | Jun 20 | Order | Uploaded | ECL | $22,750 | hashed phone · probabilistic |
| RFI-10468 | Jun 20 | Quote | Uploaded | gclid | $5,900 | matched · deterministic |
How many converted website RFQs we can actually tie back to an ad click. gclid is exact (~100%); Enhanced Conversions for Leads adds hashed email/phone — submittable, matched probabilistically (~30–70%).
Quotes · last 90 days
Orders · last 90 days
Website vs total RFQs
always compare platforms to website, never totalCounts will never match exactly — ad platforms are modeled and click-dated, GA4 is observed and event-dated. The job is to explain the divergence, not treat it as a bug.
Google Ads ↔ GA4 · website RFQs
PHASE 1| Date | CRM (website) | Google Ads | GA4 | Δ Ads | Status |
|---|---|---|---|---|---|
| Jun 18 | 214 | 208 | 211 | −6 | reconciled |
| Jun 19 | 198 | 191 | 196 | −7 | reconciled |
| Jun 20 | 231 | 205 | 224 | −26 | investigate |
| Jun 21 | — | 177 | — | — | unsettled |
| Jun 22 | — | 96 | — | — | unsettled |
CRM ↔ GA4 ↔ Google Ads ↔ Microsoft
PHASE 2Every scheduled run, idempotent and cursor-based — safely re-runnable. Pick a run to see each stage and its per-stage counts.
| Run | Pulled | Uploaded | Failed | Status |
|---|---|---|---|---|
| Jun 22 · 06:00 | 312 | 196 | 2 | complete |
| Jun 21 · 06:00 | 288 | 181 | 4 | complete |
| Jun 20 · 06:00 | 341 | 214 | 0 | complete |
| Jun 19 · 06:00 | 276 | 172 | 1 | complete |
Run · Jun 22 06:00
completeThe pipeline becomes an agent that runs itself, that you can ask for status in plain language, and that escalates to a human gate when a decision is above its pay grade. You supervise by exception instead of watching dashboards.
Ask the agent
runningAgent status
Human gates · awaiting decision
the agent stops where it shouldn't decide aloneThe knobs your team owns — conversion mapping, match windows, the unsettled-day cutoff, value handling, and who gets alerted.