GA4 is the most common analytics tag and the most common source of silent failures. The failure modes are specific: a developer changes the data layer schema without updating GTM, a consent management platform blocks the tag at page load, a GTM container publish introduces a trigger conflict, or Google's gtag.js library updates and breaks a custom event configuration.
GA4 does not tell you when events stop arriving. The Realtime report shows what is flowing in, but it does not compare against a baseline. If your purchase event drops from 200/day to 120/day, GA4 does not alert you. You find out when someone notices the revenue report looks wrong — days or weeks later.
The highest-impact event. It depends on the data layer containing transaction_id, value, currency, and an items array. If any field is missing or malformed, the event fires but GA4 discards it server-side. Your GTM Preview shows the tag as fired. GA4 never records the transaction. Common cause: a checkout redesign changes the data layer push timing.
Fires on every page load. Seems simple. Breaks when: a single-page application (SPA) handles navigation via JavaScript and the page_view event only fires on the initial load, not on route changes. Also breaks when the gtag config fires before the consent management platform initializes, and gets blocked. Fire rate drops 30–60% and nobody notices because the GA4 session count is still “in the ballpark.”
Depends on the product data layer push happening before the user navigates away from the product page. Race condition: the user clicks “Add to Cart” and the page navigates to the cart before the data layer push completes. The event fires with empty item data, or does not fire at all. Frequency: 5–15% of add-to-cart interactions, depending on site speed and implementation.
Fires when the user starts the checkout flow. Breaks when the checkout is a separate domain or subdomain and cross-domain tracking fails. The client ID does not carry over, the session splits, and the begin_checkout event fires under a new session with no attribution history. The event technically works. The attribution data is garbage.
Fires on product detail pages. Breaks when the trigger is a DOM element that changes name or class during a site redesign. GTM trigger stops matching. The tag never fires. Nobody checks because view_item is a mid-funnel event that does not directly affect revenue reports.
The TagDrishti dashboard shows a success rate percentage for each tag. For GA4 events, success means: the event fired in the browser, the outbound request to analytics.google.com was sent, and the endpoint returned a 2xx response. A 95% success rate means 5% of fires either failed to send the network request or received a non-success response.
What counts as a failure:
Navigate to Tag Health in the TagDrishti dashboard. The GA4 section shows:
Events table: Each GA4 event name, its fire count (last 24 hours), success rate, and trend arrow. Click an event to see the per-page breakdown. If purchase fires 200 times on /checkout/confirmation but only 3 times on /checkout/complete, you have a page-specific issue.
Data completeness score: For each event, TagDrishti checks whether the required parameters are present and non-null. A purchase event with value: undefined gets flagged. The completeness score tells you what percentage of fires included all required fields.
Baseline comparison: After the 7-day calibration, the dashboard shows “expected vs. actual” for each event. If purchase events typically fire 180–220 times per day and today’s count is 90, the dashboard flags the deviation with an orange or red indicator.
Go to Settings → Alert Rules. For each GA4 event, you can set:
page_view, 85% for purchase (some ad blocker loss is normal).purchase, 10% for other events.Start with the defaults. Tighten thresholds after two weeks once the baseline stabilizes. Overly tight thresholds cause alert fatigue. Overly loose thresholds miss real incidents.
GA4 data loss is permanent. Google does not backfill missed events. Every hour a broken tag runs is an hour of data you will never recover.