{"id":70567,"date":"2026-05-22T12:04:05","date_gmt":"2026-05-22T12:04:05","guid":{"rendered":"https:\/\/taggrs.io\/welche-plattformen-unterstuetzen-den-server-seitigen-google-tag-manager\/"},"modified":"2026-05-22T12:38:02","modified_gmt":"2026-05-22T12:38:02","slug":"which-platforms-support-server-side-gtm","status":"publish","type":"post","link":"https:\/\/taggrs.io\/de\/which-platforms-support-server-side-gtm\/","title":{"rendered":"Welche Plattformen unterst\u00fctzen den Server-seitigen Google Tag Manager?"},"content":{"rendered":"\n<p>Der serverseitige Google Tag Manager (sGTM) unterst\u00fctzt viele Werbe- und Analyseplattformen wie GA4, Google Ads, Meta, TikTok, Pinterest, LinkedIn, Snapchat, Klaviyo und ActiveCampaign. E-Commerce-Datenebenen sind f\u00fcr CMSs wie WordPress, Shopify, Lightspeed, Magento, WooCommerce und PrestaShop verf\u00fcgbar. Mobile Apps f\u00fcr iOS und Android werden ebenfalls unterst\u00fctzt.  <\/p>\n\n\n\n<p>Der Standort der einzelnen Plattformen (Web-Container, Server-Container oder beides) bestimmt, <strong>ob Ihre Konvertierungsdaten korrekt sind<\/strong>.<\/p>\n\n\n\n<p>In diesem Artikel erfahren Sie, warum die einzelnen Platzierungsentscheidungen so wichtig sind, was passiert, wenn Sie es falsch machen, und was sGTM-Hosting-Anbieter wie TAGGRS auf der Infrastrukturebene tun, was die Container-Einrichtung allein nicht beheben kann. Und wenn Sie Ihre Plattform(en) bereits kennen, k\u00f6nnen Sie mit dem <strong>interaktiven Checker<\/strong> unten direkt zu den Konfigurationsschritten springen. <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-a-gtm-server-container-and-what-does-it-host\">Was ist ein GTM-Server-Container, und was wird darin gespeichert?<\/h2>\n\n\n\n<p>Ein GTM-Server-Container l\u00e4uft auf einem gehosteten Server und f\u00fchrt Tags von Server zu Server aus, getrennt vom Browser des Besuchers. Er arbeitet neben dem Standard-GTM-Webcontainer mit einer Zwei-Container-Architektur: <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Web-Container,<\/strong> der im Browser des Besuchers l\u00e4uft und clientseitige Tags ausf\u00fchrt<\/li>\n\n\n\n<li><strong>Server-Container,<\/strong> der auf einem gehosteten Server (wie TAGGRS) l\u00e4uft und Tags von Server zu Server ausf\u00fchrt.<\/li>\n<\/ol>\n\n\n\n<p>Der Server-Container ist der Ort, an dem die eigentliche Arbeit stattfindet. Wenn er richtig konfiguriert ist, setzt er Erstanbieter-Cookies, die bis zu 365 Tage lang g\u00fcltig sind. Und das ist heute wichtiger denn je, denn der ITP von Safari begrenzt die Dauer der vom Browser gesetzten Cookies auf 7 Tage, und Safari wird Anfang 2026 etwa 17 % des weltweiten Browser-Marktanteils ausmachen. (Quelle: StatCounter, <a href=\"https:\/\/gs.statcounter.com\/browser-market-share\" target=\"_blank\" rel=\"noopener\">Browser-Marktanteil weltweit<\/a>)   <\/p>\n\n\n\n<p>Einfach ausgedr\u00fcckt: <strong>Bei fast 1 von 5 Ihrer Sitzungen gehen standardm\u00e4\u00dfig Tracking-Daten verloren, wenn Sie nur client-seitig arbeiten<\/strong>.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/taggrs.io\/de\/cookie-recovery-ios\/\">Erfahren Sie, wie Sie die Lebensdauer von Cookies verl\u00e4ngern k\u00f6nnen<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/taggrs.io\/de\/gtm-server-side-tagging-hosting\/\">TAGGRS sGTM hosting<\/a> ist ein verwalteter Server-side Tracking-Anbieter, der Ihren GTM-Server-Container auf einer <a href=\"https:\/\/taggrs.io\/de\/infrastructure\/\">unabh\u00e4ngigen europ\u00e4ischen Infrastruktur<\/a> hostet. Er arbeitet mit Google Tag Manager zusammen und verwendet zwei Container: <\/p>\n\n\n\n<p>TAGGRS sGTM-Hosting funktioniert mit jedem Website-Stack. Die Regel lautet: Wenn es mit Google Tag Manager funktioniert, funktioniert es auch mit TAGGRS. Zu den CMS mit dedizierter Datenschichtunterst\u00fctzung geh\u00f6ren also WordPress, Shopify, Lightspeed, Magento, WooCommerce und PrestaShop. Mobile Apps auf iOS und Android werden ebenfalls unterst\u00fctzt.   <\/p>\n<\/blockquote>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-to-place-the-container\">Wo soll der Container aufgestellt werden?<\/h2>\n\n\n\n<p>Jede Plattform wird in 1 von 3 Konfigurationen platziert. Dies ist eine architektonische Entscheidung, die sich darauf auswirkt, ob Konversionen korrekt gez\u00e4hlt werden, ob Cookies die ITP \u00fcberleben und ob Daten Ihre Infrastruktur vor oder nach der Anwendung der Einwilligung verlassen. Hier ist die Aufschl\u00fcsselung:  <\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Konfiguration<\/strong><\/td><td><strong>Was es bedeutet<\/strong><\/td><td><strong>Wann Sie es verwenden sollten<\/strong><\/td><\/tr><tr><td>Nur Webcontainer<\/td><td>Tag wird im Browser ausgef\u00fchrt. Keine Server-Komponente. <\/td><td>Nicht relevant f\u00fcr sGTM-Setups.<\/td><\/tr><tr><td>Nur Server-Container<\/td><td>Alle Daten flie\u00dfen vom Server. Kein Browser-Tag. <\/td><td>Wenn die Plattform die Deduplizierung nicht unterst\u00fctzt oder wenn das Browser-Tag unn\u00f6tig ist.  <br>Hinweis: Ohne eine bestehende clientseitige GTM-Einrichtung erfordert eine reine Server-Konfiguration eine benutzerdefinierte Tracking-Implementierung. Sowohl die Frontend-Ereignissammlung als auch die Backend-Ereignisweiterleitung m\u00fcssen von Grund auf neu erstellt und gepflegt werden.<\/td><\/tr><tr><td>Beide Container<\/td><td>Das Browser-Tag sendet Daten an den Server-Container, der sie an die Plattform weiterleitet. Der Web-Container kann auch Daten an die server-side senden, ohne etwas direkt an eine Plattform zu senden. Eine Deduplizierung ist nur dann erforderlich, wenn sowohl der Browser als auch der Server gleichzeitig an dieselbe Plattform senden.  <\/td><td>Wenn die Plattform sowohl von Browsersignalen als auch von der Zuverl\u00e4ssigkeit des Servers profitiert.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-container-does-your-platform-belong-in\">In welchen Container geh\u00f6rt Ihre Plattform?<\/h2>\n\n\n\n<p>Sie wissen nicht, wo Sie eine bestimmte Plattform platzieren sollen?  <strong>Verwenden Sie den Checker unten.<\/strong>  W\u00e4hlen Sie eine Plattform aus und informieren Sie sich \u00fcber die Containerplatzierung, die Deduplizierungsanforderungen und die genauen Konfigurationsschritte.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!-- TAGGRS Platform Checker - all styles inline, no <style> block -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<div id=\"plc-root\" style=\"font-family:'Poppins',sans-serif;max-width:800px;margin:0 auto;box-sizing:border-box\">\n\n  <div style=\"background:linear-gradient(145deg,#e4f5ee 0%,#ddedf8 55%,#e8f4fb 100%);border-radius:20px;padding:36px 40px 40px;box-sizing:border-box;font-size:14px;line-height:1.5;color:#0f3528\">\n\n    <div style=\"display:flex;align-items:center;gap:7px;margin-bottom:8px\">\n      <span style=\"width:6px;height:6px;border-radius:50%;background:#2a7a5e;display:inline-block;flex-shrink:0\"><\/span>\n      <span style=\"font-size:11px;font-weight:600;letter-spacing:0.09em;text-transform:uppercase;color:#2a7a5e\">Platform checker<\/span>\n    <\/div>\n\n    <h2 id=\"where-does-your-platform-belong\" style=\"font-size:21px;font-weight:700;color:#0f3528;line-height:1.2;margin:0 0 7px 0\">Where does your platform belong?<\/h2>\n    <p style=\"font-size:13px;color:#4d7a6a;line-height:1.6;margin:0 0 26px 0;max-width:540px\">Select a platform to see which container it goes in, why, and how to configure it correctly.<\/p>\n\n    <label style=\"font-size:11.5px;font-weight:600;color:#0f3528;margin-bottom:8px;display:block\" for=\"plc_platform\">Select a platform<\/label>\n    <div style=\"position:relative;margin-bottom:6px\">\n      <select id=\"plc_platform\" onchange=\"plcShow()\" style=\"width:100%;box-sizing:border-box;background:rgba(255,255,255,0.82);border:1.5px solid rgba(255,255,255,0.95);border-radius:11px;font-family:'Poppins',sans-serif;font-size:14px;font-weight:600;color:#0f3528;padding:12px 40px 12px 16px;outline:none;cursor:pointer;appearance:none;-webkit-appearance:none\">\n        <option value=\"\">\u2014 Choose a platform \u2014<\/option>\n        <option value=\"ga4\">Google Analytics 4<\/option>\n        <option value=\"google_ads\">Google Ads<\/option>\n        <option value=\"meta\">Meta \/ Facebook<\/option>\n        <option value=\"tiktok\">TikTok<\/option>\n        <option value=\"pinterest\">Pinterest<\/option>\n        <option value=\"linkedin\">LinkedIn<\/option>\n        <option value=\"snapchat\">Snapchat<\/option>\n        <option value=\"klaviyo\">Klaviyo<\/option>\n        <option value=\"activecampaign\">ActiveCampaign<\/option>\n      <\/select>\n    <\/div>\n\n    <div id=\"plc_result\" style=\"display:none;margin-top:26px\">\n      <div style=\"height:1px;background:rgba(15,53,40,0.1);margin-bottom:22px\"><\/div>\n      <div style=\"display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap\">\n        <span id=\"plc_badge\" style=\"display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:6px 14px;border-radius:99px;letter-spacing:0.03em\"><\/span>\n        <span id=\"plc_placement_label\" style=\"font-size:13px;font-weight:600;color:#0f3528\"><\/span>\n      <\/div>\n      <div id=\"plc_summary\" style=\"background:rgba(255,255,255,0.65);border:1.5px solid rgba(255,255,255,0.9);border-radius:13px;padding:16px 18px;margin-bottom:18px;font-size:13px;color:#2a4a3e;line-height:1.65\"><\/div>\n      <div id=\"plc_dedup\" style=\"display:none;align-items:flex-start;gap:10px;background:rgba(107,191,160,0.15);border:1.5px solid rgba(107,191,160,0.35);border-radius:11px;padding:12px 15px;margin-bottom:18px;font-size:12px;color:#1a5240;line-height:1.6\">\n        <div style=\"flex-shrink:0;margin-top:1px;width:16px;height:16px;background:#2a7a5e;border-radius:50%;display:flex;align-items:center;justify-content:center\">\n          <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\"><path d=\"M2 4.5l2 2 3-3\" stroke=\"#fff\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n        <\/div>\n        <div id=\"plc_dedup_text\"><\/div>\n      <\/div>\n      <div style=\"font-size:11.5px;font-weight:700;color:#0f3528;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:12px\">Configuration steps<\/div>\n      <div id=\"plc_steps\" style=\"display:flex;flex-direction:column;gap:10px;margin-bottom:22px\"><\/div>\n      <a id=\"plc_cta\" href=\"#\" target=\"_blank\" rel=\"noopener\" style=\"display:inline-flex;align-items:center;gap:8px;background:#0f3528;color:#fff;font-family:'Poppins',sans-serif;font-size:14px;font-weight:600;padding:13px 22px;border-radius:11px;text-decoration:none;line-height:1;border:none;cursor:pointer\" onmouseover=\"this.style.background='#1a5240'\" onmouseout=\"this.style.background='#0f3528'\">\n        Switch to the server side\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\"><path d=\"M2.5 6.5h8M7.5 3.5l3 3-3 3\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n      <\/a>\n      <button onclick=\"plcReset()\" style=\"background:none;border:none;font-family:'Poppins',sans-serif;font-size:12px;color:#4d7a6a;cursor:pointer;margin-top:14px;padding:0;display:block;text-decoration:underline;text-underline-offset:3px\">Reset<\/button>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  var platforms = {\n    ga4: {\n      badge: 'both', badgeLabel: 'Both containers', badgeBg: '#0f3528',\n      placementLabel: 'Web container + Server container',\n      summary: 'GA4 is the foundation of every server-side setup. The GA4 Config tag runs in the web container and sends data to the server container, feeding every downstream tag including Google Ads. Without server-side GA4 in place, no other platform in the server container receives data correctly.',\n      dedup: false,\n      steps: [\n        ['Add GA4 Config tag', 'In your <strong>web container<\/strong>, add a GA4 Configuration tag. Set the Measurement ID and point the server container URL to your first-party tagging subdomain (e.g. <em>sst.yourdomain.com<\/em>).'],\n        ['Deploy server container on TAGGRS', 'Connect your GTM server container to TAGGRS. Your tagging subdomain must be a first-party subdomain of the tracked domain.'],\n        ['Add GA4 server tag', 'In your <strong>server container<\/strong>, add the GA4 tag. It will automatically receive events forwarded by the web GA4 Config tag.'],\n        ['Verify data flow', 'Use GTM Preview mode and GA4 DebugView to confirm events are arriving in the server container before going live.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/ga4\/setup-in-gtm'\n    },\n    google_ads: {\n      badge: 'server', badgeLabel: 'Server container only', badgeBg: '#2a7a5e',\n      placementLabel: 'Server container only',\n      summary: 'Google Ads server-side measurement depends entirely on GA4 being configured in both containers first. Once GA4 is set up, all Google Ads tags \u2014 Conversion Tracking and Remarketing \u2014 run exclusively in the server container.',\n      dedup: false,\n      steps: [\n        ['Set up GA4 in both containers first', 'Google Ads has a hard dependency on GA4. Complete the GA4 server-side setup before adding any Google Ads tags.'],\n        ['Add Conversion Linker tag', 'In your <strong>server container<\/strong>, add the Conversion Linker tag. This attaches click data to conversion events \u2014 the most commonly skipped step, and the one that breaks attribution when missing.'],\n        ['Add Google Ads Conversion Tracking tag', 'In your <strong>server container<\/strong>, add the Google Ads Conversion Tracking tag. Configure your Conversion ID and label from your Google Ads account.'],\n        ['Add Google Ads Remarketing tag (optional)', 'If you run remarketing campaigns, add the Google Ads Remarketing tag to the <strong>server container<\/strong>. Same dependency chain as Conversion Tracking.'],\n        ['Test with Tag Assistant', 'Verify the full chain: GA4 Config (web) \u2192 GA4 server tag \u2192 Conversion Linker \u2192 Google Ads tag. Confirm conversions appear in Google Ads \u2192 Measurement \u2192 Conversions.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/google-ads\/conversion-linker'\n    },\n    meta: {\n      badge: 'both', badgeLabel: 'Both containers', badgeBg: '#0f3528',\n      placementLabel: 'Web container + Server container',\n      summary: 'Meta recommends running both the browser pixel and server CAPI simultaneously to maximise match rates and event coverage. Running both increases the chance that each conversion is attributed correctly \u2014 even when the browser signal is blocked or degraded.',\n      dedup: true,\n      dedupText: '<strong>Deduplication required.<\/strong> When both the browser pixel and server CAPI fire for the same event, Meta receives it twice. You must pass a matching <code>event_id<\/code> in both the browser and server events. Meta uses this ID to deduplicate and count the conversion once.',\n      steps: [\n        ['Keep Meta Pixel in the web container', 'Your existing Meta Pixel tag stays in the <strong>web container<\/strong>. Do not remove it \u2014 the browser signal improves match rates.'],\n        ['Add Meta CAPI tag in the server container', 'In your <strong>server container<\/strong>, add the Meta Conversions API tag. Configure your Pixel ID and Meta access token.'],\n        ['Implement event_id deduplication', 'Generate a unique <code>event_id<\/code> for each event (e.g. a UUID or timestamp-based string). Pass the same <code>event_id<\/code> in both the browser pixel event and the server CAPI event. Meta matches them and counts once.'],\n        ['Test in Meta Events Manager', 'Go to Meta Events Manager \u2192 Test Events. Confirm events arrive from both browser and server, and that duplicate events are being deduplicated correctly.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/facebook\/meta-pixel'\n    },\n    tiktok: {\n      badge: 'server', badgeLabel: 'Server container only', badgeBg: '#2a7a5e',\n      placementLabel: 'Server container only',\n      summary: \"Most guides \u2014 including AI overviews \u2014 list TikTok as a 'both containers' platform. This is incorrect. TikTok's pixel does not support event deduplication at the level required to run browser and server tracking simultaneously. Running both inflates conversion counts. Configure server-side only.\",\n      dedup: false,\n      steps: [\n        ['Remove or disable TikTok Pixel from the web container', 'If you have an existing TikTok Pixel tag in your web container, disable it. Running both without deduplication support results in double-counted conversions.'],\n        ['Add TikTok Events API tag in the server container', 'In your <strong>server container<\/strong>, add the TikTok Events API tag. Configure your Pixel ID and TikTok access token.'],\n        ['Confirm user data hashing', 'The tag automatically transforms user data (email, phone) to lowercase and hashes it using SHA256 before sending to TikTok. Verify this is active in the tag settings.'],\n        ['Verify in TikTok Events Manager', 'Go to TikTok Ads Manager \u2192 Assets \u2192 Events \u2192 Web Events. Confirm events are arriving from the server only, with no duplicate browser events.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/tiktok\/pixel'\n    },\n    pinterest: {\n      badge: 'both', badgeLabel: 'Both containers', badgeBg: '#0f3528',\n      placementLabel: 'Web container + Server container',\n      summary: 'Pinterest follows the same dual-signal logic as Meta: browser tag and Conversions API run in parallel. Both channels together give Pinterest the highest-fidelity view of conversion activity, improving attribution and campaign optimisation.',\n      dedup: true,\n      dedupText: '<strong>Deduplication required.<\/strong> With both the browser tag and Conversions API active, Pinterest receives each event from two sources. Pass a matching deduplication key in both the browser and server events so Pinterest counts each conversion once.',\n      steps: [\n        ['Keep Pinterest Tag in the web container', 'Your existing Pinterest Tag stays in the <strong>web container<\/strong>. It continues to fire on browser-level events.'],\n        ['Add Pinterest Conversions API tag in the server container', 'In your <strong>server container<\/strong>, add the Pinterest Conversions API tag. You only need your Pinterest Advertiser ID \u2014 no access token required.'],\n        ['Set up event deduplication', 'Pass a consistent deduplication key in both the browser and server events. Pinterest uses this to match and deduplicate conversion events.'],\n        ['Test with Pinterest Tag Helper', 'Use the Pinterest Tag Helper Chrome extension and Pinterest Events Manager to confirm events arrive from both channels and are deduplicated correctly.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/pinterest\/tag'\n    },\n    linkedin: {\n      badge: 'both', badgeLabel: 'Both containers', badgeBg: '#0f3528',\n      placementLabel: 'Web container + Server container',\n      summary: 'The LinkedIn Insight Tag runs client-side in the web container for audience building and page view data. Conversion events are sent server-side via LinkedIn CAPI, which is more reliable than browser-based conversion tracking \u2014 especially for lead generation campaigns where form submissions can be blocked client-side.',\n      dedup: true,\n      dedupText: '<strong>Deduplication required.<\/strong> LinkedIn uses a <code>conversionId<\/code> to match browser and server conversion events. Pass the same <code>conversionId<\/code> in both to prevent double-counting conversions.',\n      steps: [\n        ['Keep LinkedIn Insight Tag in the web container', 'The Insight Tag stays in the <strong>web container<\/strong> for audience building and page view tracking.'],\n        ['Add LinkedIn CAPI tag in the server container', 'In your <strong>server container<\/strong>, add the LinkedIn Conversions API tag. Configure your LinkedIn Ad Account ID and access token.'],\n        ['Configure conversion event deduplication', 'Pass a matching <code>conversionId<\/code> in both the browser Insight Tag and the server CAPI event. LinkedIn uses this to deduplicate.'],\n        ['Verify in LinkedIn Campaign Manager', 'Go to LinkedIn Campaign Manager \u2192 Analyze \u2192 Conversion Tracking. Confirm server-side conversion events are being received and attributed correctly.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/linkedin\/insights-tag'\n    },\n    snapchat: {\n      badge: 'both', badgeLabel: 'Both containers', badgeBg: '#0f3528',\n      placementLabel: 'Web container + Server container',\n      summary: 'Snap Pixel runs in the web container; Snap Conversions API runs in the server container. Both channels run in parallel. The server tag automatically normalises and hashes user parameters \u2014 including email, mobile identifier, IP address, and phone number \u2014 before sending to Snap.',\n      dedup: true,\n      dedupText: '<strong>Deduplication required.<\/strong> Pass a matching <code>event_id<\/code> in both the browser Snap Pixel and the server Conversions API events. Snapchat uses this to deduplicate and count each conversion once.',\n      steps: [\n        ['Keep Snap Pixel in the web container', 'Your existing Snap Pixel tag stays in the <strong>web container<\/strong>. It continues to fire browser-level events.'],\n        ['Add Snapchat Conversions API tag in the server container', 'In your <strong>server container<\/strong>, add the Snapchat CAPI tag. Configure your Snap Pixel ID and access token.'],\n        ['Confirm user data normalisation', 'The tag automatically normalises and hashes email, phone, IP address, and mobile identifier using SHA256. Verify this is enabled in the tag configuration.'],\n        ['Implement event_id deduplication', 'Pass a matching <code>event_id<\/code> in both the browser and server events so Snapchat deduplicates correctly.'],\n        ['Test in Snap Events Manager', 'Go to Snap Ads Manager \u2192 Events Manager. Confirm events arrive from both channels and are being deduplicated.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/snapchat\/snap-pixel'\n    },\n    klaviyo: {\n      badge: 'server', badgeLabel: 'Server container only', badgeBg: '#2a7a5e',\n      placementLabel: 'Server container only',\n      summary: 'Klaviyo does not support event deduplication. Running both browser and server tracking sends every event twice. Configure server-side only. The tag communicates directly with the Klaviyo API and supports adding contacts, tracking on-site activity, and sending event parameters.',\n      dedup: false,\n      steps: [\n        ['Remove any existing Klaviyo browser tag', 'If you have a Klaviyo JavaScript snippet in your web container or site code, disable it before adding the server-side tag. Running both creates duplicate events.'],\n        ['Add Klaviyo tag in the server container', 'In your <strong>server container<\/strong>, add the Klaviyo tag. Configure your Klaviyo Public API Key and Private API Key.'],\n        ['Configure supported actions', 'The tag supports three action types: <strong>track events<\/strong>, <strong>create or update a contact<\/strong>, and <strong>create or update a contact + track event simultaneously<\/strong>. Configure the action type per trigger.'],\n        ['Test via Klaviyo Activity Feed', 'Go to your Klaviyo account \u2192 Profiles. Trigger a test event and confirm it appears in the profile activity feed without duplicates.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/config\/klaviyo'\n    },\n    activecampaign: {\n      badge: 'server', badgeLabel: 'Server container only', badgeBg: '#2a7a5e',\n      placementLabel: 'Server container only',\n      summary: 'ActiveCampaign connects via API from the server container. The tag tracks events, creates or updates contacts, and can combine both actions in a single call. Configure server-side only for clean, deduplicated data into your CRM.',\n      dedup: false,\n      steps: [\n        ['Obtain your ActiveCampaign API credentials', 'In your ActiveCampaign account, go to Settings \u2192 Developer to find your API URL and API Key.'],\n        ['Add ActiveCampaign tag in the server container', 'In your <strong>server container<\/strong>, add the ActiveCampaign tag. Enter your API URL and API Key in the tag configuration.'],\n        ['Select the action type', 'Choose from three action types: <strong>Track event<\/strong>, <strong>Create or update contact<\/strong>, or <strong>Create or update contact + track event<\/strong>. Set the appropriate trigger for each action.'],\n        ['Map event and contact parameters', 'Configure which data layer variables map to ActiveCampaign event names, contact email, and any custom fields you want to populate.'],\n        ['Test in ActiveCampaign', 'Trigger a test event and confirm it appears in ActiveCampaign under Contacts \u2192 Activity or Reports \u2192 Event Tracking.']\n      ],\n      url: 'https:\/\/taggrs.io\/de\/docs\/server-side-tracking\/config\/activecampaign'\n    }\n  };\n\n  window.plcShow = function() {\n    var key = document.getElementById('plc_platform').value;\n    var resultEl = document.getElementById('plc_result');\n    if (!key) { resultEl.style.display = 'none'; return; }\n\n    var p = platforms[key];\n\n    var badge = document.getElementById('plc_badge');\n    badge.innerHTML = '<span style=\"width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,0.65);flex-shrink:0;display:inline-block\"><\/span> ' + p.badgeLabel;\n    badge.style.background = p.badgeBg;\n    badge.style.color = '#fff';\n\n    document.getElementById('plc_placement_label').textContent = p.placementLabel;\n    document.getElementById('plc_summary').innerHTML = p.summary;\n\n    var dedupEl = document.getElementById('plc_dedup');\n    if (p.dedup) {\n      dedupEl.style.display = 'flex';\n      document.getElementById('plc_dedup_text').innerHTML = p.dedupText;\n    } else {\n      dedupEl.style.display = 'none';\n    }\n\n    var stepsEl = document.getElementById('plc_steps');\n    stepsEl.innerHTML = '';\n    p.steps.forEach(function(step, i) {\n      if (i > 0) {\n        var conn = document.createElement('div');\n        conn.style.cssText = 'width:1px;height:10px;background:rgba(15,53,40,0.2);margin-left:10px';\n        stepsEl.appendChild(conn);\n      }\n      var stepDiv = document.createElement('div');\n      stepDiv.style.cssText = 'display:flex;align-items:flex-start;gap:12px';\n      stepDiv.innerHTML =\n        '<div style=\"flex-shrink:0;width:22px;height:22px;border-radius:50%;background:#0f3528;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px;font-family:Poppins,sans-serif\">' + (i+1) + '<\/div>' +\n        '<div style=\"font-size:13px;color:#2a4a3e;line-height:1.55;padding-top:3px;font-family:Poppins,sans-serif\"><strong style=\"color:#0f3528\">' + step[0] + '<\/strong><br>' + step[1] + '<\/div>';\n      stepsEl.appendChild(stepDiv);\n    });\n\n    document.getElementById('plc_cta').href = p.url;\n    resultEl.style.display = 'block';\n  };\n\n  window.plcReset = function() {\n    document.getElementById('plc_platform').value = '';\n    document.getElementById('plc_result').style.display = 'none';\n  };\n})();\n<\/script>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"platforms-that-go-in-the-server-container-only\">Plattformen, die nur in den Server-Container passen<\/h2>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"advertising-platforms\">Werbeplattformen<\/h3>\n\n\n\n<p>F\u00fcr <strong>das server-side Tracking von Google Ads<\/strong> sind 4 Komponenten nacheinander erforderlich:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GA4 Konfig-Tag (Web-Container)<\/li>\n\n\n\n<li>GA4 Server-Tag (Server-Container)<\/li>\n\n\n\n<li>Konvertierung Linker-Tag (Server-Container)<\/li>\n\n\n\n<li>Google Ads Conversion Tracking Tag (Server-Container)<\/li>\n<\/ol>\n\n\n\n<p>Laut den FAQs, die unser Support erh\u00e4lt, ist der Conversion Linker der Schritt, der am h\u00e4ufigsten vergessen wird. Ohne ihn werden die Klickdaten nicht korrekt mit den Conversions verkn\u00fcpft und die Attribution wird unterbrochen. Google Ads Remarketing durchl\u00e4uft die gleiche Kette.  <\/p>\n\n\n\n<p>Google Ads Remarketing l\u00e4uft ebenfalls nur server-side und nutzt dieselbe GA4-Abh\u00e4ngigkeit.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/taggrs.io\/docs\/server-side-tracking\/google-ads\/conversion-linker\">So richten Sie das server-side Tracking von Google Ads ein<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Auch <strong>TikTok<\/strong> ist ein reiner Server-Container. Das Pixel von TikTok unterst\u00fctzt die Ereignis-Deduplizierung nicht in dem Umfang, der f\u00fcr die gleichzeitige Ausf\u00fchrung von Browser- und Server-Tracking erforderlich ist. Das Server-Tag sendet Ereignisse an die Events-API von TikTok und wandelt die erforderlichen Benutzerdaten (E-Mail, Telefon) automatisch in Kleinbuchstaben um und hasst sie vor der \u00dcbertragung mit SHA256.  <\/p>\n\n\n\n<p>\u00dcberpr\u00fcfen Sie Ihre Einstellungen im Ereignis-Manager von TikTok, bevor Sie paralleles Tracking aktivieren.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"crm-and-marketing-automation\">CRM und Marketingautomatisierung<\/h3>\n\n\n\n<p><strong>Klaviyo<\/strong> unterst\u00fctzt keine Ereignis-Deduplizierung. Wenn Sie sowohl den Browser als auch den Server verwenden, werden doppelte Ereignisse an Klaviyo gesendet. Konfigurieren Sie nur server-side. Der Tag kommuniziert direkt mit der API von Klaviyo und unterst\u00fctzt das Hinzuf\u00fcgen von Kontakten, das Verfolgen von Aktivit\u00e4ten vor Ort und das Senden von Ereignisparametern.   <\/p>\n\n\n\n<p><strong>ActiveCampaign<\/strong> verbindet sich server-side mit der ActiveCampaign API. Der Tag unterst\u00fctzt 3 Aktionstypen: Ereignisse verfolgen, einen Kontakt erstellen oder aktualisieren und einen Kontakt erstellen oder aktualisieren und gleichzeitig ein Ereignis verfolgen. <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"platforms-that-require-both-the-web-container-and-the-server-container\">Plattformen, die sowohl den Web-Container als auch den Server-Container ben\u00f6tigen<\/h2>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"analytics\">Analytik<\/h3>\n\n\n\n<p>Google Analytics 4 ist bei einer server-side Einrichtung nicht optional. Das GA4 Config-Tag im Web-Container sendet Daten an den Server-Container, der alle nachgeschalteten Tags, einschlie\u00dflich Google Ads, mit Daten versorgt. Es gibt keine server-seitige Google Ads-Einrichtung ohne vorheriges server-seitiges GA4.  <\/p>\n\n\n\n<p>Deduplizierung f\u00fcr GA4? Das ist nicht erforderlich. Die Kontinuit\u00e4t der Sitzungen wird automatisch in beiden Containern gew\u00e4hrleistet.  <\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"advertising-platforms\">Werbeplattformen<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Plattform<\/strong><\/td><td><strong>Warum beide Container?<\/strong><\/td><td><strong>Deduplizierung erforderlich?<\/strong><\/td><td><strong>\u00dcbereinstimmender Parameter<\/strong><\/td><\/tr><tr><td>Meta  <\/td><td>Meta empfiehlt, Browser-Pixel und Server-CAPI gleichzeitig laufen zu lassen, um die Trefferquote und die Ereignisabdeckung zu maximieren.<\/td><td>Ja<\/td><td>event_id muss zwischen Web- und Server-Ereignissen \u00fcbereinstimmen<\/td><\/tr><tr><td>Pinterest<\/td><td>Browser-Tag + Conversions API laufen parallel, dieselbe Dual-Signal-Logik wie Meta.<\/td><td>Ja<\/td><td>Inserenten-ID + Schl\u00fcssel zur Ereignis-Deduplizierung<\/td><\/tr><tr><td>LinkedIn<\/td><td>Insight Tag l\u00e4uft client-side; Server-Tag sendet Konvertierungsereignisse \u00fcber LinkedIn CAPI.<\/td><td>Ja<\/td><td>conversionId<\/td><\/tr><tr><td>Snapchat<\/td><td>Snap Pixel (Web) + Snap Conversions API (Server) laufen parallel. Tag normalisiert und hasht automatisch die Benutzerparameter. <\/td><td>Ja<\/td><td>ereignis_id<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aber <strong>was bedeutet Deduplizierung in der Praxis?<\/strong> Deduplizierung findet statt, wenn dasselbe Konvertierungsereignis sowohl im Browser als auch auf dem Server ausgel\u00f6st wird, so dass die Plattform es zweimal erh\u00e4lt. Ohne Deduplizierungslogik (eine gemeinsame Ereignis-ID, die der Plattform mitteilt: \"Diese beiden Ereignisse sind gleich\") werden Ihre Konversionszahlen aufgebl\u00e4ht. Speziell f\u00fcr Meta bedeutet dies, dass <strong>die ROAS-Berichterstattung unzuverl\u00e4ssig wird<\/strong>.  <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e-commerce-cms-specific-data-layers\">E-Commerce: CMS-spezifische Datenschichten<\/h2>\n\n\n\n<p>Server-seitiges Tracking ist nur so gut wie die Ereignisdaten, die den Server-Container erreichen. F\u00fcr den elektronischen Handel bedeutet das eine <strong>korrekt strukturierte Datenschicht<\/strong>: eine, die Kauf-, Warenkorb- und Produktansichtsereignisse mit den richtigen Parametern weiterleitet. <\/p>\n\n\n\n<p>TAGGRS bietet spezielle Konfigurationen der Datenebene f\u00fcr CMS wie <strong>WordPress (mit WooCommerce), Shopify, Lightspeed, Magento und PrestaShop<\/strong>.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/taggrs.io\/docs\/server-side-tracking\/shopify-data-layer\">TAGGRS Datenschichten Anwendungen f\u00fcr den elektronischen Handel<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jedes CMS hat eine andere Datenschichtstruktur. Die Verwendung des falschen Ereignisformats f\u00fchrt dazu, dass Conversion-Ereignisse mit fehlenden oder fehlerhaften Parametern im Server-Container ankommen: der h\u00e4ufigste Grund, warum das server-seitige Google Ads-Tracking zwar zu funktionieren scheint, aber zu wenig Conversions meldet. <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mobile-apps-ios-and-android\">Mobile Apps: iOS und Android<\/h2>\n\n\n\n<p>TAGGRS unterst\u00fctzt server-side Tracking f\u00fcr mobile Apps auf iOS und Android. App-Ereignisse werden \u00fcber den Server-Container geleitet, wobei die gleiche Infrastruktur wie beim Web-Tracking verwendet wird. Dies ist wichtig f\u00fcr Teams, die Google Ads App-Kampagnen oder Meta-App-Installationskampagnen durchf\u00fchren, bei denen kein browser-seitiges Tracking verf\u00fcgbar ist und Ereignisdaten auf SDK-Ebene ein Server-Relay ben\u00f6tigen, bevor sie die Werbeplattformen erreichen.  <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-setup-matches-your-tracking-stack\">Welches Setup passt zu Ihrem Tracking-Stack?<\/h2>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"google-ads-ga4-only\">Nur Google Ads + GA4  <\/h3>\n\n\n\n<p>Konfigurieren Sie GA4 in beiden Containern. Google Ads l\u00e4uft nur server-side. Dies ist die minimale praktikable sGTM-Einrichtung f\u00fcr Teams, die neu anfangen.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"google-ads-meta-ga4\">Google Ads + Meta + GA4  <\/h3>\n\n\n\n<p>F\u00fcgen Sie Meta CAPI mit event_id-Deduplizierung hinzu. Dies ist die h\u00e4ufigste Konfiguration f\u00fcr Agenturen. Sie deckt die beiden Plattformen mit den h\u00f6chsten Ausgaben ab und bietet den meisten Kunden den gr\u00f6\u00dften Gewinn bei der Signalwiederherstellung.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"google-ads-meta-tiktok-linkedin-klaviyo\">Google Ads + Meta + TikTok + LinkedIn + Klaviyo  <\/h3>\n\n\n\n<p>Jede der oben genannten Plattformen trifft zu. In dieser Gr\u00f6\u00dfenordnung wird die Verwaltung der Infrastruktur - Betriebszeit von Containern, Zugriff durch mehrere Clients, Rotation der Anmeldeinformationen - zur operativen Einschr\u00e4nkung, nicht die Tag-Konfiguration. Das verwaltete Hosting und die rollenbasierte Zugriffskontrolle von TAGGRS sind f\u00fcr diese Umgebung konzipiert.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"e-commerce-stack-shopify-woocommerce-lightspeed\">E-Commerce-Stapel (Shopify \/ WooCommerce \/ Lightspeed)  <\/h3>\n\n\n\n<p>Beginnen Sie mit der CMS-spezifischen Konfiguration der Datenschicht, bevor Sie irgendwelche Plattform-Tags einrichten. Eine unvollst\u00e4ndige Datenschicht f\u00fchrt zu fehlenden Parametern auf der Serverebene, und keine Tag-Konfiguration kann Ereignisse kompensieren, die im Vorfeld nie korrekt gebildet wurden. <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faqs\">FAQs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"which-platforms-require-event-deduplication-in-server-side-gtm\">F\u00fcr welche Plattformen ist eine Ereignis-Deduplizierung im server-side GTM erforderlich?  <\/h3>\n\n\n\n<p>Meta (Facebook CAPI), Pinterest, LinkedIn CAPI und Snapchat CAPI erfordern die Deduplizierung von Ereignissen, wenn das Tracking gleichzeitig im Browser und auf dem Server l\u00e4uft. TikTok unterst\u00fctzt keine Deduplizierung und muss als reiner Server konfiguriert werden, um \u00fcberh\u00f6hte Conversion-Zahlen zu vermeiden. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web-Container, Server-Container oder beides? Pr\u00fcfen Sie, was Ihre Plattform f\u00fcr eine zuverl\u00e4ssige Verfolgung ben\u00f6tigt.<\/p>\n","protected":false},"author":10,"featured_media":70543,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[348],"tags":[730],"class_list":["post-70567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server-side-tracking-de-2","tag-anzeigenplattform"],"acf":[],"_links":{"self":[{"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/posts\/70567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/comments?post=70567"}],"version-history":[{"count":3,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/posts\/70567\/revisions"}],"predecessor-version":[{"id":70578,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/posts\/70567\/revisions\/70578"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/media\/70543"}],"wp:attachment":[{"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/media?parent=70567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/categories?post=70567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/taggrs.io\/de\/wp-json\/wp\/v2\/tags?post=70567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}