Google Pixel (Google Ads, Data Manager API)
The Google pixel sends your conversions (registrations, deposits, etc.) directly to Google Ads via the official Data Manager API. Google uses them for attribution and campaign optimization. Setup takes ~15 minutes and does not require running ads or adding a payment card.
How it works
- When someone clicks your ad, Google appends the
gclidparameter to the link (for iOS traffic —gbraid/wbraid). The tracker stores it on the click. - When the affiliate network sends a conversion postback, the tracker sends the event to Google Ads with that click identifier.
- The "event" in Google Ads is a conversion action that you create in your account. In the pixel's event mapping, each tracker event corresponds to a numeric Conversion Action ID.
- Authentication uses your own Google Cloud service account: you upload its JSON key to the pixel once. The key is stored encrypted and is never displayed again.
Step 1. Google Ads account (if you don't have one)
Google pushes you into the "first campaign" wizard with billing. There are two ways around it:
- Recommended — via a manager account (MCC): open ads.google.com/home/tools/manager-accounts → Create a manager account (no campaign, no card). Inside the MCC: Accounts → + → a regular client account is created. Note: the account currency can never be changed — choose deliberately.
- Quick: go through the campaign wizard, enter nothing on the payment step and navigate to the dashboard via the logo — the account already exists; delete the draft campaign.
Customer ID — a number like 123-456-7890 in the top-right corner of the account. You will need it in the pixel form (dashes are allowed).
Step 2. Google Cloud project and service account
- Open console.cloud.google.com → create a new project (e.g.
adset-postback). No billing needed. - APIs & Services → Library → find Data Manager API → Enable.
- IAM & Admin → Service Accounts → Create service account. Any name (e.g.
postback), no GCP roles needed. You will get an email like[email protected]. - Open the service account → Keys → Add key → Create new key → JSON. The file downloads once — keep it safe.
⚠️ If step 4 fails with "Service account key creation is disabled" — your account belongs to a Workspace organization with the iam.disableServiceAccountKeyCreation policy. Ask the org administrator to disable it for the project, or create the project from a personal Gmail outside the organization.
Step 3. Access in Google Ads
- Google Ads account → Admin → Access and security → Users → +.
- Paste the service account email from step 2, access level — Standard (Read-only cannot upload conversions).
- If you manage several accounts under one MCC — you can add the email once at the MCC level and fill in the Manager (MCC) Customer ID field in the pixel.
Step 4. Conversion action
- Goals → Conversions → Summary → + New conversion action.
- Data source: Offline conversions (in other UI versions — "Import → Conversions from clicks"). No need to connect a CRM/files — pick the API option or "set up later".
- Name (e.g.
Deposit), count — "Every" (so repeated deposits are counted separately), conversion window — default. - Open the created conversion from the list — copy the number after
ctId=from the browser address bar. This is the Conversion Action ID. - Repeat for every event you want to send (Deposit, Registration, etc.).
Step 5. Auto-tagging and passing the gclid through
- Admin → Account settings → Auto-tagging — must be enabled, otherwise
gclidis not appended to links. - If traffic goes through a TDS/cloaker — make sure the redirect passes the parameters through: the outgoing link must contain
&gclid={gclid}&sub9={gbraid}&sub10={wbraid}(macros depend on your TDS). With our "Google Ads" source template and direct traffic nothing needs to be configured. - iOS traffic convention:
gbraidandwbraidare delivered via sub9/sub10 — these sub fields are reserved on a Google source.
Step 6. The pixel in Adset.pro
- Tracker → Pixels → Create, type — Google Ads.
- Upload the JSON key as a file — a "Key is valid" check appears together with the service account email (the same one you added in step 3).
- Fill in the Customer ID (10 digits, dashes allowed). Manager ID — only if access was granted at the MCC level.
- Events tab: give each event its Conversion Action ID from step 4.
- Save → pixel menu → Test Google connection. The check writes nothing to the account but validates the key, the access and all IDs.
- Attach the pixel to a campaign (campaign set → Pixels) — like a regular pixel.
Google API errors — quick reference
Google's response is shown as is: in the connection test — by clicking the red status, in production sends — in "Logs → Pixels" (Response data). Typical cases:
| Error | What it means | What to do |
|---|---|---|
| 403 / PERMISSION_DENIED | The service account has no access to the ad account, or the Data Manager API is not enabled in the GCP project | Check: the SA email is listed in Google Ads "Users" with the "Standard" level (step 3); the Data Manager API is enabled (step 2.2); the Customer ID belongs to the account where access was granted |
| 401 / invalid_grant | The JSON key was revoked, deleted or is corrupted | Re-issue the key (step 2.4) and upload the new one to the pixel ("Replace key") |
| Error about destination / productDestinationId | Wrong Customer ID or Conversion Action ID | Verify the Customer ID (don't confuse it with the manager account ID) and the conversion's ctId; the conversion action must exist in the same account |
| 400 / INVALID_ARGUMENT | Google rejected the request at validation (e.g. malformed event data) | Check the error text in the postback log; such sends are not retried |
| 429 / RESOURCE_EXHAUSTED | The GCP project request quota is exceeded (100,000/day, 300/min) | The send is retried automatically; with regular 429s — check whether the project is used by other integrations |
Auto-deactivation: on fatal errors (revoked key, removed access — 401/403) the pixel is switched off automatically and the owner receives a "Pixel deactivated" notification. After fixing the cause, re-enable the pixel in the edit form.
FAQ
- Conversions are not visible in the account right away. Google Ads statistics appear with a ~3 hour delay — this is normal. Imported conversions are shown in "Goals → Conversions → Summary" and on the "Uploads" page.
- Attribution window. A conversion is counted only if it falls within the conversion action's window (usually 30–90 days from the click) and the gclid is still valid.
- Currency. The conversion currency comes from the affiliate postback (or from the CPA network settings); the Google Ads account currency only affects report display.
- Duplicates. Google deduplicates our events by a unique transaction ID — re-sending the same conversion will not create a duplicate.
- Key security. The JSON key is stored encrypted and is never returned — the form shows only the email and project id. Do not share the key file in chats or tickets; if it leaks — re-issue it.
