Pandus SDK Dokumentation
JavaScript-API
Die Befehlswarteschlange pandus(): eigene Ereignisse, GA4-E-Commerce, eine gehashte Nutzer-ID, Nutzereigenschaften und Einwilligung, mit Namensregeln und Limits.
Aktualisiert:
Alle Aufrufe laufen über eine Funktion, pandus(). Fügen Sie diese Zeile vor Ihrem ersten Aufruf ein, damit Aufrufe vor dem Laden des Skripts in einer Warteschlange warten:
window.pandus = window.pandus || function () { (pandus.q = pandus.q || []).push(arguments); };
Außer consent bewirkt kein Aufruf etwas, bevor der Besucher der Analyse zugestimmt hat.
Eigene Ereignisse
pandus('event', 'signup', { plan: 'pro' });
pandus('event', 'newsletter_subscribe', { place: 'footer' });
- Name:
snake_case, beginnt mit einem Buchstaben, bis 40 Zeichen (a-z,0-9,_). - Parameter: bis 25; Namen bis 40 Zeichen; Werte sind Zahlen,
true/falseoder Text bis 300 Zeichen. - Text, der wie E-Mail, Telefon- oder Kartennummer aussieht, wird im Browser und erneut auf unserem Server verworfen. Senden Sie nie personenbezogene Daten in Ereignissen.
- Namen, die das SDK selbst sendet, wie
page_viewoderpurchase, stehen in der Ereignisreferenz.
E-Commerce
pandus('ecommerce', 'purchase', {
transaction_id: 'A-1042',
value: 89.9,
currency: 'EUR',
items: [{ item_id: 'kettle-1', item_name: 'Kettle', price: 89.9, quantity: 1 }],
});
ecommerce nimmt die von GA4 empfohlenen Ereignisse; value und currency landen in eigenen Spalten, damit der Umsatz aufgeht. items enthält bis zu 50 Produkte. Alle Ereignisse und Parameter stehen unter E-Commerce.
Eine Nutzer-ID
pandus('identify', 'customer-48151');
Die ID verbindet Besuche eines angemeldeten Kunden über Geräte hinweg. Das SDK hasht sie mit SHA-256 im Browser, bevor sie die Seite verlässt; einen bereits übergebenen SHA-256-Hash nutzt es unverändert. E-Mail-Adressen und persönlich wirkende Werte werden abgelehnt. Nur mit Einwilligung.
Nutzereigenschaften
pandus('set', 'user_properties', { tier: 'gold', plan: 'b2b' });
Bis zu 10 Eigenschaften je Besucher, Namen bis 24 Zeichen, Textwerte bis 36 Zeichen. Sie beschreiben eine Gruppe, nie eine Person: keine Namen, E-Mails oder IDs.
Einwilligung
pandus('consent', { analytics: true, recordings: false }); // die Wahl des Besuchers
pandus('consent', 'open'); // das Pandus-Banner öffnen
Wann Sie das brauchen, steht unter Einwilligung.
Ereignisse von Ihrem Server
Bestellungen und Erstattungen aus Ihrem Backend gehen über den Endpunkt für Server-Ereignisse, damit ein Blocker im Browser sie nicht verschluckt.
Das npm-Paket
@pandus/sdk bietet dieselben Befehle als typisierte Funktionen. Der Quellcode ist MIT-lizenziert auf GitHub; das Paket liegt auf npm.
| Funktion | Was sie tut |
|---|---|
init({ site, host?, nonce?, debug? }) |
Fügt den Loader einmal ein; false auf dem Server, bei falschem Token oder wenn er schon auf der Seite ist |
consent({ analytics, recordings? }) |
Übergibt die Wahl des Besuchers aus Ihrem Banner |
openConsent() |
Öffnet das Pandus-Einwilligungsbanner erneut |
track(name, params?) |
Ein eigenes Ereignis |
ecommerce(name, params?) |
Ein GA4-E-Commerce- oder Lead-Ereignis |
identify(userId) |
Ihre Nutzer-ID, im Browser gehasht |
setUserProperties(props) |
Bis zu 10 Nutzereigenschaften |
debug(on = true) |
Debug-Modus für diesen Tab |
isLoaded() |
Ob der Loader läuft |
pandus(...args) |
Jeder rohe SDK-Befehl |
import { init, track, ecommerce } from '@pandus/sdk';
init({ site: 'YOUR_SITE_TOKEN' });
track('signup', { plan: 'pro' });
React und Next.js
// app/providers.tsx
'use client';
import { PandusProvider } from '@pandus/sdk/react';
export function Providers({ children }: { children: React.ReactNode }) {
return <PandusProvider site="YOUR_SITE_TOKEN">{children}</PandusProvider>;
}
import { usePandus } from '@pandus/sdk/react';
export function SignupButton() {
const { track } = usePandus();
return <button onClick={() => track('signup', { plan: 'pro' })}>Sign up</button>;
}
Vue und Nuxt
// main.ts (Vue) or plugins/pandus.client.ts (Nuxt)
import { PandusPlugin } from '@pandus/sdk/vue';
app.use(PandusPlugin, { site: 'YOUR_SITE_TOKEN' });
import { usePandus } from '@pandus/sdk/vue';
const { track } = usePandus();
track('signup', { plan: 'pro' });
Content Security Policy
Mit einer nonce-basierten Content Security Policy übergeben Sie die Nonce mit init({ site, nonce }); der Loader fügt seine Module dann selbst hinzu, was 'strict-dynamic' erlaubt. Sonst erlauben Sie:
script-src https://pandus.online
connect-src https://pandus.online https://e.pandus.online
Das Pandus SDK und der Scanner sind automatische Prüfungen, kein vollständiges Audit und keine Rechtsberatung. Das SDK verändert nichts an Ihrer Website und stellt nicht fest, welche Besucher assistive Technologien nutzen.