You spend real money on marketing every month. You should be able to answer one question without guessing: which channel produced the jobs you actually booked? Most reports can't tell you, because they were assembled from whatever the ad platforms handed over instead of from a measurement system someone designed on purpose. Pinnacle installs the tracking — website, phone, and CRM — connects it to the job record, and sends you a report that names cost per booked job by channel. You own every account we touch, in writing, before we start.
Drop your domain. We'll look at what's actually running — your GA4 property, your tags, your conversion actions, your call tracking if you have any — and send back a plain-English list of what's broken, what's double-counting, and what's missing entirely. No proposal deck, no discovery sequence.
Marketing analytics is the measurement layer under your marketing — the tracking code on your site, the tags that fire when a form is submitted, the tracking numbers that record which ad a caller saw, and the link between all of that and the job record in your CRM. Reporting is what comes out the other end: one dashboard and one written summary that turn those events into decisions you can act on this week.
The pattern big numbers up top, no cost per booked job anywhere We see the same document every time a new client sends us their last six months of reporting. It leads with reach and impressions, because those numbers are always large and always go up. Conversions show up somewhere in the middle, loosely defined, usually counting form fills and nothing else. Phone calls are absent or lumped into one blob with no source attached. Nowhere does anyone say what a lead cost or what a booked job cost — and nobody in the company has ever changed a decision because of it.
Four failures you can check for all four yourself, today Underneath that pattern are four specific breaks. The conversion never happened on the website — for a roofer, a plumber, a med spa or a law firm the conversion is a phone call, and if nothing records which ad or listing produced it, every channel comparison in the report is fiction. The measurement stops at the lead — two channels can deliver identical lead counts while one produces $2,000 jobs and the other $18,000 jobs. Nobody reconciles the platforms — GA4, Google Ads and Meta will never agree, and silence about why destroys trust in the whole document. The accounts belong to the agency — if your GA4 property lives in someone else's account, your history isn't yours, and leaving costs you your data.
We don't make numbers up, and we don't promise results we can't control. But the public research on what measurement is actually doing inside most businesses is uncomfortable, and it points at the same holes every time.
of marketing decisions were influenced by marketing analytics — even at companies that already bought the tools
of callers actually reach a person, across more than 60 million analyzed calls in nine industries
missed-call rate in home services — the leak that almost no analytics engagement bothers to measure
is the default GA4 data retention window — past it, event-level data is deleted monthly and cannot be recovered
The pattern is consistent: the tools are bought, the tracking is half-built, and the decisions still get made on a feeling. Fixing the measurement is cheaper than fixing the wrong channel.
Every engagement is built from the same six components. Scope changes with how much already exists — nothing on this list is optional, because leaving one out breaks the chain between spend and revenue.
We open the GA4 property, the tag container and the ad accounts and document what's really there — retention settings, duplicate tags, tags firing on click instead of on submit, legacy tags from an agency nobody can reach. You get a written event architecture naming every conversion, how it fires, and what it's worth.
For most of our clients the phone is the pipeline. Tracking numbers carry the source with the call — this one from Google Ads, that one from the Business Profile listing. Dynamic insertion swaps the displayed number for humans while your canonical number stays in the page source and on every listing.
The unglamorous middle where most of the errors live. Retention moved to 14 months, internal traffic excluded, cross-domain measurement configured, key events built to the architecture instead of GA4's guesses — in a container you own. Server-side tagging when your volume justifies it, and we say so when it doesn't.
Source and campaign get written into the CRM record at lead creation. When the job closes weeks later, that revenue pushes back into the ad platforms through offline conversion import and enhanced conversions for leads — so bidding optimizes toward closed jobs instead of form fills.
One screen, updated continuously, in an account with your name on it: leads by channel, cost per lead, calls answered and missed, booked jobs, revenue and ROAS. Every number clicks through to the underlying records. The written report says what changed, why, and what we did about it.
The biggest leak in most pipelines isn't a channel, it's that nobody picked up. We report answer rate and time-to-first-response as first-class metrics next to cost per lead — because if you paid $118 a lead and missed a fifth of them, a new campaign is not the highest-return fix that month.
When you can see cost per booked job instead of cost per click, reallocation stops being an argument and becomes arithmetic. Most clients find at least one line of spend they had been defending on the strength of a metric that turned out not to matter.
Once closed-job value flows back into Google Ads, the bidding algorithm has real outcomes to learn from. It starts finding more of the people who buy instead of more of the people who fill things in — and that effect compounds every month it runs.
Once you know what a booked job costs by channel, no vendor can impress you with impressions again. It also hands you a fair standard to hold us to, which is the point of building it this way.
Attribution isn't a reporting nicety, it's the input that makes everything else improve. CRO needs clean event data to test against, SEO needs to know which pages produce calls, and ads need revenue signal to bid on.
We audit everything running — GA4 settings and retention, the tag container, conversion actions, the Meta pixel, Search Console, Business Profile insights, call tracking, and how leads reach your CRM — then agree the event architecture. You keep the written audit whether or not you continue.
We correct the foundation before adding anything: retention to 14 months, internal and office traffic excluded, duplicate and misfiring tags removed, conversion actions rebuilt to the agreed definitions, ownership transferred into your accounts. Unglamorous, and the reason month three is trustworthy.
Call tracking goes live with dynamic number insertion, canonical number untouched. Source data starts writing into the CRM at lead creation. The dashboard is built and populated, and we walk you through your first clean month line by line so you can read it without us.
Closed-loop revenue attribution goes live — won jobs and their values push back into the ad platforms. Reporting settles into cadence: live dashboard, written monthly report, scheduled review call, and historical export where a year-over-year view matters to you.
You can wire it up yourself between running the business, buy a cheap monthly report, hire an analyst, or have the whole measurement layer built and run for you. Here's how each stacks up.
| Capability | DIY Tracking | Cheap Outsourced Report | In-House Analyst | Pinnacle Analytics |
|---|---|---|---|---|
| Tracking actually installed, not just reported on | ~ | × | ~ | |
| Call tracking with DNI that protects your NAP | × | × | ~ | |
| Lead source written into the CRM at creation | × | × | ~ | |
| Closed revenue pushed back to ad platforms | × | × | ~ | |
| Platform gaps reconciled & explained in writing | × | × | ~ | |
| GA4 retention fixed & history preserved | × | × | ~ | |
| Answer rate & speed-to-lead reported | × | × | × | |
| Monthly cost | Your time | $ | $$$$ + payroll | Exact quote |
Measurement is worth very little as a standalone purchase and a great deal as the connective tissue between the services actually producing your leads. Attribution data is the input to conversion rate optimization — you cannot test what you cannot measure, and a CRO program running on bad event data will confidently ship the wrong winner. It tells SEO which pages produce calls rather than sessions. It gives Google Ads and social advertising real revenue signal to bid against. Call data connects straight to your Google Business Profile, usually the largest and least-counted source of calls a local business has. And the AI Assistant channel in GA4 is how you find out whether your answer engine optimization is producing anything at all. Run them together and each one makes the others worth more.
Meet Bob — the face of Pinnacle's AI workforce. Analytics tells you how many calls you missed and what each one was worth; the AI workforce makes sure the number keeps falling. Every lead gets answered in seconds, qualified, and logged to the CRM with its source intact — which is the same record the reporting reads from. They share one brain, so measuring the leak and closing it become the same motion. That's the G.O.A.T. standard: the report doesn't just describe the problem, it hands the fix to something that's already working.
See The Full AI Stack →Run four checks against your most recent report. One: can you name your cost per booked job for each channel — not cost per click, not cost per lead? Two: does the report show revenue, or does it lead with impressions and reach? Three: do you own the GA4 property, the tag container, the Google Ads account and the call tracking account, under your own login? Four: when the platform numbers disagree, does anyone explain why? If you can't answer yes to at least three, the problem may not be that the marketing is failing — it's that nobody built the measurement that would tell you either way. That is a fixable and entirely separate problem from campaign performance.
You should, and with us you do. Every account we touch or create sits under your business email: the GA4 property, the Google Tag Manager container, Google Ads, Search Console, the call tracking account and the dashboard. We hold admin access, not ownership — so if you stop working with us, you revoke our access and keep everything, including the history. This is an active grievance in the industry, with long-running threads among local marketers about agencies withholding analytics access. Ask any agency you're considering to put ownership in writing before work starts. If they hesitate, you've learned something important.
Not if it's implemented correctly, and the distinction is specific. Dynamic number insertion swaps the displayed phone number in JavaScript for human visitors, while your canonical business number stays in the page source, in your Google Business Profile, and in every citation and directory listing — so search engines and citation crawlers keep seeing one consistent number. What genuinely causes damage is static replacement, where tracking numbers get pushed out to your listings, creating real NAP inconsistency. Sterling Sky has published the definitive practitioner breakdown of which of these fears are founded, and WhatConverts documents the implementation detail including noscript fallbacks. Local Service Ads are the one real exception — LSA already forwards calls, so layering a second tracking number on top breaks attribution, and we handle that case separately.
They never will, and that's expected rather than a sign something is broken. Meta counts on a 7-day click and 1-day view window by default. Google Ads counts click-based conversions and credits them back to the date of the click. GA4 defaults to last-click and doesn't credit view-through at all. On top of that, each platform has an independently configured timezone and its own session logic. Ruler Analytics documents these mechanics in detail. Variance in the 10–20% range on the same campaign is normal. The first diagnostic when a gap looks wrong is the boring one: same conversion action, same date range, same timezone? Our reports name which source is the system of record for each metric, so you're never comparing two definitions of the same word.
Through a three-link chain. First, call tracking and form tracking capture the source, campaign and keyword the moment the lead is created, and write that into the CRM record instead of leaving it in a separate tool. Second, your CRM holds the job value when the deal closes — days or weeks later for most service businesses. Third, that closed revenue gets pushed back to the ad platforms through offline conversion import and enhanced conversions for leads. Once the loop is live, Google's bidding optimizes toward jobs that actually closed rather than toward form submissions. One timing note: Google's documentation states that from June 15, 2026, UploadClickConversion requests will fail for developer tokens that haven't previously used them, and directs new implementations to the Data Manager API — so any build starting now should target that API from day one.
Standard GA4 properties can retain user-level and event-level data for either 2 months or 14 months, and the default for new properties is 2 months. Anything past the window is deleted automatically each month and cannot be recovered. Demographic data is capped at 2 months regardless of the setting. This catches out an enormous number of businesses, who find out the first time they try a year-over-year comparison and discover the earlier period simply doesn't exist. Changing the setting to 14 months takes about thirty seconds, but it only applies going forward. If year-over-year reporting matters to you, you need a reporting layer or a warehouse export that stores history outside GA4 — and that decision is best made before the data disappears, not after.
GA4's default channel group now includes an AI Assistant channel covering arrivals from sources like ChatGPT, Gemini, Deepseek, Copilot and Grok, matched on a medium of exactly ai-assistant. Two things to understand about it. First, it explicitly excludes Google's own AI Overviews and AI Mode, which stay under Organic Search — so the AI Assistant number is not your total AI-driven traffic. Second, it only captures visitors who clicked through, so it undercounts the answers where an AI cited you and nobody clicked. It's still the best available measure, and it belongs broken out in your report rather than buried in Referral, especially if you're investing in answer engine optimization.
A standalone GA4 and conversion tracking implementation is commonly quoted in the range of roughly $2,000 to $10,000 depending on scope, with server-side tagging builds running materially higher. The cost drivers are how many channels are tracked, whether call tracking and CRM integration are in scope, whether a previous setup has to be untangled first, and whether your volume justifies server-side tagging. Watch the recurring costs that rarely appear in a quote: Looker Studio is free and connects to Google sources at no cost, but third-party connectors for Meta, LinkedIn or Stripe run through paid partners at roughly $20 to $200+ per month, and Looker Studio Pro adds about $9 per user per month. Call tracking adds per-number and per-minute charges. We give you an exact quote on the first call rather than a range, and the quote names the recurring tooling costs separately so nothing shows up later as a surprise.
Six questions, and the answers tell you more than any portfolio. One: will the GA4 property, Google Ads account and call tracking account be in my name, and will you put that in writing? Two: show me a real report from an existing client with the names redacted, not a template. Three: does your reporting show cost per booked job, or does it stop at leads? Four: how do you track phone calls, and how do you keep tracking numbers from damaging my local listings? Five: when GA4 and Google Ads disagree, how do you explain the gap? Six: how do you get closed revenue from my CRM back into the ad platforms? An agency that answers all six specifically has built this before. One that redirects to case studies and awards has not.
If you can't currently name your cost per booked job by channel, that's the thing worth fixing before you spend another dollar on ads. Drop your domain and we'll look at what you have running, tell you what's broken, and give you an exact price on the first call — no proposal deck, no discovery sequence, no long-term contract. Or call (904) 822-4733.
Real strategist, real numbers, real quote. Quarter-to-quarter — no lock-ins.
