Back to all integrations
Ads & analytics

Google Ads

Importing offline conversions into Google Ads so the platform tells Google which clicks actually turned into revenue.

On this page
What it connectsHow to connect itWhat data movesWorked exampleLimits and gotchas
Need this wired up?

Bring your stack to a call and we will connect it, test every field in both directions, and hand it over documented.

Book a call
01

What it connects

On the Google side sits a Google Ads account with its campaigns, its conversion actions and its bidding strategies. The important object is the conversion action: a named thing Google counts, with a category, a counting rule, a click-through window and a value. Google's automated bidding optimizes toward whatever those conversion actions tell it, and it has no independent knowledge of your business. Alongside that sits the click identifier Google appends to ad landing-page URLs, which is the token that lets you tie a later event back to a specific click.

On the AppBO side sit the contact record, the opportunity pipeline, and the knowledge of what actually happened: who answered the phone, who turned up, who signed, how much they paid, and who turned out to be a time-waster. That knowledge is invisible to Google unless you send it.

The integration closes that loop. Without it, Google optimizes toward form fills, and will happily find you a large number of cheap form fills from people who never buy. With offline conversion import, you tell Google which clicks became qualified leads, booked appointments and closed sales, with the value attached, and the bidding strategy starts chasing revenue instead of volume. The mechanical requirement is simple and unforgiving: you must capture and store the click identifier at the moment of the first visit, because nothing can reconstruct it later.

02

How to connect it

  1. Decide the conversion model first, on paper. List the stages you want Google to optimize toward (typically a qualified lead, a booked appointment and a closed sale) and decide which one carries the real value. Sending three conversions for one customer with full value on each will mislead the bidding badly.
  2. In Google Ads, confirm auto-tagging is enabled on the account. This is what appends the click identifier to landing-page URLs, and without it there is nothing to capture.
  3. Create the conversion actions in Google Ads, one per stage, choosing the import source that matches how you will send them. Set each one's category, its counting rule, its click-through conversion window, and whether it is a primary action that bidding optimizes toward or a secondary action you only observe.
  4. Set the conversion windows deliberately. If your sales cycle is six weeks, a window shorter than that silently discards your best conversions. Note the maximum window Google currently allows and check it in their documentation rather than assuming.
  5. Make sure the landing pages are platform pages or carry the platform's tracking, so the query parameters on the inbound URL are captured.
  6. Create a custom field on the contact to store the click identifier, and configure every form, survey, booking widget and chat entry point to capture it from the URL into that field on first touch. This is the single most important step, and it must happen before any spend you intend to measure.
  7. Capture the other context too (campaign, source, medium, term and content parameters) so you can report inside the platform as well as send conversions out.
  8. In the sub-account, open the integrations area and start the Google Ads connection. Complete Google's consent screen as a user with the appropriate access to the Ads account, reading the permissions on the dialog itself.
  9. Select the correct Ads account. If the business is under a manager account, confirm which account identifier you are linking, because sending conversions to the wrong one produces silence that looks like a bug.
  10. Map each platform event to its Google conversion action: pipeline stage reached to qualified lead, appointment booked to the booking action, opportunity won to the sale action.
  11. Decide the value sent with each conversion. A fixed representative value is acceptable for a lead stage; the actual deal value is better for the sale, and is what makes value-based bidding work.
  12. Build the workflows that send them. Trigger on the stage change, include the stored click identifier and the conversion time, and set the workflow so a contact cannot send the same conversion twice.
  13. Handle the no-identifier case explicitly. A contact with no stored click identifier cannot be sent as a click conversion; decide whether to fall back to an enhanced-conversion approach using hashed contact details, where available and lawful, or simply to exclude them, and make sure your reporting knows which.
  14. Check your consent and privacy position before sending any customer data to an ad platform. Where consent mode or regional rules apply, confirm what you are permitted to send and update your privacy notice accordingly.
  15. Verify the capture: click one of your own live ads, submit the form, and confirm the click identifier landed in the custom field on the new contact.
  16. Verify the send: move that test contact through the stages and confirm each conversion appears in the Google Ads conversion action, remembering that imported conversions can take a day or more to show.
  17. Check the diagnostics in Google Ads for the conversion action. Google reports unattributed or rejected imports there, and that report is where mapping errors surface.
  18. Only once the data is flowing and sane should you switch bidding to a value-based strategy, and then review after enough conversion volume has accumulated to judge it fairly.
03

What data moves

Google to the platform

  • The click identifier, delivered as a query parameter on the ad landing-page URL and captured into a contact field at first touch.
  • Campaign, source, medium, term and content parameters where your ad URLs carry them.
  • The list of conversion actions available in the linked account, so you can map events to them.
  • Nothing about the person. Google does not hand over who clicked.

Platform to Google

  • Offline conversion uploads: the click identifier, the conversion action name, the conversion date and time, the value and the currency.
  • Conversion adjustments where supported: a restatement of value, or a retraction when a deal is refunded or canceled.
  • Hashed customer identifiers for enhanced conversions, where you have enabled that path and are permitted to send them.
  • Nothing that changes campaign structure. This integration reports outcomes; it does not create ads, set budgets or pause campaigns.

What does not move

  • Spend, impressions, clicks and cost-per-click into the platform, unless your platform version provides a separate reporting connection.
  • Keyword-level detail about which search term produced the click, beyond what your URL parameters carry.
  • Conversions for contacts with no stored click identifier. These are invisible to Google as click conversions, however real they were.
  • Historical outcomes beyond the conversion window. A deal closed after the window closes will be rejected, which is why the window matters more than almost any other setting.
  • Attribution logic. Google decides how to credit the conversion across the path; you supply the fact, not the credit.
  • Audience or remarketing list membership.
  • Any guarantee of acceptance. An upload can be rejected for a stale or unrecognised identifier, and the rejection appears in Google's diagnostics rather than in the platform.
