Adding Analytics and Tag Manager to AppBO funnels and sites without destroying the attribution you already rely on.
Bring your stack to a call and we will connect it, test every field in both directions, and hand it over documented.
Book a callOn the Google side sit two distinct things that are often spoken of as one. Analytics is a measurement product: it collects events from your pages, attributes them to traffic sources using its own rules, and reports on funnels and audiences. Tag Manager is a container: a single script you install once, which then loads and configures every other tag (Analytics, ad pixels, chat widgets, heatmaps) without further code changes, governed by triggers and variables you define.
On the AppBO side sit funnels, landing pages, order and booking pages, forms, and the platform's own tracking, which captures source parameters into contact fields and is the basis of the attribution reporting your CRM shows. The two measurement systems overlap but do not agree, and understanding why is most of the work: Analytics attributes sessions by its own model, while the platform attributes a contact by what was on the URL when that contact was created.
You add Analytics and Tag Manager because they answer questions the CRM cannot: how many people reached step two and abandoned, what a visitor did before converting, which page the drop-off is on. You do it carefully because the standard ways of installing them break the thing you already have. A redirect that strips query parameters, a consent banner that blocks the platform's own script, a tag that rewrites links, and the symptom is attribution quietly going blank rather than an error anybody sees.
Scenario: an agency adds Analytics and Tag Manager to a client's funnel and discovers it has been breaking attribution for weeks.
Client-side collection is not rate limited in the way an API is, but Analytics does apply cardinality and collection limits. Caps on the number of distinct event names, parameters and custom dimensions, and thresholds above which reports aggregate values into an other bucket. A container that sends an event name containing a unique identifier will exhaust cardinality and ruin the reports. The reporting API has its own quotas where you read data back. Check Google's current published limits for your property type rather than assuming, and keep event and parameter names to a small controlled vocabulary.
There is no idempotency in client-side measurement, and that is the whole problem: a tag that fires twice counts twice. The usual causes are a container installed both through the sub-account's global setting and again on an individual page, two Analytics tags in one container, a trigger that fires on both a page view and a history change in a single-page flow, and a thank-you page a visitor can reload or revisit. Fire conversion tags on a trigger that happens once, deduplicate with a transaction or event identifier where the tag supports it, and use preview mode to count fires rather than assuming.
Event and parameter names are case-sensitive, and a near-miss creates a second event nobody is reporting on. Parameters must be registered as custom dimensions before they appear in reports, and registration is not retroactive, so a parameter sent for a month before registration is invisible for that month. A value sent as text where a number is expected will not aggregate. Triggers built on CSS selectors break whenever a page is redesigned, and the breakage is silent. The gravest mapping trap is sending personally identifying data into a parameter, which breaches Analytics policy and can put the property at risk.
Duplicates here are duplicate measurements rather than duplicate records, and they are the commonest cause of a dashboard nobody trusts: double-installed containers, double Analytics tags, a conversion tag firing on page load of a reloadable confirmation page. Separately, a visitor who crosses between the website domain and the funnel domain without cross-domain measurement is counted as two users on two sessions, which inflates user counts and destroys source attribution.
Tag Manager's preview mode and Analytics' real-time and debug views are a genuinely good sandbox: you can see every tag, trigger and variable evaluate before publishing. Use a separate container environment or a test property for substantial changes, and never test a new conversion tag against the production property during a reporting period you intend to use. Remember that preview mode proves firing, not reporting, processing delays mean a correctly firing tag can take hours to appear in standard reports.
The client-side container needs no token and keeps working indefinitely, which is both the convenience and the risk: nothing expires, so nothing prompts a review, and a container can go on loading a tag for a tool the business stopped using two years ago. Where you have connected Analytics for reporting into a dashboard, that connection is a normal OAuth grant and breaks with the usual causes. Audit container contents on a schedule rather than waiting for a failure.
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