Wiring GA4, Google Tag Manager, and Offline Conversion Import for a Garage Door Company

Chain three free Google products together so your ad bidding optimizes toward installed doors instead of form fills, and route around the June 2026 API shutdown.

Updated
Read time
14 min
Compared here
GA4 with Google Tag Manager, CallRail, WhatConverts

If you run Google Ads for a garage door company, Google’s bidding system is optimizing toward whatever it can see, and by default that is form submissions and phone clicks, not installed doors. A homeowner who fills out a quote form for a $50 keypad and a homeowner who books a $4,000 two-car install look identical to Google unless you tell it otherwise. This guide walks through connecting Google Analytics 4 (GA4), Google Tag Manager (GTM), and offline conversion import so that when a lead actually becomes a paid job, Google Ads finds out and adjusts its bidding accordingly. By the end you will have a working measurement setup, key events marked in GA4, and a path to upload job outcomes back to Google Ads that will not break when the current API access closes in mid-2026.

A short disclosure before we start: we sell a system that includes lead-source-to-outcome reporting, so we are not a neutral party writing this. What we get out of this article is straightforward, some readers will decide the maintenance burden below is more than they want to own and will look at what we do instead. That does not change any of the steps or numbers here.

Which one you should probably pick

Build the GA4 plus GTM plus offline conversion import stack yourself if you already have, or are willing to pay for, a developer who can install a code snippet correctly and if someone in the business will own the GCLID capture and monthly outcome upload going forward. It costs nothing beyond that labor and it is the only setup in this category that teaches Google Ads which clicks became real jobs rather than just form fills.

Choose CallRail or WhatConverts instead if the missing piece is source attribution for phone calls specifically, rather than closing the loop on Google Ads bidding. Both give you Dynamic Number Insertion and call-source reporting out of the box, without you having to build a GCLID capture and upload workflow, but neither is a substitute for offline conversion import if your goal is to feed job outcomes back into Google’s bidding algorithm. Some shops run one of these alongside GA4 for the call-tracking piece and still build offline conversion import for the outcome-feedback piece; they solve different problems.

Two conditions push you away from doing this yourself: you have no working relationship with a developer or website vendor who can install and verify a Tag Manager snippet, or nobody at the shop has the bandwidth to log into Google Ads monthly and upload a spreadsheet of closed jobs. If either is true, the honest recommendation is to either hire the install out as a one-time job and skip the ongoing upload discipline, or route the outcome side of this to a system built to do it on a schedule.

What each one actually costs

Tool Published price What it is best at Where it gets hard
GA4 + Google Tag Manager + offline conversion import Free (checked 2026-08-28) Feeding real job outcomes back into Google Ads bidding, not just tracking form fills Three products to wire together correctly, a silent-failure snippet install, and a GCLID capture and upload process someone has to run on an ongoing basis
CallRail Lead Tracking $50/mo, Lead Tracking Complete $95/mo, Lead Conversion $150/mo, Lead Conversion Complete $195/mo, month to month, annual billing saves up to 10 percent (checked 2026-08-28) Call-source attribution and Dynamic Number Insertion without building it yourself Base plans include only 5 numbers, 250 minutes, and 25 texts; real bills commonly run 1.5 to 3 times the sticker price once overage charges hit, and it does not close the loop on Google Ads bidding by itself
WhatConverts Call Tracking $30/mo, Plus $60/mo, Pro $100/mo, Elite $160/mo for a single account, each including up to 148 tracked calls; agency/unlimited plans run $500 to $1,250/mo (checked 2026-08-28) Lower entry price than CallRail for the same category of call and form tracking Customer-journey and multi-click attribution, the features most useful for judging ad spend, are gated behind the top Elite tier at $160/mo

Neither CallRail nor WhatConverts publishes A2P 10DLC or texting-compliance handling on its pricing page as of this check, so confirm that directly with the vendor before relying on SMS features inside either tool for marketing texts.

Before you start

  • A Google account that will own the GA4 property and GTM container long term, ideally a business account rather than a personal one, so access survives staff turnover.
  • Admin or FTP/CMS access to the website, or a developer or website vendor who has it, since installing the Tag Manager snippet is a code change to every page.
  • An active Google Ads account with conversion tracking permissions.
  • A CRM, spreadsheet, or lead-tracking system that can store a text field per lead, since the GCLID has to live somewhere until the job outcome is known. If you have not yet set up a CRM built around a garage door company’s actual pipeline, that has to happen before this step matters.
  • Someone assigned to the recurring outcome upload once setup is finished. This is not a one-time task, and the guide below will not fix that if nobody owns it.

