Data & Analytics
Analytics implementation you can actually trust
GA4 and Google Tag Manager configured, tested and evidenced — so the number you report is the number that happened.
- From
- $300–$3,000
- Typical time
- 1–3 weeks
- Usually bought by
- Any business
What this actually solves
Two situations bring people here, and both are really the same problem wearing different clothes. In the first, there is nothing — the site is live, people are visiting, and the owner has no idea what any of them do. They want to advertise but they cannot tell whether advertising works, so every budget conversation is a guess.
The second is more common and more expensive. Analytics is installed, and its numbers do not agree with anything else. The shop platform says eighty-two orders. Analytics says sixty-one. The ad account claims ninety-four. The owner is stuck between three numbers and has quietly stopped using any of them, which means the reporting exists but the decisions have gone back to instinct.
What is being bought here is not tags. It is the ability to believe a number again. That is also why the work is worth doing carefully, because the failure mode is not an empty report — it is a full report that is wrong. A thank-you page that loads twice inflates every purchase. The team's own test orders sit inside the total. An internal traffic filter that was created but never switched from testing to active leaves staff sessions in the data forever. None of that announces itself. It just quietly moves the cost-per-sale you are budgeting against, in the direction that makes you spend more.
What we do, and in what order
The order is deliberate. Events are defined before they are built, and everything is verified before anything is handed over.
- Agree what success means, in three to six events. Not a list of everything measurable — a short list of the actions that decide whether the month was good. Each one gets a written definition of when it fires and what detail travels with it. This becomes the tracking plan, and it is what stops scope drifting later. Half a day to a day.
- Audit what is already there. What is installed, what is installed twice, what is broken, and which pages the existing tag never reaches — checkout and thank-you pages are the usual gap, because they often live on separate systems. You get this in writing before anything is changed, so the condition of the old data is on record. Half a day.
- Configure the property and the container properly. Time zone and currency, data retention moved off its two-month default to the fourteen-month maximum, an internal traffic filter created and set to active, payment domains added to the unwanted referrals list, enhanced measurement reviewed rather than left on by default, and analytics driven through the container only. Half a day to a day.
- Build the events. Clicks, forms, and where meaningful scroll or video. For a shop, the full funnel — item views, add to cart, checkout start, purchase and refund — with the items array populated correctly, which is where a developer or a platform plugin is usually needed. Custom dimensions registered, because a parameter that is not registered never appears in a report. Two days to two weeks.
- Test everything, twice, in two places. Container preview for firing conditions, DebugView for what actually arrives, then the standard reports two days later once processing has caught up. Where you advertise, key events are marked and linked to the ad account. Where any of your customers are in Europe or the UK, consent mode is configured with all four signals. One to two days.
- Hand over evidence, not assurances. The tracking plan sheet, dated screenshots of every test, and a short walkthrough video so the next person inherits a documented setup rather than a mystery. Half a day.
What moves the price
Whether there is e-commerce. A shop roughly doubles the work, and almost all of that is one thing — getting the items array to arrive complete and correctly typed on every step of the funnel. That usually means code in the site rather than configuration in a container.
What the site is built on. A mainstream shop or CMS platform has mature plugins and predictable behaviour. A custom build, or a checkout that hands off to a different domain, means every event is built and verified by hand.
What has to be undone first. A clean site is faster than one carrying two years of half-finished tagging from three different people. Add consent mode or server-side tagging and the work moves toward the top of the range, because both need testing across consent states rather than a single happy path.
What usually goes wrong
The tag is installed twice. Once in the theme, once in the container, and every metric is inflated. It is easy to miss because nothing looks broken — the tell is an engagement rate that seems suspiciously healthy and a page-views-per-session figure sitting very close to exactly two. Businesses run on those numbers for months.
The internal traffic filter is built but never activated. It is created in the admin interface, it looks correct in the list, and it sits in testing state doing nothing. Your own team's browsing, your developer's clicking, and every staff test order stays in the reports. On a low-traffic site this is not a rounding error, it is a large share of the conversions.
The payment gateway becomes your biggest traffic source. A visitor leaves for the payment provider's domain and comes back, and analytics treats the return as a brand new person referred by that provider. The channel that actually earned the sale loses the credit, and the report says your best acquisition source is your own checkout. The fix is adding those domains to the unwanted referrals list before the first campaign runs, not after three months of misattributed spend.
See where the site stands before you brief anyone.
If the site is already live, start from what it scores rather than from a guess. The audit reports what it checked, what it found, and — the part most tools leave out — what it could not check, and why.
Questions people ask before they commit.
- Why do Shopify, GA4 and Facebook all give me different order counts?
- Because they count different things over different windows. A shop counts an order when payment clears. GA4 counts a purchase event when a browser reaches a page and is willing to be measured. An ad platform counts a conversion it believes it caused, within its own lookback period. These three will never match exactly and anyone telling you they will is selling something. What we do instead is write down how large the gap should normally be for your setup, so that when the gap changes you know something has actually broken.
- Analytics is already installed on my site. Is there anything to do?
- Usually there is. The quick test is to open your reports and find last month's most important number — orders or qualified leads. Most of the time that number is either missing, or far enough from the real one that no decision should be made on it. That is not a criticism of whoever installed it; tracking degrades every time a theme, a checkout or a plugin changes, and nobody is watching.
- Can you fix last year's data as well?
- No, and this is worth being blunt about before we start. Analytics data is written once at the moment it is collected. If a purchase was recorded without a value, or a test order was counted, that stays in the historical reports permanently. What we can do is make everything from the switch-on date correct, and tell you specifically how far your older numbers can be trusted and where they cannot.
- Do I need Tag Manager if Analytics has its own snippet?
- You need one route, not two, and a container is the better one because it lets marketing tags be added and tested without touching site code. What causes real damage is having both — the snippet in the theme and the tag in the container. Everything is then counted twice, and the symptom is subtle enough that people live with it for months.
- Will you push customer emails into Analytics so I can match people up?
- No. Sending personally identifiable information into Analytics or an ad platform breaches their policies and can get the property terminated, taking your history with it. Where you need person-level joining, that belongs in a warehouse or CRM with a hashed identifier, not in an event parameter.
- How will I know it works, rather than being told it works?
- You get three things. Screenshots from the container's preview mode showing each tag firing on the right action, screenshots from DebugView showing the events arriving with their parameters, and a check of the standard reports two days later, because some reports only populate after processing. Those go into a tracking plan sheet alongside the definition of every event, so a future developer can see exactly what was built.
Often taken together.
Start with the brief, not the invoice.
Send what you are trying to achieve. You get a written scope, a price and a date — or an honest “this is not the right service for that”.
Talk about Analytics implementation (GA4 / GTM) All Data & Analytics services