fastmon Docs

Eigene Events

Sende eigene Events wie Warenkorb-Adds, Logins oder Anmeldungen, aus dem Tracker, per Klick, aus dem GA4-dataLayer oder als einzelnen POST.

Ein Event hält einen Schritt fest, der keine eigene URL hat: ein Warenkorb-Add aus dem Offcanvas, ein Login, eine Suche, eine Newsletter-Anmeldung. Es besteht aus einem Namen und optional bis zu 30 Properties.

Aus dem Tracker

Rufe fastmon.event mit Namen und Properties auf:

fastmon.event('add_to_cart', { value: 129.9, currency: 'EUR', sku: 'SW-100' });

Das Event fährt mit dem nächsten Beacon des Seitenaufrufs mit. Kommt binnen etwa einer Sekunde keiner, schickt der Tracker einen event_update-Beacon per fetch, höchstens 20 pro Seitenaufruf. Beim Verlassen der Seite gehen offene Events zusätzlich per Keepalive-fetch raus, der Collector behält eine Kopie.

Rufst du fastmon.event auf, bevor der Tracker geladen ist, brauchst du vorher diesen Queue-Stub. Der Tracker schickt das Gesammelte mit seinem ersten Beacon.

<script>
  window.fastmon = window.fastmon || {};
  fastmon.event = fastmon.event || function () { (fastmon._q = fastmon._q || []).push(arguments); };
</script>

Per Klick

Ein Klick auf ein Element mit data-fm-event oder auf etwas darin sendet ein Event mit diesem Namen. Jedes weitere data-fm-event-*-Attribut wird zur Property, ihr Wert ist immer ein String.

<button data-fm-event="add_to_cart" data-fm-event-sku="SW-100" data-fm-event-value="129.9">
  In den Warenkorb
</button>

Es zählt das nächstgelegene Element mit dem Attribut. Ein leeres data-fm-event="" sorgt dafür, dass Klicks in einem markierten Container nicht zählen.

Aus dem dataLayer

Zwei unabhängige Application-Einstellungen, beide standardmäßig aus, lesen Pushes auf window.dataLayer. Pushes von vor dem Laden des Trackers zählen mit, die eigenen gtm.*-Pushes des Google Tag Managers nie.

  • collection.ga4_ecommerce liest view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_payment_info und purchase mit ihren E-Commerce-Properties.
  • collection.data_layer liest jeden Push, der einen Event-Namen trägt. Properties bekommt das Event nur über die Top-Level-Keys in collection.data_layer_prop_keys, höchstens 30.
  • Wiederholungen: Ein Name zählt pro Seitenaufruf höchstens 10-mal.

Ein GA4-Event behält value, currency, die Anzahl der Artikel als item_count und pro Artikel items.<n>.item_id, item_name, price und quantity. Eine große Bestellung behält mindestens die ersten sechs Artikel. Bestellnummer und alle anderen Felder bleiben auf der Seite.

view_cart, begin_checkout und purchase erreichen außerdem ihre Stufe im Checkout-Funnel.

Namen behalten oder verwerfen

collection.data_layer_mode und collection.data_layer_names filtern dataLayer-Events im Collector. Eine Änderung greift binnen fünf Minuten.

  • block (Standard) verwirft die gelisteten Namen. Bei leerer Liste fällt nichts weg.
  • allow behält nur die gelisteten Namen, die GA4-Namen eingeschlossen. Bei leerer Liste bleibt kein dataLayer-Event übrig.
  • Liste: bis zu 50 Namen, eec.* deckt jeden Namen ab, der mit eec. beginnt.

Aufrufe von fastmon.event() und Klicks über data-fm-event werden nie gefiltert.

Ohne Tracker

Jedes Skript auf deinen Seiten kann ein einzelnes Event posten, auch ein Tag-Manager. Schick es als text/plain, dann sendet der Browser keinen Preflight.

POST https://fastmon.site/c/e/{collector_hash}
Content-Type: text/plain

{"u": "https://shop.example/cart", "n": "add_to_cart", "p": {"value": 129.9, "currency": "EUR"}}
KeyPflichtBedeutung
ujaDie Seiten-URL. Ihr Host bestimmt die Site. Gespeichert wie die URL eines Seitenaufrufs.
njaDer Event-Name.
pneinDie Properties als Objekt. Verschachtelte Objekte werden zu parent.child.
tsneinZeitpunkt in Epoch-Millisekunden. Standard ist die Empfangszeit.
pvidneinDer zugehörige Seitenaufruf. Ohne ihn hängt das Event an keinem Seitenaufruf und zählt nur.
sqneinZählt deine Events eines Seitenaufrufs ab 1. Ohne ihn bekommt jedes Event einen zufälligen Wert.

