📈Google Ads Integration
Push offline conversions from your Ring Tonic funnel back to Google Ads so Smart Bidding actually knows which clicks turn into customers. When a lead in Ring Tonic reaches a mapped stage (e.g. Won), Ring Tonic uploads a conversion to your chosen Google Ads conversion action — with hashed identifiers, the originating click ID, and the deal value.

What This Solves
Without this integration, Google Ads optimizes toward shallow signals (clicks, form submits) because it has no idea which submissions became paying customers. With it, Google sees the full funnel:
Net effect: same ad budget, more closed deals, lower cost per closed customer.
Prerequisites
Before connecting, make sure your Google Ads account has all of these:
Customer data terms accepted
Google Ads → Tools → Conversions → Settings → Customer data terms — only an Admin on the account can accept
Enhanced conversions for leads enabled
Google Ads → Tools → Conversions → Settings → Enhanced conversions for leads — toggle on
At least one lead-type conversion action
Google Ads → Tools → Conversions → Goals — categories like "Submit lead form", "Phone call lead", "Qualified lead"
Admin or Standard access for the Google user connecting
Google Ads → Tools → Admin → Access and security
Connecting Your Google Ads Account
Start the OAuth Flow
Click Connect. You'll be redirected to Google's consent screen, signed in with the Google account you want to grant access from.
Review the requested permission:
See, edit, create, and delete your Google Ads accounts and data.
This is the standard adwords scope — required for uploading conversions. We don't request any other Google scopes.
Click Continue to authorize.

Pick an Account
Ring Tonic lists every Google Ads customer the signed-in user can access. Manager accounts are tagged [MCC], and sub-customers reached through a manager show the manager ID in the row.
Pick the customer account you want to bind to this workspace, then click Bind account.

Health Check Runs Automatically
The moment you bind, Ring Tonic queries Google to confirm the account is ready for uploads. The result appears on the integration page — see the Health Check section below for what each status means.
Health Check
The health check verifies that the connected account satisfies Google's prerequisites for Enhanced Conversions for Leads. It runs:
Immediately after Bind account
When you click Re-check on the integration page
Daily at midnight UTC (background job)
Just before any upload, if the cached result is stale (>36h)
Ok
Terms accepted, ECL enabled. Uploads will go through.
Nothing — you're ready to create mappings
TermsNotAccepted
Customer data terms haven't been accepted on this Google Ads account
An Admin on the Google Ads account must accept terms at Tools → Conversions → Settings → Customer data terms
EclDisabled
Enhanced conversions for leads is off
An Admin must toggle it on at Tools → Conversions → Settings → Enhanced conversions for leads
Error
Google API call failed (developer token issue, account suspended, network blip)
Click Re-check after a few minutes. If it persists, see Common Issues
Default Consent
Google's Consent Mode requires you to send a consent signal for every conversion upload. Ring Tonic resolves consent per upload using this priority:
If neither the form nor the visitor session carries an explicit consent value, Ring Tonic falls back to the workspace defaults set on the integration page. (An Unspecified signal from a form or pageview is treated as "no signal" — only an explicit Granted / Denied overrides these defaults.)

Ad user data
Whether Google can use this conversion to associate with the user's ad interactions
Granted if your privacy policy + cookie banner cover ad measurement
Ad personalization
Whether Google can use this conversion for personalized advertising
Denied unless you explicitly collect consent for personalization
Enhanced Conversions: Name and Address
Email and phone aren't the only ways Google can match a lead back to a click. Google can also match on the lead's name and mailing address. Sending these extra details raises your match rate — more of your leads get tied to the click that produced them — which gives Smart Bidding a cleaner signal. It's optional, and everything is hashed before it leaves Ring Tonic.

Where the data comes from:
First and last name are derived automatically from the contact's name — no setup needed.
Street, city, state/region, postal code, and country come from your workspace custom fields. You choose which custom field feeds each component.
Capture the details on your forms
Create custom fields for the address details you collect (for example zip and country) and capture them on your lead forms. See Form Submissions for how form inputs map to custom fields.
Map each component
On Settings → Google Ads, open the Enhanced conversions: name & address section. For each component — Street address, City, State / region, Postal code, Country — pick the custom field that holds that value. Leave anything you don't collect set to — not mapped —.
Only text and single-select custom fields appear in the dropdowns, since address values need to be plain values.
Click Save address mapping.
Mapping Stages to Conversion Actions
A mapping says: "When a contact in this workspace reaches stage X, upload a conversion to this Google Ads conversion action." Open them from the integration page via Configure mappings (breadcrumb: Settings → Google Ads → Mappings).
Pick a Stage
The dropdown shows every Ring Tonic funnel stage that's eligible for upload. new is excluded because it's the entry point — only progress through the funnel triggers uploads.
Common picks:
Qualified — lead has been validated by sales
Appointment booked — committed buying intent
Won — the deal closed for actual revenue
Form Submitted: Every Submission or First Touch
The Form Submitted stage has two extra options that no other stage has, because a single lead can submit your forms more than once.

