Hybrid-Modus

Server-Side-Dispatch plus der Browser-Pixel der Plattform. Beide feuern dasselbe Event mit derselben stabilen event_id. Die Plattform dedupliziert, du zählst nicht doppelt, und die Plattform sieht ihre First-Party-Cookies für besseres Matching.

Lesezeit: ca. 5 MinZuletzt aktualisiert: 2026-05-09

Was es macht

Für 9 von 10 unterstützten Kanälen kannst du einen Per-Kanal-Toggle umlegen, der zusätzlich zum Server-Side-Dispatch den Browser-Pixel der Plattform lädt (fbq für Meta, ttq für TikTok, pintrk für Pinterest und so weiter). Browser und Server senden dasselbe Event mit derselben event_id, die Dedup-Logik der Plattform fasst sie zu einer Conversion zusammen. Die Adblocker-Resistenz von Server-Side bleibt als Untergrenze, dazu gewinnst du die First-Party-Cookies (fbp, _ttp, li_fat_id), die der Browser-Pixel setzt, was die Match-Rate um ein paar Prozentpunkte hebt.

Trade-off: ein paar KB Vendor-JavaScript pro zustimmendem Besucher. Adblocker blocken den Pixel weiterhin für den Anteil der Nutzer mit aktivem Blocker, der Lift gilt also nur auf dem nicht geblockten Anteil. Standardmäßig OFF für jeden Kanal.

Wie aktivieren

wp-admin, Beaconry, Tab Tracking. Jeder Kanal mit Hybrid-Support zeigt direkt unter seinem Credentials-Block einen Toggle "Browser-Pixel". Speichern, der nächste Page-Load im Frontend lädt den Pixel.

Wie es funktioniert (unter der Haube)

  1. Inline-Init-Config in BCNR_Tracking. Bei aktivem Hybrid-Toggle wird die Pixel-ID des Kanals in den NLData.init({...})-Aufruf eingespielt, der nl-data.js im Browser bootet. Die Keys heißen metaPixelId, tiktokPixelId, linkedinPartnerId, microsoftUetTagId, pinterestTagId, redditPixelId, snapchatPixelId, xAdsPixelId und googleAdsConvId.
  2. Das Browser-Bundle lädt den Vendor-Pixel. nl-data.js enthält pro Kanal einen kleinen Loader (jeweils ein gutes Dutzend Zeilen offizielles Plattform-Snippet). Loader laufen nur, wenn die passende ID im Init-Config steht und die Analytics-Einwilligung gegeben wurde. Kein dynamisches script-Inject, solange nicht beide Bedingungen erfüllt sind.
  3. Jedes Event trägt eine geteilte event_id. Der Forwarder generiert eine UUID4 pro Browser-Event, oder eine deterministische bcnr_purchase_<order_id> für WooCommerce-Purchases (sodass ein Refresh der Danke-Seite nie doppelt zählt). Das Browser-Bundle liest dieselbe ID aus dem Event-Payload und übergibt sie dem Vendor-Pixel als dokumentierten Dedup-Key.
  4. Die Plattform dedupliziert server-side. Jede Ad-Plattform unterstützt Cross-Source-Dedup, aber Key-Name und Position des Arguments unterscheiden sich. Beaconry kennt die Per-Vendor-Eigenheiten und nutzt jedes Mal das richtige Feld, siehe Matrix unten.

Pro-Kanal-Matrix

Jede Plattform hat ihren eigenen Dedup-Key und ihre eigene Argument-Position. Beaconry kümmert sich um alle, die Tabelle steht hier zur Verifikation des Wire-Formats in DevTools beim Debugging.

KanalBrowser-Dedup-KeyAnmerkung
Metafbq('track', name, data, { eventID })4. Argument, Key ist eventID (großes ID).
TikTokttq.track(name, data, { event_id })3. Argument, Key ist event_id (snake_case, nicht eventID).
Pinterestpintrk('track', name, { event_id })2. Argument trägt den Dedup-Key, kein separates Options-Objekt.
Redditrdt('track', name, { conversionId })Reddit nennt den Dedup-Key conversionId, nicht event_id.
Snapchatsnaptr('track', name, { event_id })Dedup-Fenster 48 Stunden auf (event_id, event_name).
Microsoft UETuetq.push('event', '', { event_id })Per-Event-Dedup von Microsoft 2024 nachgereicht, leerer Action-String ist Pflicht.
LinkedInlintrk('track', { event_id })Per-Event-Dedup von LinkedIn 2024 nachgereicht.
X Adstwq('event', name, { conversion_id })X nennt den Dedup-Key conversion_id, 48-Stunden-Fenster.
Google AdsAudiences-only, gtag mit AW-XXXKein Per-Event-Dedup, siehe Spezialfall unten.
GA4Nicht unterstütztGA4 ist server-only mit transaction_id-Dedup auf Purchase, siehe Spezialfall unten.

Zwei Spezialfälle

Google Ads, Audiences-only

Der Google-Ads-Hybrid-Toggle feuert keine Per-Event-Browser-Conversions. Er lädt gtag.js nur mit der AW-XXXXXXXXX-Conversion-ID und send_page_view: false, was Google Ads erlaubt, Remarketing-Audiences aus deinen Besuchern zu bauen, das eigentliche Conversion-Tracking aber komplett bei Beaconrys Server-Side-Broker lässt. Es gibt keine event_id-Dedup, weil es kein Browser-Conversion-Event zum Deduplizieren gibt. Der Trade-off ist absichtlich: Kunden wollten Audience-Building ohne den Audit-Aufwand eines Browser-Conversion-Pfads.

GA4, server-only

GA4 hat keinen Hybrid-Toggle. Das Measurement Protocol ist innerhalb von Beaconry server-only, und Dedup gegen ein parallel laufendes gtag.js-Setup auf derselben Seite passiert auf transaction_id für Purchase-Events, nicht auf event_id. Falls du bereits einen GA4-Web-Stream aus einem anderen Plugin betreibst, setze dort dieselbe transaction_id wie in deinen WooCommerce-Bestellungen, dann zählst du Purchases nicht doppelt.

Konstanten für Power-User

Keine. Hybrid-Toggles sind ausschließlich Per-Kanal-Checkboxen im Tab Tracking, ein wp-config.php-Override existiert nicht und ist nicht nötig.

Troubleshooting

  • "Ich sehe doppelte Conversions in der Plattform": DevTools öffnen, Network-Tab, ein Event suchen. Verifiziere, dass dieselbe event_id (oder conversion_id / conversionId, siehe Matrix) im Browser-Pixel-Request und im Beaconry-Server-Payload steht. Wenn sie sich unterscheiden, ist der Dedup-Key kaputt und du zählst doppelt, dann Support-Ticket. Wenn sie übereinstimmen und die Plattform trotzdem doppelt zählt, prüfe das Dedup-Fenster der Plattform (Snap und X Ads brauchen beide Events innerhalb von 48 Stunden).
  • "DevTools zeigt den Pixel laden, aber keine Events": der Besucher hat den Pixel mit einem Adblocker geblockt. Das Server-Event ging trotzdem durch, du kannst es im Events Manager der Plattform verifizieren. Der Hybrid-Modus hilft Adblocker-Besuchern nicht beim Match-Daten-Gewinn, schadet aber auch nicht.
  • "Ich will Browser-Pixel auf einer bestimmten Seite ausschalten": aktuell nicht als Setting freigelegt. Workaround: die Seite in die Excluded-Pages-Liste auf dem Dashboard-Tab eintragen, das deaktiviert Beaconry komplett auf dieser URL.