Die Route antwortet immer mit 204. Ein Body, der eine Regel verletzt, wird still verworfen. Zwei Posts mit gleichem pvid, ts und sq sind ein Event, ein Retry sollte sein sq also mitschicken.

Ist der POST blockiert, nimmt GET /c/e/{collector_hash}.gif dieselben Keys im Query-String, p als JSON-Text des Objekts.

Nur aus dem Browser

Land, Gerät und Bot-Einstufung liest der Collector aus dem Request. Ein Event von deinem Server zählt als Bot am Standort des Servers.

Limits und Regeln

RegelWert
Namea-z, 0-9, _, ., -, 1 bis 48 Zeichen nach Kleinschreibung, mindestens ein Buchstabe oder eine Ziffer
Events pro Beacon20, der Rest geht verloren
Events pro Seitenaufruf100, danach sendet der Tracker keine mehr
Property-Keys30 nach dem Abflachen
Key-Länge128 Zeichen
Wert-Länge500 Zeichen
  • Namen bereinigen: Der Tracker macht aus jedem anderen Zeichen ein _, aus Add To Cart wird also add_to_cart und aus Größe wird gr_e. Bleibt kein Buchstabe und keine Ziffer übrig, schickt er das Event nicht. /c/e/ schreibt nichts um und verwirft einen ungültigen Namen.
  • Über einem Limit: Das ganze Event wird verworfen, der Beacon dazu bleibt.
  • Typen: Zahl oder Boolean werden als Text gespeichert, ein Array als JSON-Text.
  • Umsatz: Nenne die Properties value und currency. Nichts rechnet Währungen um oder prüft sie.
  • Sampling: Events werden nie gesampelt, nicht abgerechnet und pro Site nicht gedeckelt.
  • Abschalten: Die Application-Einstellung event_tracking schaltet deine eigenen Events ab.

Datenschutz

Namen und Properties dürfen keine personenbezogenen Daten wie Namen, E-Mail-Adressen oder Kundennummern enthalten. Wie der Tracker Keys und E-Mail-Adressen maskiert, steht unter Datenschutz → Event-Properties.

Event korrigieren oder löschen

Owner und Member können einen falschen Namen, einen falschen Wert oder eine Testbestellung an einem einzelnen Event korrigieren. Öffne dazu die Zeile im Tab Events, oder rufe PATCH /sites/{site_id}/events/{event_id} mit neuem Namen oder neuen Properties auf. DELETE auf demselben Pfad entfernt es.

Die event_id steht in der Event-Liste. Jede Zählung und Liste zieht nach, und das Audit-Log hält event.updated oder event.deleted fest. Stage-Events aus Checkout-Seiten lassen sich nicht ändern und antworten mit 409.

Wo Events auftauchen

Die Seite liegt in der Seitenleiste unter Explorer → Events.

  • Tab Overview: Events über die Zeit nach Name, die Namen nach Häufigkeit und die häufigsten Werte jeder Property.
  • Umsatz: eine Bestellung pro Seitenaufruf mit order_placed oder purchase, mit dem größten value, pro Währung. Eine neu geladene Danke-Seite zählt erneut.
  • Wert je Event: die Summe von value pro Name und Währung.
  • Tab Events: eine Zeile pro Event mit den Properties als Chips. Eine Zeile öffnet jedes gespeicherte Feld und hat einen Share-Link.
  • Namensfilter: schlägt die Namen des Zeitraums nach Häufigkeit vor und nimmt jeden gültigen Namen.
  • Seitenfilter: URL, Seitentyp, Login-Status, Verbindung und Viewport-Klasse grenzen die Events ein. Events von vor dem 16.10.2026 tragen keine Seite und treffen keinen davon.
  • Besucher-Journey: zeigt die Events eines Besuchers mit ihren Properties. Ein purchase schließt einen Besuch ab wie order_placed.

API

  • POST /organizations/{org_id}/analytics/events listet Events, neueste zuerst, jedes mit event_id, name, source und props. names nimmt jeden Namen, source ist tracker, collector oder shopify_pixel. Siehe die Referenz (nur auf Englisch).
  • POST /organizations/{org_id}/analytics/events/overview zählt die Events eines Zeitraums pro Name, über die Zeit und pro Property-Wert, dazu order_revenue und value_sums. revenue ist deprecated.
  • MCP und Ask: Das Tool get_events liefert dieselben Zahlen. Siehe MCP-Server.

Auf dieser Seite