Browser-only tracking keeps losing signal, and ad platforms bid on whatever signal they get. John Williams builds the server-side layer that sends verified outcomes back to Google, Microsoft, and Meta, with consent respected and nothing counted twice.
| Component | What it does | Source |
|---|---|---|
| Server-side Google Tag Manager | A tag container that runs on a server you control, in your Google Cloud project or another environment, instead of in the browser. Clients receive requests and turn them into events, and tags forward them on. Google recommends serving it from your first-party domain in production mode. | Google for Developers |
| Google tag gateway for advertisers | Loads the Google tag from your own domain and sends some measurement requests through it, using your CDN, load balancer, or web server. Google recommends combining it with server-side tagging "for the most durable tagging setup." | Google for Developers |
| Enhanced conversions | Sends SHA-256-hashed first-party data (email, phone, address) with conversions to improve measurement. Since June 2026, enhanced conversions for web and for leads are one on/off setting, fed by tags, Data Manager, and API connections together (settings update). | Google Ads Help |
| Offline conversion import / enhanced conversions for leads | Sends CRM outcomes (qualified, closed, value) back to Google Ads using GCLID and/or hashed user data. From June 15, 2026, these uploads move to the Data Manager API and are blocked in the Google Ads API, apart from legacy allowlisting. | Google Ads Help |
| Meta Conversions API | A server-to-Meta connection for web, app, offline, and messaging events. Can be set up in one click from Events Manager if you already have a Pixel, or built as a direct integration. | Meta for Developers |
Click, landing, lead or purchase, CRM stages, revenue. For each step: which system knows about it, what identifiers exist (GCLID, fbclid/fbc, email), and how long it takes. This map decides everything else.
Server-side tracking amplifies whatever you feed it, mistakes included. The web container, data layer, and consent mode have to be right first (see GA4 setup).
Deploy Google tag gateway for quick first-party serving, then the server container on a first-party subdomain for the tags that benefit from server processing. Verify in Tag Assistant that hits go to your measurement path.
Meta's recommended method: the Pixel's eventID must match the server's event_id,
and the event names must match. Meta discards the duplicate only if both arrive within 48 hours (Meta deduplication docs). For website events, Meta requires action_source, event_source_url, and
client_user_agent. Event Match Quality is scored 0–10 from the last 48 hours of events (About event match quality).
Store GCLID and hashed contact data with each lead, then send stage changes back as conversions with values. Google now recommends enhanced conversions for leads over classic offline import, and routes uploads through Data Manager (About offline conversion imports). Then point bidding at the qualified-lead or revenue action (see bidding strategy).
Alerts on event volume drops, daily Event Match Quality and enhanced-conversion diagnostics checks, and a documented response plan. When something breaks, a data exclusion in Google Ads keeps Smart Bidding from learning from the bad days (data exclusions).
| Situation | What John usually recommends |
|---|---|
| Small site on Cloudflare, Google Ads only | Google tag gateway through the Cloudflare integration, enhanced conversions, and solid consent mode. A server container is often unnecessary at first. |
| Ecommerce on Shopify or similar, Google and Meta | Tag gateway, enhanced conversions, Meta CAPI (platform integration or server container) with deduplication, and purchase values checked against orders. |
| Lead gen with a CRM (HubSpot, Salesforce) | Enhanced conversions for leads, CRM stage uploads through Data Manager, Meta CAPI for qualified-lead events, and bidding pointed at qualified outcomes. |
| Many vendors, heavy pages, multiple platforms | Server-side GTM on a first-party subdomain to consolidate vendors and transform data, plus tag gateway for Google tags. |
| Long sales cycle, low conversion volume | Offline imports with values and an intermediate qualified-stage conversion, so bidding has enough signal (see the bidding strategy page). |
Server-side infrastructure is something you own, which also means you're responsible for keeping it running. We set it up in your cloud or hosting account, document it, and hand over admin access, so you're never locked into us. Ongoing costs are your hosting bill (Cloud Run or a managed host) plus whatever monitoring you choose. We quote hosting options upfront, so the running cost is a known number before you commit.
Nothing ships until every line below has been checked and written into the runbook.
event_id values from browser and server.
Server-side work is quoted as a flat project fee after we map your conversion journey, because a tag gateway on Cloudflare and a multi-platform server container with CRM uploads are very different builds. The quote separates our fee from the hosting you'll pay your provider directly, so both numbers are known up front. Per the pricing page, nothing at Ahmeego is billed as a percentage of ad spend and there are no long contracts. The free Marketing Analytics Auditor shows what your browser tags are doing today.
Server-side tracking connects your site, your CRM, and every ad platform. Official product pages for each are below.
Logos via the Simple Icons project. Trademarks belong to their owners; no endorsement implied.
Builds and write-ups from ahmeego.com on tags, conversion endpoints, and closing the loop with ad platforms.
Tell John your site platform, CRM, ad platforms, and where you think signal is being lost. He'll reply with which components you actually need.
The primary sources, standards, research, and tools we rely on for this work. Every link was checked on 2026-10-11. We aren't affiliated with these publishers unless noted.
Run the free Marketing Analytics Auditor on your site, then bring the results to John.
Launch the auditor Talk to John