Google Ads Connection
What you can do
- Customer Match — upload your first-party user lists to Google Ads for remarketing on Search, Display, YouTube, and Gmail.
- Enhanced Conversions for Leads — send CRM conversion data back to Google Ads to measure and attribute leads that close offline.
- Conversion Adjustment — correct or update the value of a conversion that was already reported to Google Ads.
- Store Sales Conversion — send in-store purchase events for offline conversion measurement.
Prerequisites
- A Google Ads account (standard account or Manager Account / MCC).
- The Google Ads account must be accessible by the Google user you authenticate with.
- For Customer Match: your account must be eligible for Customer Match (Google's policy requirements apply).
- For Enhanced Conversions: a Conversion Action of type "Import — Enhanced Conversions for Leads" must already exist in your Google Ads account.
Setup
- Navigate to Connections and click New Connection.
- Select Google Ads as the connection type.
- Choose how you want to connect — see Connection modes below. Most customers should use SSO mode.
- Click Authenticate with Google — you will be redirected to Google's login page. Grant the required permissions.
- After authentication, select the target Google Ads Account.
- Give the connection a name.
- Click Save.
The connection status will show Active once authentication succeeds.
Connection modes
BPP supports two ways of connecting a Google Ads account. Both modes go through the same Google sign-in flow and end up with a working connection; they differ only in whose Google Ads developer token labels the API calls. If you are unsure which to pick, choose SSO mode — it is the default.
SSO mode (recommended)
You click Connect, sign in with the Google account that already has access to the Google Ads accounts you want to use, and you are done. BPP uses its own Google Ads developer token to make API calls on your behalf, so you don't need to obtain or manage one. The account picker shows every Google Ads account your Google user can access — manager accounts and direct accounts alike.
Pick this if:
- You don't have your own Google Ads developer token and don't want to apply for one.
- You want the fastest possible onboarding, with no IDs to type in.
- You're comfortable with API calls running through BPP's shared developer token quota.
This covers the great majority of customers.
Token mode
You enter your own Google Ads developer token and your manager account ID (login_customer_id) before signing in with Google. BPP uses the developer token you provided for all subsequent API calls, so usage and rate limits count against your own Google Ads developer token rather than BPP's.
Pick this if:
- You already have an approved Google Ads developer token of your own (Basic or Standard access tier).
- Your internal policies require all third-party API calls touching your data to flow under credentials you control.
- You run high enough volume that you want quota isolation from BPP's other customers.
- You want to remain unaffected by anything that may happen to BPP's developer token standing with Google.
In token mode the account picker shows only the sub-accounts under the manager you specified. If you need to switch to a different manager later, edit the connection and update the manager account ID.
What is identical in both modes: the Google sign-in flow, the consent screen you see, the refresh token BPP stores for your connection, the way audiences and signals export to your Google Ads account, and the set of Google Ads accounts your Google user can ultimately access. The choice between modes does not change what BPP can or cannot do — only whose Google Ads developer token is used to do it.
How BPP handles PII
Google Ads requires that personal data (email, phone) is anonymised before upload. BPP does this automatically.
Email addresses are normalised and securely hashed before sending:
- Spaces trimmed from both ends.
- Converted to lowercase.
- For Gmail/Googlemail: dots removed from the local part;
+tagsuffixes removed. - Securely hashed.
Phone numbers are normalised and securely hashed before sending:
- Spaces, hyphens, and brackets removed.
- Converted to international format (e.g.,
+14155552671). - Securely hashed.
You never need to do this yourself — BPP handles it automatically. If your data already contains pre-hashed values, BPP uses them as-is.
Supported export types
| Export type | Used with | Notes |
|---|---|---|
| Customer Match | Audiences | Upload hashed email and/or phone to create remarketing lists. |
| Enhanced Conversions for Leads | Signals | Requires a Conversion Action of type "Import ECL" in Google Ads. |
| Conversion Adjustment | Signals | Requires an Order ID matching the original conversion. |
| Store Sales Conversion | Signals | For retail offline purchase attribution. |
Enhanced Conversions for Leads — How it works
Enhanced Conversions for Leads (ECL) lets you send first-party CRM data back to Google Ads to measure conversions that happen after the original ad click — for example, a lead that was submitted on your site and closed as a won deal weeks later.
Google matches the identifiers you send (hashed email, phone) against the identities of users who previously clicked your ads, and credits the conversion to the right campaign, ad group, and keyword.
What you need in Google Ads first
Before setting up a signal destination for ECL, you must create a Conversion Action of type Import — Enhanced Conversions for Leads in your Google Ads account:
- In Google Ads, go to Tools → Conversions → New Conversion Action.
- Select Import, then CRM, files, or other data sources.
- Select Track conversions from clicks.
- Complete the setup and note the Conversion Action ID — you will need this when configuring the signal destination in BPP.
What to configure in BPP
| Field | Required | What it does |
|---|---|---|
| Conversion Action ID | Yes | The numeric ID of your "Import — ECL" Conversion Action in Google Ads. |
| Google Ads Account ID | Yes | Your Google Ads customer ID (the number shown in Google Ads, without dashes). |
| Conversion Value | Yes | A formula that computes the value to report per event. Defaults to 1.0 if missing. |
| Email field | Yes | The column in your data that contains the user's email. Email is required — events without an email are skipped. |
| Phone field | No | Adding phone alongside email significantly improves match rates. |
| GCLID field | No | Google click ID captured on your site. When present, Google can match the conversion directly to the click — no identity matching needed. |
| Order ID field | No | A unique ID for the order or transaction. Prevents Google Ads from counting the same conversion twice if you re-export data. |
| Currency | No | The currency of the conversion value (e.g., EUR, USD). Defaults to your account currency. |
Tips for higher match rates
- Always provide email — it is required. Events with no email are skipped entirely.
- Add phone — having both email and phone significantly improves the number of conversions Google can attribute.
- Capture click IDs on your site — if your website stores the Google click ID (GCLID) in your CRM or data warehouse, include it. A click ID allows Google to match the conversion directly to the click without relying on identity matching at all.
- Use Order ID if there is any risk of processing the same event twice (e.g., if your pipeline re-exports overlapping date ranges).
- Check Gmail normalisation — if you pre-hash emails yourself, make sure you removed dots and
+tagsbefore hashing Gmail addresses. Otherwise Google will not match them correctly.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Low or zero attributed conversions in Google Ads | Emails were hashed without Gmail normalisation; or the Conversion Action ID is wrong. |
| Events rejected with "Conversion Action not found" | The Conversion Action does not exist or is not of type "Import — ECL". Verify in Google Ads. |
| Events skipped — "No email identifier" | The email field is empty for those rows. Check identifier coverage in the signal preview. |
| Duplicate conversions counting | Order ID deduplication is not configured. Enable the Order ID mapping if re-exporting overlapping date ranges. |
| "Conversion precedes click" error | The event date in your data is earlier than the click date. Make sure you are using the actual conversion event timestamp, not a data processing timestamp. |
Conversion Adjustment — How it works
Conversion Adjustment lets you correct the value of a conversion already reported to Google Ads — for example, to update a deal value after a return, a contract renegotiation, or when the final invoice amount is confirmed.
The adjustment does not re-identify the user. Instead, it references the original conversion by its Order ID or click ID, and replaces its value with a new one.
The original conversion must already exist in Google Ads before you can adjust it.
BPP always sends an adjustment of type restatement, which fully replaces the original value. The previous value is discarded and the new value is used in reporting and bidding.
What you need in Google Ads
Use the same Conversion Action ID that was used when the original conversion was uploaded. There is no separate action type for adjustments.
What to configure in BPP
| Field | Required | What it does |
|---|---|---|
| Conversion Action ID | Yes | The same Conversion Action that holds the original conversions to be adjusted. |
| Google Ads Account ID | Yes | Your Google Ads customer ID (without dashes). |
| New Value | Yes | A formula that computes the corrected value to report per event. |
| Order ID field | Yes* | The unique transaction ID that identifies the original conversion. Required unless GCLID is provided. |
| GCLID field | Yes* | The Google click ID. Used as a fallback if Order ID is not available. |
| Currency | No | Currency of the restated value. Defaults to the account currency. |
* Order ID or GCLID — you need at least one. Rows with neither are skipped.
How it works
- For each event row, BPP calculates the new (corrected) conversion value using your formula.
- BPP looks up the original conversion using the Order ID (preferred) or the click ID.
- The original value is replaced with the new value in Google Ads reporting and bidding.
Differences from Enhanced Conversions for Leads
| Enhanced Conversions for Leads | Conversion Adjustment | |
|---|---|---|
| Purpose | Report a new conversion event | Correct the value of an existing conversion |
| Identifies by | User identity (hashed email) | Order ID or click ID |
| Sends user identifiers | Yes (email required) | No |
| Effect on reporting | Adds a new conversion | Replaces the original value |
Tips
- Store Order IDs at click time in your CRM and warehouse. Order ID is the most reliable way to match an adjustment to the original conversion.
- Send adjustments promptly. Google Ads processes retroactive adjustments, but very old adjustments may fall outside the attribution window.
- Use separate signals for initial conversion uploads (ECL) and subsequent adjustments. Do not mix both in the same signal.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Row skipped — "Order ID or GCLID required" | Both columns are empty for those rows. Check the field mapping in the destination settings. |
| Row skipped — "No event date" | The event date column is empty. Every adjustment row needs a date. |
| "Conversion not found" from Google Ads | The Order ID doesn't match any conversion under the specified Conversion Action. Verify the Conversion Action ID and that the original conversion was uploaded. |
| "Too recent" error from Google Ads | The original conversion is too recent for an adjustment — Google enforces a short minimum delay. Wait a few hours and retry. |
| Some rows succeeded, some failed | This is normal — BPP processes batches and reports which rows succeeded and which were rejected, with reasons. |
Reconnecting
If the connection shows Error status (e.g., because the Google token expired), open the connection, click Re-authenticate, and sign in with Google again. All audiences and signals using this connection will resume automatically on the next scheduled run.