Faruk Ur Rahman
← All posts

Send CRM sales back to Google Ads and Meta

Oct 31, 20265 min readOffline conversions · CRM
Four steps: CRM, normalise, hash, send to Google Ads and Meta

A lead fills in your form. Three weeks later, your sales team closes a $4,000 deal. Google Ads and Meta never hear about it.

To the ad platforms, that lead looks exactly like the twenty that never answered the phone. So they keep finding more people like the twenty. Offline conversion tracking fixes that by sending the real outcome back.

What gets sent

For each closed deal (or qualified lead, or booked call), you send the ad platform:

  • Who: the click ID if you have it (gclid for Google, fbc for Meta), plus hashed email and phone
  • What: the conversion name, like “Qualified lead” or “Closed deal”
  • When: the time the conversion happened, with time zone
  • How much: the deal value and currency

The part most setups get wrong: cleaning the data

Ad platforms only match a customer if the hashed email or phone is exactly what they expect. Before hashing:

  • Email: trim spaces and convert to lowercase
  • Phone: convert to E.164 format, country code included (+8801712345678, not 01712-345678)
  • Then hash with SHA-256

Skip one step and the match rate drops quietly. Nothing errors, the conversions just don't get attributed.

Automation flow from HubSpot CRM through time formatting, lowercase email, E.164 phone, hashing and Google Sheets
A HubSpot flow I built: format the time, lowercase the email, convert the phone to E.164, hash, then send. It runs every 15 minutes.

Three ways to send it

MethodGood forWatch out for
Scheduled upload (Sheets or CSV)Google Ads, small volumesSomeone forgets to upload
Automation (webhook to API)Meta CAPI, HubSpot and other CRMsNeeds monitoring when the CRM changes
Server-side GTMStores already running sGTMMore setup up front
Workflow with a webhook, a hashing step and an HTTP request to the Meta Conversions API
Webhook in, hash, POST to the Meta Conversions API. Three steps, no manual uploads.

Timing matters

Each platform only accepts conversions within a window after the click or event, so long sales cycles need checking before you build. Send conversions as soon as they happen in the CRM rather than in a monthly batch.

Short version: capture the click ID and contact details at the form, clean and hash them properly, and send the real sale back automatically. Then let the bidding learn from revenue, not form fills.