JS-Tracker-API
Das Standard-Snippet (data-site) erfasst Seitenaufrufe, Klicks, Web Vitals, Formulare, Medien, Heatmaps sowie die automatische E-Commerce- und Identitäts-Erkennung für über 25 Shop-Systeme bereits ohne eine Zeile Code. Die globale JavaScript-API window.xictraq ist für alles darüber hinaus: eigene Events, manuelles E-Commerce-Tracking in Custom- und Headless-Frontends, Nutzer-Identifikation, A/B-Tests und das Consent-Gate. Diese Seite dokumentiert jede Methode mit Signatur, Beispiel und Rückgabewert.
# Voraussetzung & Guard
Die JS-API steht bereit, sobald das normale Tracker-Snippet eingebunden ist — Sie brauchen kein zweites Script. Für die Standard-Fälle (Reichweite, Formulare, Medien, Heatmaps, Web Vitals und E-Commerce/Identity für über 25 Shop-Systeme) müssen Sie gar nichts programmieren; die API ist ausschließlich für manuelle und zusätzliche Fälle gedacht.
<script defer src="https://api.xictraq.com/t.js"
data-site="YOUR_SITE_ID"></script> <script defer src="/t.js" data-site="…" data-api="/a"> ein. window.xictraq, alle hier dokumentierten Methoden und ihre Rückgabewerte bleiben identisch — nur die Zieladresse der Beacons wandert auf Ihre Domain. Eigene Aufrufe wie xictraq.event() oder xictraq.revenue() laufen damit ebenfalls über /a/ auf Ihrer Domain. Den geprüften nginx-Block für /t.js, /a/ und bei Session-Recording /rx.js, mit verborgenem HSTS von api.xictraq.com, überschriebenem X-Forwarded-For und 20 MB Anfragegröße für Aufzeichnungen, finden Sie in Erste Schritte.Wann window.xictraq verfügbar ist — immer defensiv aufrufen
Der Tracker lädt mit script defer, daher existiert window.xictraq erst, nachdem das Snippet ausgeführt wurde. Einen Vorab-Puffer gibt es nicht: Aufrufe, die vor dem Laden abgesetzt werden, gehen verloren. Rufen Sie die API deshalb defensiv auf — nur, wenn window.xictraq existiert (oder erst nach dem Load-Event).
<script>
// window.xictraq existiert erst, wenn der Tracker geladen ist.
if (window.xictraq) {
xictraq.event('newsletter_signup', { plan: 'pro' });
}
</script># Custom Events
Eigene Events senden (event)
xictraq.event(name, props?) meldet ein beliebiges Ereignis. name ist ein String, props ein optionales Objekt mit frei wählbaren Eigenschaften. So erfassen Sie Interaktionen, die kein Standard-Feature abdeckt — etwa Newsletter-Anmeldungen, Downloads oder CTA-Klicks.
// Einfaches Event ohne Eigenschaften
xictraq.event('newsletter_signup');
// Event mit Eigenschaften (beliebiges Objekt)
xictraq.event('newsletter_signup', { plan: 'pro', source: 'footer' });
// Weitere Beispiele
xictraq.event('download', { file: 'preisliste.pdf' });
xictraq.event('video_cta_click', { position: 'hero' });# Nutzer-Identifikation
Session mit Kunden-/Shop-ID verknüpfen (identify)
xictraq.identify(userId, traits?) verknüpft die zunächst pseudonyme Sitzung (Tageskennung) mit einer Kunden- oder Shop-ID. Kundennummer und Merkmale sind personenbezogene Daten; übergeben Sie nur, was Sie für die Auswertung brauchen. userId ist Ihre interne ID oder Kundennummer, traits ein optionales Objekt mit Merkmalen wie Typ oder Gruppe. Damit erscheinen wiederkehrende Kunden tagesübergreifend als identifizierte Nutzer im Dashboard.
// Nur die ID
xictraq.identify('cust_10492');
// Mit zusätzlichen Merkmalen (keine E-Mail-Adressen)
xictraq.identify('cust_10492', { type: 'b2b', group: 'wiederkehrend' });<!-- 1) Globale Variable -->
<script>window.xictraqUser = { id: 'cust_10492', type: 'b2b' };</script>
<!-- 2) Meta-Tag im <head> -->
<meta name="xictraq:user-id" content="cust_10492">
<!-- 3) Attribut an einem beliebigen Element -->
<body data-user-id="cust_10492"> # E-Commerce manuell
Bestellung / Umsatz (revenue)
xictraq.revenue(amount, currency, orderId, extras?) meldet einen abgeschlossenen Kauf. amount ist der Bruttobetrag als Zahl, currency ein ISO-Währungscode, orderId Ihre Bestellnummer. extras ist ein optionales Objekt mit Steuer, Versand und Gutschein-Code.
xictraq.revenue(129.90, 'EUR', 'ORDER-2026-8841', {
tax: 20.75,
shipping: 4.95,
coupon: 'WELCOME10'
});Produktansicht (product)
xictraq.product('view', props) meldet, dass ein Besucher ein Produkt angesehen hat. props enthält die Felder id, name, price und category.
xictraq.product('view', {
id: 'SKU-4471',
name: 'Laufschuh Pro',
price: 119.00,
category: 'Schuhe/Running'
});Warenkorb (cart)
xictraq.cart('add' oder 'remove', props) meldet eine Warenkorb-Änderung. Der erste Parameter ist die Aktion, props enthält id, name, price und quantity.
// In den Warenkorb legen
xictraq.cart('add', { id: 'SKU-4471', name: 'Laufschuh Pro', price: 119.00, quantity: 1 });
// Aus dem Warenkorb entfernen
xictraq.cart('remove', { id: 'SKU-4471', name: 'Laufschuh Pro', price: 119.00, quantity: 1 });Checkout-Schritt (checkout)
xictraq.checkout(step, meta?) markiert einen Schritt im Checkout-Funnel. step ist eine Zahl oder ein Name, meta ein optionales Objekt mit Zusatzinfos zum Schritt.
xictraq.checkout(1, { step_name: 'Adresse' });
xictraq.checkout(2, { step_name: 'Versand' });
xictraq.checkout('payment');Rückerstattung (refund)
xictraq.refund(orderId, amount, currency) meldet eine Erstattung zu einer früheren Bestellung. Alle drei Parameter sind erforderlich: die ursprüngliche Bestellnummer, der erstattete Betrag und der Währungscode.
xictraq.refund('ORDER-2026-8841', 129.90, 'EUR');Gescheiterte Zahlung (paymentFailed)
xictraq.paymentFailed(orderId, amount, currency, extras) meldet eine Zahlung, die beim Zahlungsanbieter abgelehnt oder abgebrochen wurde. Den Abbruch kennt nur der Shop, darum gibt es keine automatische Erkennung. Die Zahlungsart steht in extras.payment_method; fehlt sie, liest der Tracker sie wie beim Kauf aus der Seite. Die Auswertung Zahlung und Versand zeigt daraus je Zahlungsart den Anteil gescheiterter Versuche und wie viele Sitzungen danach doch gekauft haben.
xictraq.paymentFailed('ORDER-2026-8842', 89.00, 'EUR', { payment_method: 'Kreditkarte' });# A/B-Testing
Variante zuweisen (experiment)
xictraq.experiment(name) weist dem Besucher eine A/B-Variante zu und gibt ein Promise zurück, das mit der Variante (z. B. 'A' oder 'B') aufgelöst wird. Die Zuweisung hängt am cookielosen Sitzungsschlüssel aus IP-Adresse und Tagesdatum: innerhalb eines Tages sieht derselbe Besucher dieselbe Variante, am nächsten Tag oder nach einem Wechsel der IP-Adresse kann er neu zugewiesen werden. Läuft kein Experiment dieses Namens, wird das Promise mit null aufgelöst.
xictraq.experiment('pricing_headline').then(function (variant) {
if (variant === 'B') {
document.querySelector('#headline').textContent = 'Neu: 30 Tage gratis';
}
});Conversion melden (convert)
xictraq.convert(name) meldet, dass der Besucher das Ziel des Experiments erreicht hat — etwa einen Kauf oder eine Anmeldung. XICTRAQ berechnet daraus Conversion-Rate, Uplift und statistische Signifikanz je Variante.
// z. B. nach Klick auf den CTA oder erfolgreichem Kauf
xictraq.convert('pricing_headline');# Consent
Consent-Gate (consent)
xictraq.consent('granted' oder 'denied') signalisiert die Einwilligung des Besuchers für consent-pflichtige Funktionen — insbesondere das Session-Recording. Das Recording startet ausschließlich nach 'granted' und stoppt bei 'denied'; einen Auto-Start beim Laden gibt es nicht. Die cookielose Messung (Pageviews, Heatmap, Formulare, Medien) läuft davon unabhängig.
// Besucher hat zugestimmt -> Recording darf starten
xictraq.consent('granted');
// Besucher lehnt ab -> Recording startet nicht / stoppt
xictraq.consent('denied');# Komplette API-Referenz
Alle Methoden von window.xictraq auf einen Blick. Optionale Parameter sind mit einem Fragezeichen markiert.
| Methode | Parameter | Zweck |
|---|---|---|
xictraq.event | name (String), props? (Objekt) | Eigenes Event auslösen |
xictraq.identify | userId (String), traits? (Objekt) | Session mit Kunden-/Shop-ID verknüpfen (personenbezogen) |
xictraq.revenue | amount (Zahl), currency (String), orderId (String), extras? (tax, shipping, coupon) | Bestellung / Umsatz erfassen |
xictraq.product | 'view', props (id, name, price, category) | Produktansicht |
xictraq.cart | 'add' | 'remove', props (id, name, price, quantity) | Warenkorb-Änderung |
xictraq.checkout | step (Zahl/Name), meta? (Objekt) | Checkout-Schritt |
xictraq.refund | orderId (String), amount (Zahl), currency (String) | Rückerstattung |
xictraq.paymentFailed | orderId? (String), amount? (Zahl), currency? (String), extras? (payment_method) | Gescheiterte Zahlung |
xictraq.experiment | name (String) → Promise(variant) | A/B-Variante zuweisen (Promise) |
xictraq.convert | name (String) | A/B-Conversion melden |
xictraq.consent | 'granted' | 'denied' | Consent-Gate (steuert Session-Recording) |
xictraq.record | 'start' | 'stop' | Session-Recording auf dieser Seite ein- oder ausschalten (Einwilligung bleibt nötig) |