๐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.

This integration uses Google Ads' Enhanced Conversions for Leads (ECL). We only ever upload conversions โ we never touch your campaigns, ad groups, bids, or budgets.
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
Customer data terms acceptance is a Google-side gate. If the account isn't set up, Ring Tonic can still connect โ but the health check will show TermsNotAccepted and you won't be able to create mappings until the Admin accepts the terms inside Google Ads.
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.

One Google Ads account per workspace. If you manage multiple advertisers, each one should have its own Ring Tonic workspace with its own Google Ads binding. This keeps mappings and upload attempts cleanly scoped.
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
Mappings are gated by health. While health is anything other than Ok, the mapping editor is disabled and any pending upload jobs skip with skipped_health_check_failed. As soon as health goes green and you click Re-check, future uploads resume normally.
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
Whatever the resolved ad_user_data value is, if it's Denied, Ring Tonic skips the upload entirely (records skipped_consent_denied). The conversion never reaches Google, in line with Consent Mode policy.
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
Pick a Conversion Action
Ring Tonic queries Google Ads and lists every lead-category conversion action in the connected account. Pick the one that should receive uploads for the chosen stage.

Use distinct conversion actions per stage. Creating one action for "Qualified Lead" and another for "Closed Deal" lets Google attribute different value to each step in the funnel. Mapping multiple stages to the same action collapses that signal.
Set Value and Currency (Optional)
If you've set a default value on the conversion action in Google Ads, leave this empty and Ring Tonic uses the contact's deal_value. If you want to override, enter a fixed value + ISO 4217 currency code.
Value semantics. For dynamic per-deal values, leave the mapping value blank and make sure your funnel sets deal_value (via form value rules, the Contacts UI, or the CRM Postback API). Ring Tonic will use that. For flat-value events (e.g. "every qualified lead = $50"), enter the value here.
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.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.
We do not send: lead names, transcripts, notes, custom fields, campaign data, or any non-conversion business data.
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), any click IDs, and the resolved consent signals.

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)
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
"TermsNotAccepted" โ health check keeps showing this
The Google Ads account hasn't accepted the customer data terms required for Enhanced Conversions for Leads. This is a Google-side gate that can only be unblocked by an Admin on the Google Ads account:
In Google Ads, go to Tools โ Conversions โ Settings
Expand Customer data terms
Read the policies, tick I have read and accept the terms on behalf of my company, save
If the checkbox is greyed out with the message "Customer data terms for this account must be accepted by an Administrator", the currently signed-in Google user doesn't have Admin role on this account. Ask the account owner to either accept the terms themselves or grant you Admin access at Tools โ Admin โ Access and security.
After the terms are accepted, return to Ring Tonic and click Re-check โ the status should flip to Ok.
"EclDisabled" โ Enhanced Conversions for Leads is off
In Google Ads, go to Tools โ Conversions โ Settings โ Enhanced conversions for leads and toggle it on. You'll need to choose between the Google tag and Google Tag Manager implementation paths โ pick either, then come back to Ring Tonic and click Re-check.
You only need to enable ECL once per Google Ads account. Ring Tonic itself doesn't require any tag installation โ we send identifiers via the API, not via a page tag.
"DEVELOPER_TOKEN_NOT_APPROVED" appears in upload errors
This means Ring Tonic's developer token is not yet approved by Google for production use. Either:
Ring Tonic is currently using a Test Account token โ it only works against Google Ads test customer IDs (sandbox accounts), not real accounts. This is the initial state for new Ring Tonic installations; we'll roll out approved tokens during onboarding.
Or the developer token is pending Basic Access review.
This is a Ring Tonic ops issue, not something you can fix on your side. Contact support and we'll confirm the developer-token state for your workspace.
"CUSTOMER_NOT_ENABLED" appears in upload errors
The Google Ads account being uploaded to is cancelled, suspended, or otherwise disabled on Google's side. Common causes:
Billing failed and the account auto-cancelled
Google suspended the account for a policy violation
The account is brand new and hasn't completed signup yet
Resolve the underlying Google Ads account state (billing, policy review, signup completion). Once the account is back to Enabled in Google Ads, click Re-check in Ring Tonic.
"INVALID_USER_IDENTIFIER" appears in upload errors
Google rejected the hashed email or phone we sent. Almost always because the source contact has a malformed value โ e.g. a non-E.164 phone like (555) 1234 instead of +15551234567, or a missing TLD on the email.
Open the contact, fix the bad identifier, advance the stage again. The next upload will succeed.
Uploads succeed but the conversion never appears in Google Ads reports
Two things to check:
Wait at least 3 hours โ Google Ads has a delay between conversion upload acceptance and report visibility. Some attribution refresh windows take up to 24 hours.
Check the conversion action's "Include in 'Conversions'" toggle in Google Ads. If it's off, the conversion is recorded but excluded from the headline Conversions column (and from Smart Bidding learning). This is sometimes intentional (e.g. a test conversion action) โ make sure it's on for the action your mapping points to.
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
Does Ring Tonic ever modify my Google Ads campaigns?
No. The OAuth scope we request (adwords) technically grants edit access, but Ring Tonic only calls the conversion upload and metadata read endpoints. We never touch campaigns, ad groups, ads, keywords, bids, budgets, audiences, or any account-level settings.
What's the difference between a "conversion" mapping and a Google Ads campaign goal?
A conversion action is the bucket in Google Ads that holds individual conversion events. A Ring Tonic mapping is just our pointer: "when stage X happens, push an event into conversion action Y". One conversion action can be the destination for multiple workspaces; one workspace can map several stages to different conversion actions.
Can I map multiple stages to the same conversion action?
Technically yes โ but you'll lose the per-stage signal. Smart Bidding can't tell that "Qualified Lead" and "Won" represent different funnel depths if both feed the same action. Use distinct conversion actions per stage for the best optimization signal.
What happens if a contact moves backward through the funnel?
Backward moves don't trigger uploads โ Ring Tonic only fires when a stage advances forward. The original event(s) that already uploaded stay in Google Ads (they're real history). If you need to retract a previously uploaded conversion, use Google Ads' conversion adjustments tooling directly.
How does this compare to installing the Google Ads tag on my website?
The Google Ads tag fires conversions in real time, in the browser, when a page loads (e.g. a "Thank You" page after a form submit). That captures the immediate event but tells Google nothing about what happened to the lead afterward.
Ring Tonic's integration is the offline conversion companion: it picks up after the form submit and tells Google what actually closed. Most advertisers run both โ the page tag for top-of-funnel signal, this integration for downstream value.
Are uploads encrypted in transit?
Yes. All Google Ads API calls go over HTTPS, and user identifiers (email, phone) are SHA-256 hashed before they leave Ring Tonic โ Google never sees raw PII.
How long does Ring Tonic keep my refresh token?
Until you click Disconnect or revoke access at myaccount.google.com/permissions. The token is encrypted at rest with the workspace's encryption key.
What's the daily upload limit?
Ring Tonic's developer token is approved for Basic Access (15,000 API operations per day across all workspaces). Each conversion upload counts as one operation. This ceiling is sufficient for the vast majority of workspaces โ if you're approaching it, contact support and we'll review your usage.
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
