Conversion UploaderSign in
New North Digital · Offline conversions

Bring offline revenue back into Google Ads

We upload your CRM, POS and warehouse conversions to Google Ads and GA4, then reconcile every batch so you see exactly what Google accepted, rejected, and silently ignored. The part every other uploader hides.

Book a setup call See how it works
GDPR & DMA compliantSHA-256 hashed · EEA consent-gated · no raw PII in transit
7 sources
Sheet · BQ · Exact · Shopify · Lightspeed · webhook · CSV
Ads · GA4 · Match
conversions + Customer Match, one upload
SHA-256
hashed · EEA consent-gated
100%
of rejections explained, with a fix
The difference

Most setups fire and forget. We tell you what landed.

Send a batch to Google and you never learn that a third of it bounced on a formatting error or an expired click id. We reconcile every upload: sent versus accepted versus rejected, with the reason and a plain-language fix for each. That feedback loop is the whole point.

What you get

Built for agencies running real client data

Any source, one pipeline

A Sheet, a BigQuery query, a CRM or site webhook, a CSV, or a direct Exact Online / Shopify / Lightspeed connection. Map the fields once (or auto-detect them) and every source runs through the same normalize, dedupe and consent checks.

SheetsBigQueryWebhookExactShopifyLightspeed

Consent-safe by default

EEA consent is enforced per row, and email and phone are hashed (SHA-256) before anything leaves. Nothing is sent without ad_user_data granted. No raw PII in transit.

Reconciliation you can act on

Per-batch accepted, rejected and processing counts, grouped rejection reasons, and a specific fix for each. Plus an email alert when a client's match rate drops.

How it works

Three steps, then it runs itself

01
Connect your source

Point it at a Sheet, BigQuery, a CRM webhook, Exact, Shopify or Lightspeed, and map the conversion fields. For a webhook we hand the developer a ready-to-paste spec and a live test page.

02
We upload to Google

Conversions go to Google Ads and GA4 on a schedule, consent-checked and deduped by transaction id, so nothing double-counts.

03
You see the truth

Every batch comes back reconciled: what was accepted, what was rejected and why, and what to change to lift the match rate.

Reconciliation · what to fix88 rejected this batch

The detail no other uploader hands back: every rejection, grouped by reason, with a plain fix.

INVALID_GCLID · 64
Click id missing or older than 90 days — capture the gclid at the lead form and store it on the row.
UNPARSEABLE_EMAIL · 18
Send the raw email — we hash it server-side, so don't pre-hash it.
PARTIAL · ad_personalization ignored · 6
Accepted, but personalization consent wasn't granted for these rows.

Running Google Ads on offline conversions?

We will set it up on your accounts and run it. You get the conversions back in Ads and the reconciliation to prove it.

Get in touch