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.
- Online Conversions (multi-source) — send your backend conversions as an additional data source of the website conversion action your Google tag already measures. Available when your account uses the Data Manager API.
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.
Google Ads API: legacy or Data Manager
Google offers two APIs for sending data to Google Ads: the classic Google Ads API and the newer Data Manager API. BPP can use either one. The choice is made per customer by the Bytek team (ask your Bytek contact to change it) and applies to all your Google Ads audiences and signals:
| Legacy Google Ads API | Data Manager API | |
|---|---|---|
| Customer Match audiences | Uploaded through an offline user data job | Uploaded directly through Data Manager |
| Enhanced Conversions for Leads | ✓ | ✓ |
| Store Sales Conversion | ✓ | ✓ — Order ID and Store ID are required (see below) |
| Conversion Adjustment | ✓ | Always sent through the legacy Google Ads API: Data Manager has no adjustments |
| Online Conversions (multi-source) | — | ✓ |
What changes for you:
- Nothing to reconnect. The same Google Ads connection works with both APIs.
- Online Conversions (multi-source) destinations exist only on the Data Manager API. If your account goes back to the legacy API, they are disabled: they show a Disabled — requires Data Manager API badge, stop exporting and keep their settings. They resume automatically when your account is back on Data Manager.
- Store Sales on Data Manager need two extra column mappings, because Google rejects in-store events without them: an Order ID (the receipt or transaction ID) and a Store ID (the column with the store of each transaction). BPP will not switch your account to Data Manager until every Store Sales destination maps both.
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 and any
+suffixremoved from the local part. - Securely hashed.
For an email column in clear (marked Multi-hash), BPP also sends the other hashed spellings of each address Google accepts; see Identifiers & Hashing.
Phone numbers are normalised and securely hashed before sending:
- Converted to international format (e.g.,
+14155552671). A number stored without a country code takes your account's default country (set by Bytek, Italy unless changed). - Invalid numbers are dropped.
- Securely hashed.
You never need to do this yourself — BPP handles it automatically. If your data already contains pre-hashed values (SHA-256), BPP sends them as they are and never hashes them twice.
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. On the Data Manager API, Order ID and Store ID columns are required. |
| Online Conversions (multi-source) | Signals | Data Manager API only. Requires a website conversion action set up with the Google tag. |
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. |
Online Conversions (multi-source) — How it works
Online Conversions let you add BPP as an additional data source of a website conversion action that your Google tag already measures. Google combines both sources on the same conversion action:
- when BPP sends a conversion with the same Transaction ID as one the tag recorded, Google deduplicates them: it completes the tag's conversion with the data the tag missed (for example hashed email or phone) and, if you send a value, uses BPP's value;
- when the Transaction ID matches nothing, Google records a new conversion and attributes it with the identifiers BPP sends — for example purchases the tag never saw because of ad blockers, browser restrictions or consent banners.
Online Conversions are available only when your account uses the Data Manager API (see Google Ads API: legacy or Data Manager). The feature is in beta at Google: your Google Ads account may not have access yet.
What you need in Google Ads first
- A website conversion action set up with code — through the Google tag or Google Tag Manager — that already tracks your purchases. Conversion actions imported from Google Analytics and URL-based conversion actions are not supported. Use your existing purchase action: do not create a second one, because Google deduplicates only within one conversion action.
- The tag must send a transaction ID with each conversion.
- In Google Ads, open the conversion action, go to Details → Data source → Connect another data source, connect the Data Manager source and accept the customer data terms.
What to configure in BPP
When you add a Google Ads destination, choose the conversion type Online Conversions (multi-source). The conversion action picker shows only website conversion actions.
| Field | Required | What it does |
|---|---|---|
| Website Conversion Action | Yes | The tag's conversion action. BPP checks with Google that it is a website (tag) action. |
| Transaction ID | Yes | Must contain exactly the transaction ID your Google tag sends (same format, same value). Rows without it are skipped. |
| Conversion Value | Yes | Formula for the value. A value of 0 is sent (for example a full refund); an empty value is not sent, so the tag's value is kept; negative values are skipped. |
| Hashed Email, Hashed Phone, GCLID, GBRAID, WBRAID | At least one identifier | The same identifiers as Enhanced Conversions. Providing both a click ID and hashed email or phone gives the best results. |
| Session attributes | No | The encoded session attributes string captured from your web forms. Recommended by Google, and also counts as an identifier. |
| Consent: ad user data / ad personalization | No | Per-row consent (true/false or GRANTED/DENIED). When you map them, a row with an empty consent value falls back to your Google Ads account's consent defaults. When you don't, BPP sends consent as granted, as for the other Google Ads conversion types. |
| Send IP addresses | No | Turns on two optional columns: IP address (conversion) and IP address (landing page). See the note below. |
Currency is taken from your data when it holds a valid 3-letter code; otherwise none is sent and Google uses your account currency.
IP addresses: Google Ads does not use IP addresses of users in the EEA, the UK or Switzerland. Map IP addresses only for traffic outside these regions. IPs are sent unhashed and are never written to BPP's export logs. A value that is not a valid IPv4 or IPv6 address is left out and counted in the run's errors.
Things to know
- Value and currency override the tag permanently. When a Transaction ID matches a tag conversion, the value you send replaces the tag's in reporting and bidding. Use the same units (for example euros, not cents) and the same currency as your tag.
- 14-day trial. For the first 14 days after you connect the data source, Google does not use BPP's values or new conversions for bidding; they appear in reporting only. Don't expect a bidding impact before then.
- Send daily. Google gets the best results when conversions arrive within 24 hours of the event, so schedule the signal at least once a day.
- No conversion analysis. BPP's conversion analysis does not cover Online Conversions destinations: their conversion action also counts the tag's conversions, so "sent vs recorded" would not be meaningful.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Conversion type not offered | Your account uses the legacy Google Ads API. Ask your Bytek contact to move it to the Data Manager API. |
| "needs a website conversion action set up with the Google tag" when saving | The selected conversion action is not a website (tag) action. Pick the tag's purchase action. |
| Destination shows Disabled — requires Data Manager API | Your account was moved back to the legacy API. The destination resumes when it is back on Data Manager. |
| Rows skipped — missing transaction ID | The Transaction ID column is empty for those rows. |
| Duplicated conversions in Google Ads | The Transaction ID sent by BPP does not match the tag's (different format), or a second conversion action is counted in the same goal. |
| Rejected by Google right after setup | The data source is not connected on the conversion action, the customer data terms are not accepted, or the account has no access to the beta yet. |
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.