Upload every form submission (on by default) — upload a conversion for every form submission, including repeat submissions from a contact you already know. With it off, only a lead's first form submission uploads.
Repeat submissions action (optional) — send repeat submissions to a different Google Ads conversion action than first-time submissions. Leave it on Same as first-time to send both to the same action. This lets you value a returning lead differently from a brand-new one.
What Gets Uploaded
Per upload, Ring Tonic sends to Google Ads:
Hashed user identifiers — SHA-256 of normalized email and phone (lowercased, Gmail dot/+ canonicalization, E.164 phone). Required by ECL — at least one must be present, otherwise the upload skips with
skipped_no_identifiers.Hashed name & address (optional) — when you've set up Enhanced Conversions: Name & Address, the contact's name and mapped address are also hashed and sent to raise match rate. This is additive — email or phone is still required.
Click IDs —
gclid/gbraid/wbraidif captured by the tracking script when the visitor arrived. Strengthens matching.Conversion action resource — the one you mapped to the stage.
Value + currency — from mapping or
deal_value.Conversion time — when the stage transition happened.
Consent flags —
ad_user_data,ad_personalization.Order ID —
rt:{workspace}:{contact}:{mapping}:{event}— Ring Tonic's deduplication key. Re-running the same event won't double-count in Google Ads.
Everything that identifies the lead is hashed before it leaves Ring Tonic — Google never sees a raw email, phone, name, or street address. We do not send: transcripts, notes, campaign data, or any custom fields other than the address components you explicitly mapped for enhanced conversions.
Counting Repeat Conversions: "One" vs "Every"
When you upload every form submission, how those repeats are counted is controlled inside Google Ads — not Ring Tonic. Each Google Ads conversion action has a Count setting (Google Ads → Goals → Conversions → your action → Count):
One
Counts at most one conversion per ad click
Lead generation, where only unique leads matter. Google de-duplicates repeat submissions from the same click for you — even with "Upload every form submission" on.
Every
Counts every upload
When each submission has its own value (quotes, orders). Pair it with a separate Repeat submissions action to bid differently on first-time vs. returning leads.
Calls from Google Ads Call Assets
If you run call assets (or call-only ads), Google shows a temporary Google forwarding number on your ad instead of your real number. A customer taps it, Google connects the call through to your Ring Tonic tracking number, and the call arrives — but the caller never visited your website.
That means there's no click ID and no visitor session to match on, so the lead and click uploads described above can't attribute the call. Google's answer for exactly this case is imported call conversions: you send the caller's number and the time the call started, and Google matches that pair against its own record of the forwarding-number call.
Ring Tonic supports this as a separate upload path, mapped and reported alongside your lead and click conversions.
Before You Start
Call reporting turned on
Google Ads → Tools → Conversions → Settings → Call reporting — without it Google never assigns a forwarding number
A call asset pointing at your tracking number
Google Ads → your campaign → Assets → Call
A conversion action for imported calls
Google Ads → Goals → Conversions → New conversion action → Import → Conversions from calls
A static number campaign in Ring Tonic
Ring Tonic → Campaigns — see Campaigns
Setting It Up
Tell Ring Tonic the campaign receives forwarded calls
Open the static campaign in Ring Tonic and click Edit. In the Google Ads Call Assets card, tick This number receives calls forwarded from a Google Ads call asset, then click Update Campaign.
This is a deliberate opt-in. Ring Tonic can't tell from an incoming call whether it came through a forwarding number, so without the toggle it would attempt an upload for every call to every static number — including billboard and print calls that Google has no record of.

Map stages to your call conversion action
Go to Settings → Google Ads → Configure mappings. Below the lead and click table you'll find Call conversions (Google call assets).
Pick the stage that should report a call conversion — Qualified is the usual choice — and select your imported-call action. Only conversion actions built for imported calls appear here, so you can't accidentally point a call mapping at a click action.

