Das Meta Pixel ist der Tracking-Code von Facebook und Instagram. Es misst Seitenaufrufe und Aktionen auf der Website und meldet sie an den Werbeaccount, wo sie für Conversion-Messung und Remarketing genutzt werden.
Technisch legt es die globale Funktion fbq an und lädt fbevents.js von connect.facebook.net. Identifiziert wird der Account über die Pixel-ID, eine 15- bis 16-stellige Zahl.
Der Code im Original
Metas Anleitung liefert diesen Basis-Code. Er lädt das Pixel und meldet den ersten Seitenaufruf:
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '1111111111111111');
fbq('track', 'PageView');
</script>
<!-- End Facebook Pixel Code -->
Die Zahl in fbq('init', '1111111111111111'); ist ein Platzhalter. Dort steht die Pixel-ID, die Meta im Events Manager vergibt.
Im Container gehört diese ID nicht direkt in den Code, sondern in eine Konstante, hier Meta Pixel ID. Die Zeile sieht dann so aus:
fbq('init', {{Meta Pixel ID}});
Entscheidend sind die fehlenden Anführungszeichen um die geschweiften Klammern. Der Container ersetzt den Platzhalter beim Kompilieren durch einen Funktionsaufruf, der den Wert typgerecht liefert. Bei einer ID fällt das nicht auf, bei Zahlen und Arrays wie Bestellwert oder Artikelliste würden zusätzliche Anführungszeichen daraus Strings machen, und Meta verwirft sie stillschweigend.
Jedes weitere Ereignis ist ein eigenes Tag mit eigenem Trigger. Für einen Lead nach der Formularübermittlung genügt eine Zeile:
<script>
fbq('track', 'Lead');
</script>
Dieses Tag braucht das Basis-Tag als Setup-Tag über die Tag-Sequenzierung. Ohne den Basis-Code existiert fbq noch nicht: Das Tag gilt im Container trotzdem als ausgelöst, bei Meta kommt aber nichts an.
Einbindung über den Container
Zwei Wege sind üblich. Die Vorlage „Facebook Pixel“ aus der Vorlagengalerie ist der bequemere: weniger Code, Einwilligungseinstellungen direkt am Tag. Sie wird von Meta allerdings nicht mehr gepflegt, weshalb neuere Funktionen fehlen können. Der zweite Weg ist Benutzerdefiniertes HTML.
Das Basis-Tag gehört auf das Marketing-Ereignis des Consent-Management-Tools, mit der Auslöseoption „Einmal pro Seite“ und einer zusätzlichen Einwilligungsprüfung auf ad_storage. Eine eingebaute Prüfung hat das Pixel nicht, ohne diese Einstellung feuert es uneingeschränkt.
Die Tags für die einzelnen Standard-Ereignisse bekommen das Basis-Tag als Setup-Tag über die Tag-Sequenzierung, sonst laufen sie ins Leere, wenn fbq noch nicht existiert.
Das <noscript>-Bild aus Metas Anleitung gehört nicht in den Container. Es umgeht jede Einwilligungsprüfung und bringt nichts, weil der Container ohne JavaScript ohnehin nicht läuft.
In WooCommerce-Shops bringt das Plugin „Meta for WooCommerce“ ein eigenes Pixel mit. Läuft es parallel zum Container, feuert alles doppelt.
