GTM Server-Side (dev view)
Informational page. GTM config is owned by the agency. Read this if you want to understand what happens downstream of your
dataLayer.pushcalls.
Diagramโ
Browser GTM Web (client-side) GTM Server (Stape)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
dataLayer.push โโโโโบ 1 GTM Web container โโโโโโโโโโโโโโโโโโโโโโ
โโโบ Meta Pixel (browser) โ Server container โ
โโโบ Google Ads tag โ โ Tag: Meta CAPI โ
โโโบ GA4 Client โโHTTPSโโโโโโโโโโโบ โ โ Tag: GA4 MP โ
โ โ Tag: GAds CAPI โ
โโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
Meta + Google APIs
Why 2 containers?โ
- GTM Web (client) โ places Meta Pixel in the browser (for
_fbp/_fbc), tags Google Ads remarketing. Forwards a GA4 event to the server. - GTM Server โ receives that event, enriches it (server IP, UA, hashes PII), and fans out to Meta / GA4 / Google Ads server APIs.
Client-side tagsโ
Configured by the agency in GTM Web:
| Trigger (Custom Event) | Fired tags |
|---|---|
view_item | Meta Pixel ViewContent, GA4 Event view_item |
add_to_cart | Meta Pixel AddToCart, GA4 Event add_to_cart, GAds remarketing |
begin_checkout | Meta Pixel InitiateCheckout, GA4 Event begin_checkout |
add_payment_info | Meta Pixel AddPaymentInfo, GA4 Event add_payment_info |
purchase | Meta Pixel Purchase, GA4 Event purchase, GAds Conversion |
sign_up | Meta Pixel CompleteRegistration, GA4 sign_up |
generate_lead | Meta Pixel Lead, GA4 generate_lead, GAds Lead |
Server-side tagsโ
The GA4 client forwards all events to the GA4 Client tag in the server container at analytics.biosphereskincare.com.
Server-side, the agency configures:
| Server tag | Action |
|---|---|
| GA4 | Forwards the event to GA4 (Measurement Protocol) |
| Meta Conversions API | Sends to Meta (with SHA-256 hashed PII and same event_id as Pixel for dedup) |
| Google Ads Conversion | Sends conversion to Google Ads (Enhanced Conversions) |
Subdomainsโ
| Subdomain | Role |
|---|---|
load.analytics.biosphereskincare.com | Serves gtm.js and ns.html first-party |
analytics.biosphereskincare.com | Receives server-side hits from GA4 client |
CNAMEs to create (values from agency):
load.analytics.biosphereskincare.com CNAME <id>.stape.io
analytics.biosphereskincare.com CNAME <id>.stape.io
See Stape subdomain for details.
DataLayer variablesโ
The agency creates these variables in GTM Web to read what you push:
| GTM variable | dataLayer path |
|---|---|
DLV - ecommerce | ecommerce |
DLV - ecommerce.items | ecommerce.items |
DLV - ecommerce.value | ecommerce.value |
DLV - ecommerce.currency | ecommerce.currency |
DLV - ecommerce.transaction_id | ecommerce.transaction_id |
DLV - user_data.email | user_data.email |
DLV - user_data.phone | user_data.phone |
| โฆ | โฆ |
โ Your only job is to respect these paths when pushing.
Consent Mode v2โ
The agency enables Google Consent Mode v2 in GTM via a CMP. ad_user_data / ad_personalization / analytics_storage / ad_storage must be declared BEFORE GTM loads.
You don't filter events on consent โ GTM blocks the relevant tags automatically.
CMP โ GTM injection order: coordinate with the agency (CMP in <head>, GTM right after).