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_ecommerceliestview_item,add_to_cart,remove_from_cart,view_cart,begin_checkout,add_payment_infoundpurchasemit ihren E-Commerce-Properties.collection.data_layerliest jeden Push, der einen Event-Namen trägt. Properties bekommt das Event nur über die Top-Level-Keys incollection.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.allowbehä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 miteec.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"}}| Key | Pflicht | Bedeutung |
|---|---|---|
u | ja | Die Seiten-URL. Ihr Host bestimmt die Site. Gespeichert wie die URL eines Seitenaufrufs. |
n | ja | Der Event-Name. |
p | nein | Die Properties als Objekt. Verschachtelte Objekte werden zu parent.child. |
ts | nein | Zeitpunkt in Epoch-Millisekunden. Standard ist die Empfangszeit. |
pvid | nein | Der zugehörige Seitenaufruf. Ohne ihn hängt das Event an keinem Seitenaufruf und zählt nur. |
sq | nein | Zä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
| Regel | Wert |
|---|---|
| Name | a-z, 0-9, _, ., -, 1 bis 48 Zeichen nach Kleinschreibung, mindestens ein Buchstabe oder eine Ziffer |
| Events pro Beacon | 20, der Rest geht verloren |
| Events pro Seitenaufruf | 100, danach sendet der Tracker keine mehr |
| Property-Keys | 30 nach dem Abflachen |
| Key-Länge | 128 Zeichen |
| Wert-Länge | 500 Zeichen |
- Namen bereinigen: Der Tracker macht aus jedem anderen Zeichen ein
_, ausAdd To Cartwird alsoadd_to_cartund ausGrößewirdgr_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
valueundcurrency. 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_trackingschaltet 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_placedoderpurchase, mit dem größtenvalue, pro Währung. Eine neu geladene Danke-Seite zählt erneut. - Wert je Event: die Summe von
valuepro 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
purchaseschließt einen Besuch ab wieorder_placed.
API
POST /organizations/{org_id}/analytics/eventslistet Events, neueste zuerst, jedes mitevent_id,name,sourceundprops.namesnimmt jeden Namen,sourceisttracker,collectorodershopify_pixel. Siehe die Referenz (nur auf Englisch).POST /organizations/{org_id}/analytics/events/overviewzählt die Events eines Zeitraums pro Name, über die Zeit und pro Property-Wert, dazuorder_revenueundvalue_sums.revenueist deprecated.- MCP und Ask: Das Tool
get_eventsliefert dieselben Zahlen. Siehe MCP-Server.
Checkout-Funnel
Warenkorb, Checkout und Abschluss pro Besucher, gezählt aus Stage-Events, daneben die Warenkorb-Requests des Shops. Standardmäßig an; ein Shopify-Shop ergänzt ein Pixel für seinen Checkout.
Network Error Logging
Fehlgeschlagene Requests an deine Site, wie der Browser sie selbst meldet, auch für Seiten, die den Tracker nie geladen haben.