Enhanced conversions for leads let Google Ads match the offline conversions Heeet sends — qualified leads, sales-accepted opportunities, closed-won deals from your CRM — back to the ad click that generated them, using hashed first-party data (email, phone) instead of relying on the click ID alone. The result is more durable attribution and better Smart Bidding signal.
This guide walks through enabling it in your Google Ads account so that the conversions Heeet uploads are accepted and attributed.
You'll need:
UPLOAD_CLICKS). This is the action Heeet uploads against.Two prerequisites have to be true before any upload with hashed identifiers will be accepted: the Customer Data Terms must be accepted, and enhanced conversions for leads must be turned on. They're separate settings and produce separate errors, so complete both.
The status updates to Accepted. These terms apply to the entire account (or manager account) — you accept them once, not per conversion action.
If you don't see the Customer data terms option, your conversions are being tracked by a manager (MCC) account. The terms must be accepted from that manager account instead. See Working with a manager account below.

Note (2026 change): Google is combining enhanced conversions for web and leads into a single on/off setting. Google Ads now accepts user-provided data from website tags, Data Manager, and API connections at the same time, so you no longer need to pick a single implementation method. Existing users are migrated automatically. If your account already shows the unified setting, just make sure enhanced conversions is turned on.

This is the single most common reason enhanced conversions appear "enabled" but uploads still fail.
Google checks these settings against the effective conversion account — the account that actually owns and manages conversion tracking — which is not always the account you're looking at. If your conversions are tracked cross-account by a manager, the effective conversion account is the manager account.
What this means in practice:
To find the effective conversion account, run this query (Google Ads Query Language) against the account:
SELECT
customer.conversion_tracking_setting.google_ads_conversion_customer,
customer.conversion_tracking_setting.conversion_tracking_id,
customer.conversion_tracking_setting.cross_account_conversion_tracking_id,
customer.conversion_tracking_setting.conversion_tracking_status
FROM customer
The value of google_ads_conversion_customer is the effective conversion account. If it points to a different account than the one you're managing, that's where the terms and the enhanced-conversions setting must be enabled — and that's the account Heeet's uploads should target.
In the interface: the Customer Data Terms status shows Accepted, and the enhanced conversions for leads toggle is on.
Programmatically, confirm both flags on the effective conversion account:
SELECT
customer.id,
customer.conversion_tracking_setting.accepted_customer_data_terms,
customer.conversion_tracking_setting.enhanced_conversions_for_leads_enabled
FROM customer
Both accepted_customer_data_terms and enhanced_conversions_for_leads_enabled should return true. Run this against the effective conversion account identified in Step 3, not just the sub-account.
After enabling, allow time to propagate. Diagnostics and matched-conversion data can take up to 48 hours to appear, and a successful upload response does not by itself mean a conversion was matched.
Everything above prepares the Google Ads side. It doesn't, on its own, send any conversions — it tells Google Ads to accept and match them once they arrive. With Heeet, you don't upload conversions manually or maintain CSV exports: because Heeet runs natively inside Salesforce, conversions are sent to Google Ads automatically the moment your CRM conditions are met.
You configure this in Heeet with a Conversion Trigger:
For the full step-by-step, see Send offline conversions to Google Ads.
Tip: Enhanced conversions strengthen matching by adding hashed first-party data (email, phone) on top of the GCLID. Make sure the GCLID is captured and stored on the Salesforce record — if last-click GCLID can be missing, a Salesforce admin can add a formula field that falls back to the first-click GCLID so the trigger always has an identifier to send.
CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMSThe Customer Data Terms haven't been accepted on the account being checked. If you've already accepted them on one account and still see this, you're almost certainly uploading against a different account than the one where you accepted — verify the effective conversion account (Step 3) and confirm the upload's account ID matches it.
CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADSThe terms are accepted but the enhanced conversions for leads toggle is off. Complete Step 2 on the effective conversion account.
Uploads succeed but conversions aren't matchedConfirm that each conversion carries normalized, SHA-256–hashed user-provided data (email and/or phone), that the GCLID is included when available, and that the conversion action referenced is the correct UPLOAD_CLICKS action owned by the effective conversion account. Normalization matters: trim whitespace, lowercase, format phone numbers to E.164, and apply the Gmail/Googlemail local-part rules before hashing — a malformed hash fails silently.
The terms option isn't visible at allConversions are tracked by a manager account. Accept the terms from that manager account (Step 3).