Google Ads API connection
Connect a Google Ads account with OAuth to upload conversions every 15 minutes (with enhanced conversions), import campaign costs and push the account tracking template.
Last updated 5 min read
On this page
The Google Ads API connection lets TrackCrown talk to Google Ads directly:
- Conversion uploads — approved conversions with a
gclid,gbraidorwbraidare uploaded every 15 minutes (UploadClickConversions, partial failures allowed), optionally with enhanced conversions; - Cost import — campaign spend per day, for ROAS and net profit;
- Template push — set the account-level tracking template from the panel.
It is on Integrations → Google Ads API (/app/integrations?) and needs the Admin role. If you
cannot use the API, offline conversion feeds do the conversion part
without it; both can run side by side.
Platform setup (once per installation)#
The OAuth client and developer token are shared by every workspace. A platform admin enters them on Ad platform
apps (/admin/integrations), card Google Ads API:
Register this redirect URI on the OAuth client:
https://app.trackcrown.com/api/app/gads/oauth/callbackUntil this is done, workspaces see Google Ads API is not set up on this installation.
Connect a Google Ads account#
- Open Integrations → Google Ads API and click Connect Google Ads.
- Sign in with a Google account that can access the Google Ads account and approve access (scope
https://www.googleapis.com/auth/adwords, plus your e-mail address). - Back in TrackCrown, under Google Ads account, click Load my accounts and pick the Customer ID — or type
it as
123-456-7890. - If access goes through a manager account, enter Manager (MCC) ID.
- Click Use this account.
The status card shows Google account, Connected, Last upload run and Cost sync. The refresh token is stored encrypted.
Upload settings#
Under Upload settings:
Click Save settings.
Map conversion actions#
- In Google Ads, create conversion actions of type Import → clicks (Track conversions from clicks).
- Under Conversion actions click Load from Google Ads to list the enabled actions of the account.
- Add mapping for each offer event: Offer, Event, Conversion action (or paste the conversion action ID). Up to 50 mappings.
- Click Save mappings.
Only mapped offer + event combinations are uploaded.
What is uploaded#
Every 15 minutes, for each connected workspace with mappings, the worker selects conversions that:
- belong to a mapped offer and event;
- are approved (or pending, when included) and not duplicates;
- carry a Google click identifier —
gclid, elsegbraid, elsewbraid; - are at most 90 days old;
- were not uploaded to that conversion action yet.
Each conversion is sent with:
Enhanced conversions#
The e-mail comes from the postback parameter em, else from email=, and the phone from phone or ph. Plain
values are normalised (trimmed, lower-cased; phone digits only, at least 6) and SHA-256 hashed; values that already
are 64-character hex hashes are sent as they are.
email= is never stored in clear: TrackCrown keeps only its normalised SHA-256 hash (also used for e-mail ownership
attribution), and the uploader sends that hash. Both em= and email= work for enhanced conversions; when both are
sent, em wins.
https://trackcrown.com/pb? click_id=CLICKID &event=sale &amount=49.90 &txid=ORDER-1001 &em=jane%40example.com &ph=%2B14155550100 &token=TOKENUpload log#
Every conversion × action gets one row in the Upload log (on this tab and on Google Ads → API uploads). The header counts the last 30 days: uploaded, failed, skipped.
Failed rows are retried up to 3 times, an hour apart.
Push the tracking template#
Push the tracking template sets the account-level tracking template in Google Ads (CustomerService.MutateCustomer).
- Build a template on the Tracking template tab (link Build a template).
- Paste it into the box and click Push to Google Ads.
Only templates on a certified tracking domain that pass every linter check are accepted; otherwise the push is refused with the first error, e.g. "The template is not accepted: … is not yet certified by Google". Lower-level templates in Google Ads still override the account template.
Cost import#
With Import campaign costs on, yesterday and today (workspace time zone) are imported every 3 hours per campaign: cost in the account currency, impressions and clicks. Results appear on Integrations → Ad costs & ROAS, where the Google Ads tile reads connected. See Ad costs & ROAS.
Pause, reconnect, disconnect#
- Pause uploads / Resume uploads — stops and restarts uploads without losing settings.
- Reconnect — runs the Google consent again (for example after access was revoked).
- Disconnect — stops uploads and cost imports and deletes the stored refresh token. The upload log is kept. Revoke the app in your Google account too if you no longer use it.