Doku

Einbauen dauert eine Zeile.

Ein Script-Tag, kein Build-Schritt, kein Paket. Funktioniert in Webflow, WordPress oder purem HTML.

Auf der Website
<script async
  src="https://arizo.ch/widget.js"
  data-key="arizo_pk_live_…"></script>
In der App, mit Identität
<script async
  src="https://arizo.ch/widget.js"
  data-key="arizo_pk_live_…"
  data-surface="app"
  data-email="{{ user.email }}"
  data-identity-token="{{ identityToken }}"></script>
Kurzlebiges Token, serverseitig
const expiresAt = Math.floor(Date.now() / 1000) + 600
const payload = ["v1", WIDGET_PUBLIC_KEY, email, expiresAt].join("\n")
const signature = crypto.createHmac("sha256", tenantSecret)
  .update(payload).digest("base64url")
const identityToken = `v1.${expiresAt}.${signature}`
Einwilligung

Vorher passiert nichts

Kein Widget, keine Anfrage. Ihr Banner ruft window.arizo('consent') auf, oder das Tag trägt data-consent="granted". Wer beides vergisst, sieht nichts — ein sichtbarer Fehler statt eines unsichtbaren.

Identität

Signiert, nicht behauptet

Ohne kurzlebiges, mandantengebundenes Token könnte jede Besucherin jede Adresse angeben und sich in eine fremde Gesprächshistorie schreiben. Eine getippte Adresse gilt als Antwortweg, nie als Identität.

Farbschema

Folgt Ihrer App

window.arizo('theme', 'dark') schaltet das offene Fenster sofort um, ohne Neuladen — damit das Gespräch nicht verloren geht. Sagt Ihre Seite nichts, folgt Arizo der Einstellung der Besucherin.

Domains

Der Schlüssel ist öffentlich

Er steht im Quelltext jeder Seite, die ihn einbindet. Erlaubte Domains und die Frame-Policy begrenzen, wo der Browser den Chat zeigt; serverseitige Limits begrenzen gefälschte HTTP-Aufrufe.