Setting up GA4 and Google Tag Manager

  1. Go to analytics.google.com and create a new GA4 property. Name it after the business, set the correct timezone and currency, and answer the industry and business-size prompts. This information affects some of Google’s benchmarking reports, not your tracking itself.
  2. Add a Web data stream and enter the site URL. GA4 generates a Measurement ID (it starts with G-) for this stream. You will need this ID in a later step.
  3. Go to tagmanager.google.com and create a new GTM account and container. Name the container after the website’s top-level domain so it is identifiable later if the business runs more than one site.
  4. Tag Manager gives you two snippets to install, one for the page head and one immediately after the opening body tag. Both need to go on every page of the site. If the site runs on WordPress, a plugin can usually handle this without touching template files directly; on a custom-built site, this is a code change a developer makes once.
  5. Inside GTM, create a new tag using the built-in Google Tag type, point it at the GA4 Measurement ID from step 2, and set the trigger to fire on all pages. Publish the container. Nothing is live on the site until you publish, so changes made in GTM’s workspace do not affect real visitors until this step.
  6. In GA4, go to Admin, then Events, find the actions that matter in the events list, form submissions, clicks on a phone number, and clicks on a request-a-quote button, and toggle “Mark as key event” next to each one (key event is GA4’s current term for what used to be called a conversion). GA4 auto-detects and lists some of these on its own once they have fired at least one time; others will never appear in that list until you build the trigger for them in GTM first, for example a Click trigger filtered to a Click URL that contains “tel:” for a phone-number link, published back to GTM before GA4 has anything to mark.
  7. Confirm the tag is actually firing. Open GA4’s Realtime report and browse your own site in another tab. You should see your own visit appear within a few minutes; GA4’s realtime data can lag up to roughly 30 minutes in some cases, so give it time before assuming the install failed. This is the fastest way to catch a misplaced snippet before it costs weeks of missing data with no error message anywhere to tell you something is wrong.

Capturing the GCLID and closing the loop with offline conversion import

This is the step the research consistently flags as where most attempts stop working, and it is worth being direct about why: nothing in the steps above tells Google Ads which clicks became paying jobs. That connection has to be built separately.

  1. When someone clicks your Google ad, Google Ads appends a GCLID (Google Click ID) parameter to the landing page URL. That parameter is only present on ad-driven visits, not on organic or direct traffic, which is exactly what makes it useful for attribution.
  2. Your website form needs a hidden field that reads the GCLID from the URL and stores it, so that when the lead submits the form, the GCLID travels with it into your CRM or spreadsheet. Depending on your CRM, this is either a native field mapping, a Zapier step reading the URL parameter, or a manual field a developer adds to the form.
  3. Store that GCLID against the lead record permanently, even though it may be weeks before you know whether the lead became a job. This is a data-retention habit, not a one-time technical task.
  4. In Google Ads, under the Goals menu, create a conversion action for the outcome you want to feed back, for example “Job completed” or “Job booked.” Google Ads’ own current guidance recommends enhanced conversions for leads through Data Manager as the fastest and easiest path for new setups, rather than the older offline conversion import flow through the Ads API.
  5. When a lead becomes a paid job, upload that outcome matched by GCLID (or by hashed email and phone under enhanced conversions) through Data Manager, the Google tag, or a Zapier integration into your CRM. This upload has to happen on a recurring schedule, weekly or every two weeks is reasonable for most shops, because a job closed today does no good for Google’s bidding algorithm if the outcome sits unreported for two months.
  6. Watch for the single most common silent failure: missing or incorrectly formatted phone numbers, emails, or GCLIDs break the match with no visible error. If uploaded conversions consistently show as zero or near-zero in Google Ads despite jobs actually closing, the first thing to check is data formatting on the upload, not the ad campaigns themselves.

The June 2026 deadline you need to route around

Google Ads API access for offline conversion uploads is scheduled to close after June 15, 2026. If you build this stack today using the legacy Ads API path for uploading conversions, whatever you build has a shutdown date already attached to it. The route that avoids this is Data Manager, which Google currently recommends as the path for enhanced conversions for leads and which is not affected by the API deprecation. If a developer, agency, or piece of software offers to build you an offline conversion import pipeline in the second half of 2026 and describes it as going through the Ads API, ask directly whether it uses Data Manager instead, because the alternative is paying to build something that stops working on a known date.

Where CallRail or WhatConverts fits instead

