GTM container templates
Import-ready GTM containers that wire the full ecommerce funnel to PixelFox - and to a PixelFox-hosted sGTM server.
Ready-to-import Google Tag Manager containers, so setup is one import instead of
configuring twenty tags by hand. Download pixelfox-gtm-templates.zip from the
downloads section of pixelfox.app (signed in), pick the file for your mode, and import it.
| File | Container | What it does |
|---|---|---|
pixelfox-web-proxy.json | Web | Browser GA4 event tags, Meta pixel with eventID, TikTok pixel with event_id, Clarity, plus the PixelFox server-side tag posting every event to /v1/ingest with a shared event_id and the Meta/TikTok cookies and click ids. |
pixelfox-web-sgtm.json | Web | Same events, but GA4 transports them to your PixelFox sGTM hostname first (set server_container_url) — see sGTM hosting. Derived from the proxy container at build time, so it never drifts from it; it exists only inside the download zip. |
pixelfox-server-sgtm.json | Server | For a real Google server container — a PixelFox dedicated container, or your own on Cloud Run: GA4 client, GA4 forwarding tag, and the PixelFox Forwarder tag that sends every event on to PixelFox. Add TikTok's and Meta's gallery tags after import if you want them; event_id, ttclid, ttp, fbp and fbc arrive as event parameters on every hit. A PixelFox shared container needs no server container, so it does not need this file. |
pixelfox-forwarder.tpl | Server (tag template) | The PixelFox Forwarder alone, for a server container you already have and do not want to import over: Templates → Tag Templates → New → Import, then add a tag from it firing on All Events. |
Import
- In tagmanager.google.com, open Admin → Import Container.
- Choose the file and merge into a new container (never overwrite a live container).
- Set the placeholder variables before publishing:
| Variable | Value |
|---|---|
PixelFox API Key | Your pfx_live_… key (Dashboard → Sites → Keys). |
PixelFox Ingest URL | https://api.pixelfox.app, or your first-party domain (https://t.yourstore.com). |
GA4 Measurement ID | Your G-… id. |
Meta Pixel ID | Your numeric pixel id. |
TikTok Pixel Code | Your C… pixel code. Leave the placeholder and the TikTok tags stay off. |
LinkedIn Partner ID | Your Insight Tag partner id. Leave the placeholder and the LinkedIn tag stays off. |
Clarity Project ID | Your Clarity project id. |
PixelFox Forward Secret | Server container only. Dashboard → your site → sGTM hosting → Generate forwarding secret. Shown once. |
SGTM Server URL (sgtm mode) | https://ss.yourstore.com - the hostname you claimed under sGTM hosting. |
- Preview, verify one event of each kind, publish.
How deduplication works
The PixelFox Event ID variable mints one id per GTM event and caches it for every
tag that reads it during that event. The Meta pixel fires with that id as eventID, the
TikTok pixel as event_id, GA4 carries it as the event_id parameter, and the PixelFox
server-side tag sends it as event.uuid to /v1/ingest. The PixelFox backend fans conversions out to Meta CAPI and
TikTok with the same id, so the platforms count each conversion exactly once -
browser and server together.
Match keys on every hit
The Google Tag's shared event parameters add ttclid, ttp, fbp, fbc, fbclid and
li_fat_id to every GA4 hit, and the PixelFox ingest tag reads the same cookies and click ids. If
your page pushes a user_data object ({ user_data: { email_address, phone_number, address: { first_name, last_name, city, region, postal_code, country } } }), both paths
carry the hashed match keys too - see match quality.
Event coverage
page_view, view_item, add_to_cart, remove_from_cart, view_cart,
begin_checkout, add_payment_info, add_shipping_info, purchase, search,
select_item, view_item_list, sign_up - all triggered off standard GA4 ecommerce
dataLayer pushes. If your platform already pushes these names (WooCommerce GA4
plugins, Shopify's GA4 integrations, Laravel packages), the triggers light up with no
extra code.
Sanitisation
Every shipped template is passed through a sanitiser that fails the build if any real pixel id, measurement id, container id or API key appears in the JSON. The placeholders above are the only ids in the files - safe to commit and share.
The PixelFox Forwarder (server containers)
A server container sends events wherever its own tags point — which, on its
own, means PixelFox never sees them. The forwarder tag closes that gap: for
every event the container processes it posts the same event to
https://api.pixelfox.app/g/collect, so it lands in your dashboard, joins the
visitor's stitched identity, and reaches the destinations you connected in
PixelFox.
It authenticates with the container's forwarding secret and states the visitor's own IP address and user agent, since PixelFox would otherwise see only the server container's address. See the header contract.
Avoiding double sends. A forwarded event can reach an ad platform twice if your server container has its own tag for a destination that is also connected in PixelFox.
- GA4 — PixelFox never sends a forwarded event to GA4. The server container's own GA4 tag already did, and Measurement Protocol cannot deduplicate a second copy.
- Meta, TikTok — both collapse duplicates that share an
event_id. Keepevent_idmapped on your server tags and the pair counts once. - Everything else, or if you would rather not rely on that — turn off Send forwarded events to destinations for the container. Forwarded events are then stored and stitched but sent nowhere.
Offline & CRM events
Send POS, CRM and call-center conversions server-side, tagged with the right action source.
Compatibility: the signals names
PixelFox was first shipped under the code name "signals". Every identifier from that time still works; this page lists the old and new spellings side by side.