What Gets Uploaded
Imported call conversions carry far less than a lead upload, because Google matches on the call itself rather than on the person:
Caller's number and call start time — the pair Google matches against its forwarding-number records
Conversion action — the one you mapped to the stage
Value and currency — from the mapping or the contact's deal value
Conversion time — when the stage transition happened
Consent signal — the ad user data signal, resolved exactly as it is for lead uploads
No email, phone hashes, name, or address is sent — this path has no use for them. The caller's number is never stored in the upload log either; you'll see it only on the call record itself, where it already lives.
Timing: Why a Call Conversion Isn't Instant
Google needs several hours to index a forwarding-number call before it can be matched. Ring Tonic handles this for you.
If an upload arrives before Google is ready, the attempt is recorded as Pending with the reason Too recent call, and Ring Tonic automatically retries after 6 hours, then after 12. Nothing is lost and you don't need to do anything.
Two Important Behaviors
Health Requirements Are Different
The two Google Ads prerequisites for lead uploads — customer data terms and enhanced conversions for leads — exist because those uploads contain customer details. Imported call conversions don't, so those two requirements don't apply here.
If your health check shows TermsNotAccepted or EclDisabled, your lead and click mappings are blocked but your call mappings keep working normally. The banners on the integration page say so.
Call mappings do still need a connection that has completed a health check successfully, because that check is also how Ring Tonic learns which account should receive your conversions.
Viewing Upload Attempts
The Recent upload attempts section at the bottom of Settings → Google Ads lists every conversion upload Ring Tonic has attempted, with the result and a sanitized payload (no raw PII). Each row shows the status, contact, funnel event, value, which identifiers were sent (email / phone / address), any click IDs, and the resolved consent signals.
A Type column marks each attempt as Clicks or Calls, so you can tell lead uploads apart from imported call conversions at a glance. Use Filters → Type to show only one kind.

Success
Google accepted the conversion. It'll appear in your Google Ads account's conversions reporting within ~3 hours.
Failed
Google rejected the call. See error_code + error_message in the row for the specific reason; transient errors are retried automatically up to 3 times with exponential backoff (60s, 5min, 30min)
Skipped — duplicate
A successful upload for the same (event, conversion action) already exists. Ring Tonic prevents double-counting
Skipped — no identifiers
Contact has neither email nor phone, so we can't satisfy ECL's identifier requirement
Skipped — consent denied
The resolved ad_user_data consent was Denied, so the upload was suppressed per Consent Mode policy
Skipped — no integration
The workspace's Google Ads integration was disconnected between dispatch and execution
Skipped — health check failed
Health was non-Ok at execution time
Skipped — mapping disabled
The mapping was toggled off or deleted between dispatch and execution
Skipped — mapping changed
The mapping was repointed at a different conversion action — Ring Tonic refuses to silently redirect the upload
Skipped — plan feature revoked
The workspace owner's plan no longer includes Google Ads uploads (job was queued before downgrade)
These statuses appear only on imported call conversions:
Pending — too recent call
Google hasn't finished indexing the call yet. Ring Tonic retries automatically after 6 hours, then after 12 — no action needed
Failed — call not found
Google has no forwarding-number record matching this caller and time. Expected for calls that didn't come from an ad; see Common Issues if it's every call
Skipped — caller ID unavailable
The call arrived withheld, blocked, or with an unusable number. There's nothing to match on, so no upload is attempted
Skipped — not configured for calls
The campaign is marked as receiving forwarded calls, but no call mapping exists for this stage
Scroll the table right to reveal the sanitized Request and Response payload columns — useful for debugging integration issues with your Google Ads admin. Use Filters to narrow by status (e.g. show only Failed) and Columns to choose what's visible.
Common Issues
Disconnecting
Click Disconnect on the integration page. Ring Tonic immediately:
Clears the encrypted refresh token from the workspace
Disables all mappings for the workspace (they're kept on disk so you can re-enable after re-connect, but they won't fire while disconnected)
Stops dispatching new upload jobs
In-flight upload jobs that were queued before disconnect will skip with skipped_no_integration when they run.
To fully revoke Ring Tonic's access on Google's side, go to myaccount.google.com/permissions and remove Ring Tonic from the list.
Plan Requirements
Google Ads uploads are available on Pro and Agency plans. If your workspace owner's plan changes mid-flight, any queued upload jobs are evaluated against the current plan at execution time:
Plan retained or upgraded → uploads proceed as normal
Plan downgraded → jobs skip with
skipped_plan_feature_revokedand the integration stays connected (no data loss; re-upgrade to resume)
Common Questions
Related Guides
Contacts — the funnel view that drives stage transitions
Form Submissions — how Ring Tonic captures the original lead and its click ID
CRM Postback API — push external events that advance the funnel (and trigger Google Ads uploads)
How to Ensure 100% Attribution Accuracy — what the tracking script needs to capture for ECL to work
Last updated



