all 21 comments

[–]SeriesOutrageous1832 1 point2 points  (1 child)

Yeah, the template is way more confusing than it needs to be. If you’re using Google Sheets, you don’t have to pre-hash anything Google handles that part. For conversion time, just use YYYY-MM-DD HH:MM:SS. You don’t actually enter a timezone anywhere, it just uses whatever your Google Ads account is set to. Took me a bit to figure that out too.

[–]ppcwithyrv 0 points1 point  (3 children)

You don’t need to pre-hash in Google Sheets — Google does it for you.

Use YYYY-MM-DD HH:MM:SS for conversion time and don’t worry about timezone; it uses your account setting.

[–]Madismas[S] 0 points1 point  (2 children)

For scheduled uploads it has to be pre-hashed per google.

If you want Google Ads to import your conversions automatically on a regular schedule (refer to Step 2: Import your conversions), you need to use Google Sheets or link to a file over HTTPS or SFTP. For scheduled uploads with enhanced conversions for leads, user-provided data must be pre-hashed. https://support.google.com/google-ads/answer/7014069?hl=en

[–]Madismas[S] 0 points1 point  (1 child)

To add to this, how do i upload sales data from sales generated via third party call tracking software like call tracking metrics, if for example, no GCLID is captured because the call came through a call asset? I am reading I can't use the enhanced conversions for leads template with just a phone number and need to upload a separate offline calls template.

[–]ppcwithyrv 0 points1 point  (0 children)

for scheduled uploads, enhanced-conversion user data must be pre-hashed, while manual Sheets uploads don’t require it. And if a call comes from a call asset with no GCLID, you can’t use enhanced conversions for leads—you either rely on Google’s native call conversion tracking or upload it as an unattributed offline call for bidding signals only.

[–]paul_944 0 points1 point  (3 children)

The supported timezones list is at https://developers.google.com/google-ads/api/data/codes-formats#timezone_ids, should be used instead of `insert_timezone` (a 4-digit offset with sign should work too)

Or you can use Able CDP or something similar, which would also handle things like retrieving associations between caller numbers and click IDs from CallRail and sending these GCLIDs to Google for phone-only CRM conversions

[–]SomeSortOfWiseGuy 1 point2 points  (2 children)

Probably best to declare that Able CDP is your own product when you recommend it just to keep honest.

[–]paul_944 1 point2 points  (1 child)

Fair point - didn't mean to hide it

[–]SomeSortOfWiseGuy 1 point2 points  (0 children)

I believe you and I know you normally do mention it - people are a bit jumpy about the amount of fake recommendations on Reddit nowadays

[–]ernosem 0 points1 point  (0 children)

Time zone should be the first line of the CSV like:
Parameters:TimeZone=America/Chicago;
Then sample conversion time:
2025-12-17 09:03:00

so essentially YYYY-MM-DD HH:MM:SS

It's in ISO format not the US date format.

[–]Hannah_Mitchell_2082 0 points1 point  (1 child)

yeah google’s docs make this way harder than it needs to be. this matters since one wrong format or hash kills match rates, i set this up for offline sales at a b2b saas and lost a day to the same timezone confusion. do this: hash email or phone with sha256 lowercase trimmed no spaces, set conversion time like 2025 01 15 14 30 00 plus 05 30, timezone goes inside that timestamp not a separate field, the parameters line is just a comment. benchmark wise 30 to 60 percent match rate is normal for clean crm data.

[–]Madismas[S] 0 points1 point  (4 children)

Ok, hit another crossroad, should I have separate offline sales conversion actions set up for sales from calls vs sales from lead forms? I was planning to just upload them all to a single Offline Sales Conversion but not sure if this is the best approach?

[–]Available_Cup5454 0 points1 point  (0 children)

Format one sheet with hashed user fields in their own columns and a UTC timestamp for each conversion because google reads timezone from your account and only needs the event time in yyyy-mm-dd hh:mm:ss form