CallRail and WhatConverts solve a narrower, related problem: knowing which channel a phone call came from. Both provision trackable phone numbers, either static per source or a Dynamic Number Insertion pool that swaps the visible number based on the visitor’s referral source, and both report call source back into a dashboard without you building a GCLID capture workflow yourself. CallRail starts at $50 a month for Lead Tracking; WhatConverts starts at $30 a month for Call Tracking, both checked 2026-08-28. Neither replaces offline conversion import if your actual goal is closing the loop with Google Ads bidding specifically, since neither uploads job outcomes back into Google Ads on its own. Some shops run GA4 and GTM for the site-wide measurement layer and add CallRail or WhatConverts on top for call-level source detail, particularly if a meaningful share of leads still come in by phone rather than through a form.

Both tools share a fragility worth knowing about before you buy either: Dynamic Number Insertion depends on a JavaScript snippet firing on every page load, and cookie-consent tools, ad blockers, or aggressive page caching can suppress it, silently reverting the visible number to a static fallback and breaking source-level attribution without any warning. If either shows a suspicious spike in calls attributed to your fallback or organic number, check the DNI snippet before assuming the traffic source is real.

What usually goes wrong

  • The Tag Manager snippet is installed on some pages but not all. A common cause is a site with multiple templates, where the developer updates the main theme file but a landing page template built separately never gets the snippet. Check GA4 Realtime on a sample of different page types, not just the homepage.
  • Cookie-consent tools block the tag from firing for a meaningful share of visitors. If your site runs a consent banner, confirm the GTM and GA4 tags are configured to respect the consent state your banner sets, and check whether declined-consent visitors are excluded from your key event counts before assuming your numbers are complete.
  • The GCLID field exists on the form but nothing downstream reads it. A hidden field that captures the GCLID does nothing if the CRM import or Zapier step that receives the form submission was never mapped to store it. Test with a real ad click, not a direct visit, since GCLID only appears on ad-driven traffic.
  • Outcome uploads stop happening after the person who set them up moves on. This is a process failure, not a technical one, and it is the single most common reason a correctly built stack degrades months later. Put the recurring upload task on a calendar with a named owner, not just in someone’s memory.
  • Someone builds the outcome-upload side on the legacy Ads API path in 2026 without knowing about the June 15 deadline. Confirm directly with whoever builds this for you, or with Google’s own current offline conversion import support page, that the build uses Data Manager rather than the API integration scheduled to close.

How to tell it is working

In week one, check GA4’s Realtime report from a fresh browser session (not one already logged into your Google account) and confirm your key events, form submit, phone click, quote request, are firing and showing up under Reports, then Engagement, then Events within a day or two. Click through from a real Google ad if you are actively running one, and confirm the URL carries a GCLID parameter and that a test form submission stores it.

In month one, check Google Ads under the Goals menu, where the conversion action you set up lives, and confirm it shows uploaded conversions with a nonzero count, not just impressions and clicks. The exact submenu label under Goals can shift as Google updates the interface, so if “Conversions” is not the name you see, look for wherever that account lists conversion actions and their counts. If jobs have closed during that period and the conversion count still reads zero, that is the signal to check data formatting on the upload rather than assuming the campaigns aren’t producing real work. From month one onward, the real test is whether the person responsible for the recurring outcome upload is actually doing it on schedule, since that is the piece most setups lose first.

If your website relies on marketing channels beyond Google Ads, such as routing Meta lead ads into a CRM or getting through Local Services Ads approval as a garage door company, those guides cover the attribution and setup work specific to each. And if the call-tracking half of this problem, rather than the Google Ads bidding half, is what you are actually trying to solve, the call tracking and dynamic number insertion guide covers CallRail and WhatConverts in more depth. Shops running field service software that needs its job outcomes to feed this kind of reporting may also want the QuickBooks sync guide, since job-completion data often lives in the same system.

Common questions

Is GA4 offline conversion import free?
Yes. GA4, Google Tag Manager, and Google Ads offline conversion import all have no license fee. Your only cost is the ad spend already running in Google Ads and, in most cases, a developer's time to install the Tag Manager snippet correctly.
What happens to offline conversion uploads after June 15, 2026?
Google Ads API access for offline conversion uploads is scheduled to close after June 15, 2026. New builds should use Data Manager, Google's currently recommended path for enhanced conversions for leads, instead of the legacy API integration.
Do I need a developer to install Google Tag Manager?
Most shops do. Installing the container snippet correctly in the page head and after the opening body tag is simple in concept but produces no error message when placed wrong, so a site with a CMS a developer already manages is the safer route than a first attempt by someone without that background.
What is a GCLID and why does my CRM need to store it?
A GCLID is the click identifier Google Ads attaches to the URL when someone clicks your ad. Offline conversion import matches that identifier to a later job outcome, so if your CRM never captures and stores it against the lead record, there is nothing for the outcome upload to match against.

Sources

Prices, limits, and requirements were checked on August 28, 2026. Vendors change these without notice, so confirm anything that affects a buying decision before you sign.