04

Worked example

Scenario: a commercial roofing company stops optimizing for form fills and starts optimizing for signed contracts.

  1. The team maps the funnel: form fill, qualified after a phone screen, site survey booked, quote sent, contract signed. They decide Google should optimize toward qualified and toward signed, with the real contract value on signed.
  2. Auto-tagging is confirmed as enabled in Google Ads.
  3. Three conversion actions are created for import: qualified lead, survey booked and contract signed. Signed is set as the primary action with a long click-through window, because surveys and quotes take weeks. Qualified is set as secondary and observed only at first.
  4. A custom field is created on the contact for the click identifier, and the landing-page form, the booking widget and the chat widget are all configured to capture it from the URL.
  5. A test click on a live ad confirms the identifier is captured and stored on the new contact.
  6. A real inquiry arrives from a search ad. The contact is created with the click identifier, the campaign name and the keyword parameter stored.
  7. A salesperson phones, establishes the roof is a genuine commercial job within the service area, and moves the opportunity to qualified. A workflow uploads the qualified-lead conversion with the click identifier and a nominal value.
  8. A site survey is booked. A second workflow uploads the survey-booked conversion.
  9. Three weeks later the quote is accepted and the opportunity is marked won with the contract value entered on the record. A third workflow uploads the contract-signed conversion carrying that value and the date the deal closed.
  10. Google attributes the conversion back to the original click, which falls inside the long window, and the value appears against the campaign and keyword that produced it.
  11. After two months of accumulating signed conversions, the team switches the campaign to a value-based bidding strategy with the signed action as the primary goal.
  12. Reporting now shows that one keyword group generated most of the form fills and almost none of the signed contracts, while another produced fewer, more expensive leads and nearly all the revenue. Budget moves accordingly.
  13. One contract is canceled within the cooling-off period. A conversion adjustment is uploaded to retract that value, so the bidding is not chasing a deal that did not happen.
  14. A monthly check of Google's conversion diagnostics catches a batch of rejected uploads, traced to a new landing page built outside the platform that was not capturing the click identifier. The page is fixed and the gap is noted in the reporting rather than silently absorbed.
05

Limits and gotchas

Rate limiting

The Google Ads API applies daily operation quotas that depend on your access level, and bulk uploads consume them quickly. A backfill of months of historical conversions is the operation most likely to exhaust the budget, so batch it and spread it. Google publishes current limits and access tiers in the Ads API documentation; read those figures there rather than planning against a remembered number, and expect errors that name the quota when you cross it.

Retries and idempotency

There is no universal idempotency key on a conversion upload, and Google's own counting rule is what prevents a duplicate from inflating your numbers. A one-per-click rule will absorb a repeat, an every-conversion rule will not. That makes the counting rule a safety setting, not just a reporting one. On your side, guard each send with a tag or a field so a replayed workflow cannot upload twice, and never re-run a failed batch without checking what was accepted. Reporting lags by up to a day or more, so a conversion that is missing an hour after upload is not yet evidence of a problem.

Field-mapping traps

The conversion action name must match exactly, and a renamed action in Google Ads breaks the mapping without any platform-side error. Conversion time must be the time the conversion actually happened, not the time of the upload, and it must fall after the click and inside the window. Currency must be stated and must match what you believe you are sending. Value fields pulled from an opportunity will be blank when nobody filled them in, and a blank value sent to a value-based strategy teaches it that the deal was worthless. Give every value field a sensible default and validate before sending.

Duplicate creation

Duplicate conversions come from two workflows triggering on overlapping conditions, from a pipeline stage that can be re-entered, and from a contact duplicated in the CRM so two records each carry the same click identifier and each send their own conversion. Deduplicate contacts before trusting the numbers, and make each conversion workflow idempotent per contact.

Sandbox versus live

Google Ads has a test-account concept for API development, and it accepts uploads without affecting a live account: useful for proving the plumbing. It cannot show you how the bidding strategy will react, because that depends on real auction behavior and real volume. The practical compromise is to start with the conversion action as secondary and observed, confirm the data looks sane for a few weeks, and only then make it primary.

Authentication expiry

The connection depends on the Google account that authorized it retaining access to the Ads account. It breaks when that user is removed, when a manager-account link changes, when the password changes or the grant is revoked, and when an agency hand-over moves the account. The symptom is uploads silently failing while campaigns continue to spend, which is the expensive kind of failure. Check the conversion action's recent import activity on a schedule, not just the platform's connection badge.

What commonly breaks

  • Auto-tagging switched off, so no click identifier ever reaches the contact record and the whole integration is inert.
  • A landing page built outside the platform that does not capture the identifier, creating a silent blind spot.
  • A conversion window shorter than the real sales cycle, discarding exactly the conversions you most wanted to report.
  • Full deal value sent on three different conversion actions, tripling apparent revenue and distorting bidding.
  • A conversion action renamed in Google Ads, breaking the mapping.
  • Conversion time sent as upload time, which can place the conversion before the click or outside the window.
  • Bidding switched to value-based before enough conversions exist for it to learn from, producing erratic spend.
  • Refunds and cancellations never retracted, so the strategy keeps buying the wrong kind of customer.
  • Consent requirements overlooked when sending hashed customer data for enhanced conversions.
  • The wrong account linked under a manager account, so uploads succeed into an account nobody is looking at.

Connect it with us.

We wire the integration, map the fields, test both directions and hand it over with the SOPs your team needs to run it.

Book a call