Signal Loss Recovery Specialists
We design Server-Side GTM infrastructure, deploy Meta Conversions API (CAPI), and build first-party data pipelines that restore attribution accuracy — for businesses and agencies that depend on reliable marketing data.
Modern browsers, privacy regulations, and ad-blockers have fundamentally broken client-side tracking. Here's what the old approach costs you — and how we fix it.
| Problem | Old Way (Client-Side) | Our Solution (Server-Side) |
|---|---|---|
| Safari ITP Cookie expires in 7 days or 24hrs |
Cookies wiped by ITP — attribution broken | ✓ HttpOnly FPID cookie set server-side — 2 year lifetime |
| Ad-Blockers ~26% of desktop users block scripts |
Pixel blocked — events never reach Meta/GA4 | ✓ Events sent via first-party sub-domain (gtm.yourdomain.com) |
| iOS ATT (App Tracking Transparency) Post iOS 14.5 |
Meta pixel loses 40%+ of conversions | ✓ CAPI sends server events, deduped with event_id — full signal |
| API Keys & PII Exposure Pixel access tokens visible in browser |
Keys exposed in Network tab — security risk | ✓ Keys in GCP Secret Manager — SHA-256 hashing before any vendor call |
| Page Performance Heavy 3rd-party JS slows LCP |
5+ heavy pixels fire in browser — slow load | ✓ Thin client JS only — processing moved to Cloud Run |
| Data Discrepancy GA4 vs CRM revenue misalignment |
20–30% gap between platforms is common | ✓ Server-side GA4 + transaction_id dedup reduces to <5% |
We architect the full pipeline — not just install tags.
Full provisioning of a Google Cloud Run tagging server with a first-party custom domain (e.g., gtm.yourdomain.com).
Browser + Server event deduplication using event_id matching — no double counting, full signal recovery.
First-party hashed customer data improves conversion matching and Smart Bidding accuracy.
Bypass mobile web-view limitations with direct server-to-server event delivery.
Event schema design tied to real business KPIs — not just pageviews.
Deny-by-default logic ensures GDPR/CCPA compliance while preserving modelled conversion data.
Scalable architecture for agencies and enterprises managing 10–50+ websites.
Build the full data plumbing from browser event to BI dashboard.
It's not just about bypassing ad-blockers — it's a fundamental upgrade to your data infrastructure.
API keys, Pixel Access Tokens, and hashed PII never touch the browser. Stored in GCP Secret Manager, rotated automatically.
Move heavy tracking JS off the browser. Typical LCP improvements of 15–25%. Better Core Web Vitals → better SEO rankings.
Attach CRM attributes, hashed emails, user segments, and server-side cookies to events before they reach GA4 or Meta — without touching the browser.
Events sent from a first-party server endpoint (your sub-domain) bypass ad-blockers, ITP, and ATT restrictions entirely.
A structured sprint from audit to production-grade server-side infrastructure.
Complete tag audit, PII leak detection, data layer health check. Identify discrepancies between GA4, CRM, and ad platforms. Produce the Solution Design Reference (SDR).
Design global data layer schema, measurement framework aligned to KPIs, GTM container governance rules, Consent Mode V2 strategy.
Provision Cloud Run tagging server, configure custom domain, deploy GA4 client + vendor CAPI tags, set up Secret Manager, enable Cloud Logging.
Implement Meta CAPI, Google Enhanced Conversions, TikTok/Snapchat Events API. Configure event_id deduplication. Validate Event Match Quality scores.
BigQuery SQL validation, GA4 DebugView checks, Network tab payload inspection, cross-device testing. Achieve <5% discrepancy vs CRM before sign-off.
Tag request process, automated Python/SQL alerts when events drop, quarterly data quality reviews, credential rotation in Secret Manager.
| Complexity | Scope | Typical Effort |
|---|---|---|
| Low | Standard page tracking, basic event clicks, GA4 property setup | 2–4 hours |
| Medium | Custom data layer integration, lead form tracking with validation, GTM Consent Mode | 8–16 hours |
| High | Enhanced Ecommerce (Headless), Server-Side GTM + CAPI, cross-domain, BigQuery pipeline | 40–80+ hours |
| Enterprise | Multi-site sGTM (50+ domains), full SDR, all Conversion APIs, CRM integration, BI pipeline | Custom roadmap |
metrics.yourdomain.com). This sets a first-party HttpOnly cookie via the server — completely invisible to ITP, extending cookie life to 2 years. The cookie stores the FPID (First-Party ID) used for cross-session attribution.event_id is not set consistently client and server side, you get double counting, (3) timezone mismatches between GA4 and Meta reporting. We audit all three as Day 1 of every engagement.user_id field (anonymous), and pass the hashed email only to platforms that require it for matching (Meta CAPI em field, Google Enhanced Conversions).gtm.yourdomain.com) rather than dozens of 3rd-party domains.{{Page Hostname}} variable and routes to the correct Measurement ID automatically. We also use GTM Workspace environments (Dev/Staging/Live) aligned to the SDLC.analytics_storage or ad_storage is granted. In sGTM, we check a consent_for_server flag before forwarding personalizable payloads to CAPI.Technical detail on the most complex implementation scenarios. Click to expand.
Cloud Run is the default: scales to zero when idle (cost-efficient), auto-provisions via GTM guided setup. App Engine Flexible suits traffic >1M events/day where guaranteed min-instances avoid cold starts.
Critical: Always configure a custom CNAME (e.g. gtm.yourdomain.com) in GTM Server Container → Tagging Server URLs. Without a custom domain, cookies are set in a 3rd-party context and stripped by ITP. Set min-instances=1 on Cloud Run to eliminate cold starts on first hit.
Use separate GCP projects for Dev / Staging / Prod. Never point production traffic at a test container.
Deduplication is the most commonly broken part of CAPI. Without matching event_id values, every conversion is counted twice.
Rule: Client pixel fires eventID: "order_12345". sGTM CAPI tag fires event_id: "order_12345" (same string). Meta matches both by event_id + event_name within 48 hours — keeps one, drops the duplicate.
Store the Pixel Access Token in GCP Secret Manager. SHA-256 hash em (email) and ph (phone) before sending. Include client_ip_address and client_user_agent from the incoming request to maximise Event Match Quality score.
Required for EU EEA from March 2024. Uses four signals: analytics_storage, ad_storage, ad_user_data, ad_personalization.
denied.OneTrustGroupsUpdated). A Consent Update tag reads CMP category state and calls gtag("consent","update",{…}).consent_for_server variable. Any tag forwarding PII (CAPI, TikTok Events API) fires only when consent_for_server === true.The dataLayer is the contract between developers and analytics. Push events before GTM loads on the confirmation page. Always include a unique transaction_id — GA4 uses this to deduplicate duplicate purchase hits within 24 hours.
window.dataLayer.push({
event: "purchase",
transaction_id: "ORD-2026-98765",
value: 1250.00, currency: "GBP",
items: [{
item_id: "SKU-123",
item_name: "sGTM Audit",
price: 625.00, quantity: 2
}]
});
For Shopify, use the Order Status Page "Additional Scripts" section or a Checkout App to guarantee server-confirmed fires.
GA4 exports data with nested event_params arrays. Use UNNEST to flatten before querying:
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_url,
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS session_id,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'transaction_id') AS transaction_id,
(SELECT value.double_value FROM UNNEST(event_params) WHERE key = 'value') AS revenue,
PARSE_DATE('%Y%m%d', event_date) AS event_date
For Redshift: pre-flatten into a columnar summary table. Use user_pseudo_id as Distribution Key and event_date as Sort Key for optimal join performance.
transaction_id deduplication: GA4 drops duplicate purchases with same ID within 24 hours.SELECT COUNT(DISTINCT (SELECT value.string_value FROM UNNEST(event_params) WHERE key='transaction_id')) FROM events_* WHERE event_name='purchase'We audit your GA4 vs CRM discrepancy, identify PII leaks, and map your signal loss — no charge, no obligation.
We respond within 1 business day with a scoped assessment and effort estimate.
Teams covering US, EU, UK, UAE, India & APAC — aligned to your timezone.
Our architects review your setup, identify signal loss, and send a scoped proposal — no charge.