Engagement overview

Key Requirements

Get your offline conversions into Google — and reconcile the website-RFQ numbers that never match. Here's where each stands, end to end. Read-only · zero production writes.

Ask 1Offline conversions✓ Built & validated

Your offline Quote & Order conversions into Google Ads + GA4 via the Data Manager API — with per-row "which rows didn't import" accountability. Validated, held at the gate, zero writes until you approve.

See it run
Ask 2Reconciliation✓ Done & explained

The website-RFQ numbers reconciled across CRM, Google Ads & GA4 — with a defensible explanation of why they never match: method, not lost conversions.

View reconciliation

Both run as automated pipelines, held at the gate for your approval. We operate them as your Marketing Worker — an AI-operated system that's supervised today and takes on more as it earns trust. How we work →

What changed

the same conversions — a different path to Google

Your conversions used to reach Google through a daily Google Sheet (lossy, overwritten, no record of what dropped) plus a separate GA4 call. Now one engine reads the CRM and uploads to Google Ads and GA4 together through the Data Manager API — validated, consent-filtered, per-row accountable, and held until you approve.

Before
Sheet-based import
a daily job, two disconnected legs
CRM · Supabasen8n · dailyGoogle Sheet ⚠Google Ads
GA4 · Measurement Protocol— separate
Lossy & overwritten — no record of what dropped
No per-row "didn't import" accountability
No consent filter on uploaded PII
Ads and GA4 sent by two separate legs
Now
Data Manager API · consolidated & gated
one engine, one run, both sinks
CRM · SupabaseengineData Manager APIGoogle Ads+GA4
1,722
Ads · validated
1,670
GA4 · validated
0
written — held for approval
Validated with Google — HTTP 200, nothing stored
Per-row accounted — every excluded row has a reason
Consent-filtered PII · idempotent (safe re-runs)
Zero writes until you approve go-live

Verified live connections

actual endpoints · actual access · checked on this run
System
Endpoint
Auth · scope
Access
Status
CRM · Supabase
qnypvuuumzopzslmuypy.supabase.co/rest/v1 · deals rfq_attribution_touches contacts
secret key (Bearer)
READ
200
Google Ads API
customers/2018301930 · actions 7208316397 7208513754 · recon 19546018
OAuth · adwords
READ · ATTRIBUTE
OK
Data Manager API
datamanager.googleapis.com/v1/events:ingest · validateOnly=true
OAuth · auth/datamanager
VALIDATE
200
GA4 · Measurement Protocol
google-analytics.com/debug/mp/collect · property 396581002 · G-XHNE16LLKZ
measurement_id + api_secret
VALIDATE
0 msgs
Orchestration · n8n
workflow 4 Star · offline-conversions · daily 06:00 EST · execution #5
API key + header-auth cred
RUN
success
Read & validate-only. Every call above is a read or a Google validateOnly dry-run — Google confirms it would accept the events and stores nothing. The single write step is held until you approve go-live.
See it run against your real systems
Step a live run — each call to each endpoint, with status, request id, and timing — held at the gate.
See a live run
Marketing Worker · overview · as-of 2026-06-24 · numbers + statuses from the live read-only run (validateOnly, no production writes)