Ein elegantes und SEO-freundliches A/B Testing System für REDAXO CMS.
- Session-basierte Varianten-Zuordnung mit konfigurierbarem Split
- SEO-freundlich: Gleiche URLs für beide Varianten
- Automatisches Tracking von Views (Klicks/Exit optional als Zählung)
- Detaillierte Statistiken und Performance-Vergleich
- Dauerhafte Test-Historie: Inaktive Tests bleiben vergleichbar
- Sichere Backend-Links: Varianten-Buttons werden bei fehlenden Artikeln automatisch deaktiviert
- Metafeld-Integration für einfache Verwaltung
- Backend-Dashboard mit Live-Statistiken
- Seitenladen - User ruft Artikel A auf
- Varianten-Zuteilung - Session-basiert mit konfigurierbarem Split und Laufzeit
- Content-Austausch - Bei Variante B: HTML-Content von Artikel B lädt dynamisch
- Event-Tracking - Views automatisch erfasst (Klick/Exit optional)
- Artikel-Editor - REX_LINK_WIDGET in Content Sidebar
- Datenbank -
art_ab_variantSpalte speichert Verknüpfung A→B - Statistiken -
rex_ab_test_eventsfür Events undrex_ab_testsfür dauerhafte Test-Historie
User besucht Artikel 15:
├─ Session leer/abgelaufen? → Zufallszuteilung nach `split_ratio` → Session speichern
├─ Session vorhanden? → Gleiche Variante anzeigen
└─ ?ab_force=b Parameter? → Override für Testing
Wenn Variante B:
├─ Artikel B Content laden
├─ Direkte Content-Ersetzung versuchen
├─ Fallback 0: <div id="ab_section"> Container austauschen
├─ Fallback 1: <main> Container austauschen
├─ Fallback 2: <div id="content"> Container austauschen
└─ Robustes mehrstufiges Fallback-System
Wichtig: Stelle sicher, dass der Content-Container eindeutig ist.
Empfohlen ist genau ein <main> oder genau ein <div id="content"> im Seiten-HTML.
Wenn mehrere Container vorhanden sind oder Inhalte doppelt gerendert werden (z. B. durch REX_ARTICLE im Template), kann es zu A+B-Ausgaben kommen.
Optional (empfohlen bei komplexen Templates): Einen eindeutigen Wrapper definieren, z. B.:
<div id="ab_section">
<!-- REX_ARTICLE / REX_ARTICLE_CONTENT -->
</div>Dann kann der Austausch gezielt nur diesen Bereich betreffen, ohne Verwechslungen mit anderen <main>/#content-Elementen.
Performance: Nur bei A/B-Artikeln aktiv, Session-Cache verhindert wiederholte Zuordnung, minimaler Overhead durch gezielten OUTPUT_FILTER.
Resultat: SEO-freundliche A/B Tests ohne URL-Parameter, transparent für User und Suchmaschinen.
- AddOn im REDAXO Backend aktivieren
- Installation läuft automatisch ab
- Erstellt benötigte Tabellen und Metafeld
- Artikel A erstellen (Original-Version)
- Artikel B erstellen (Test-Version)
- In Artikel A das Metafeld "A/B Test Variante" auf Artikel B verlinken
- Traffic wird gemäß konfiguriertem Split aufgeteilt
- Beide Artikel haben die gleiche URL (von Artikel A)
- Sessions bestimmen, welche Variante gezeigt wird
- Views - Seitenaufrufe beider Varianten (automatisch)
- Exit-Intent - optional, nur als Zählung
<a href="/ziel/" data-ab-track="click">Hier klicken</a>
<button data-ab-track="click">Jetzt kaufen</button>- In den AddOn-Einstellungen "Alle Klicks tracken" aktivieren
- Trackt automatisch alle
<a>Links auf der Seite - Speichert je nach Einstellung auch bereinigte Ziel-URLs und Link-Texte
// Einfacher Event
window.abTrack('conversion', 'newsletter_signup');
// Event mit Details (Object wird als JSON-String übergeben)
window.abTrack('click', JSON.stringify({
element: 'header_logo',
url: '/startseite/',
text: 'Logo'
}));- Event-Typ: view, click, exit, conversion
- Variante: a oder b
- Zeitstempel: Für zeitliche Analysen
- Keine personenbezogenen Daten: IP/User-Agent/Session-IDs werden nicht gespeichert
- Optionale Detaildaten: Klick-URLs, Link-Texte und freie Event-Details sind konfigurierbar
- Backend: AddOns > A/B Tests > Statistiken
- Detailansicht: Click auf Button bei jedem Test
- Übersicht: Alle Tests mit Performance-Vergleich
Für Tests und Debugging kannst du spezifische Varianten erzwingen:
https://deine-seite.local/artikel/?ab_force=a # Original (A)
https://deine-seite.local/artikel/?ab_force=b # Variante (B)
Anwendungsfälle:
- Tests während der Entwicklung
- Präsentation bestimmter Varianten
- Quality Assurance und Debugging
- AddOns > A/B Tests aufrufen
- Übersicht aller aktiven Tests
- Quick-Stats auf der Startseite
- Test-spezifische Auswertungen
- Click-Through-Raten
- Exit-Intent-Analysen
- Zeitliche Verläufe
- Link-Buttons zu Varianten werden automatisch deaktiviert, wenn Zielartikel nicht mehr existieren
Speichert alle getrackte Events:
test_id- ID des Original-Artikelsvariant- a oder bevent- view, click, exit, conversiondetails- Event-Details (optional)click_url- Klick-URL ohne Query/Fragmentclick_text- Link-Text (optional)ip_hash- leer (nicht gespeichert)user_agent- leer (nicht gespeichert)session_id- leer (nicht gespeichert)created_at- Zeitstempel
Speichert die Test-Konfiguration als Historie:
test_id- ID des Original-Artikelsvariant_id- ID der Variante B (oderNULL)test_name- Name von Artikel A zum Zeitpunkt der Speicherungvariant_name- Name von Artikel B zum Zeitpunkt der Speicherungstarted_at- Start der Konfigurationended_at- Ende der Konfiguration (bei inaktiven Tests gesetzt)is_active-1aktiv,0historisch/inaktivupdated_at- Letzte Aktualisierung
- Ohne personenbezogene Daten: Es werden keine IP-Adressen, User-Agents oder Session-IDs gespeichert.
- Klick-URLs werden bereinigt: Query-Parameter und Fragmente werden entfernt, um personenbezogene Daten zu vermeiden.
- Details und Klickdaten sind konfigurierbar: Linktexte, Ziel-URLs und freie Details lassen sich im Backend datensparsam deaktivieren.
Hinweis: Dies ist keine Rechtsberatung. Bei Unsicherheiten bitte Datenschutzberatung einholen.
- Client ist nicht vertrauenswürdig: Tracking-Requests werden zusätzlich per Session-Token validiert, bleiben aber bewusst leichtgewichtig.
- Server bestimmt Variante: Die Variantenzuordnung erfolgt serverseitig (Manipulation der URL beeinflusst die Statistik nicht).
- Event-Whitelist: Nur bekannte Event-Typen werden akzeptiert.
- Backend-Aktionen sind CSRF-geschützt: Speichern, Reset und Export verlangen gültige Sicherheits-Tokens.
Im Backend unter Einstellungen → Datenbereinigung:
Events älter als X Tage löschen
- Zeitbasierte Bereinigung alter Tracking-Daten
- Eingabe: Anzahl Tage (1-365)
- Artikel-Verknüpfungen bleiben erhalten
Komplette Datenbank zurücksetzen
- Löscht ALLE A/B-Test Events
- Löscht die komplette Test-Historie
- Entfernt ALLE Artikel-Verknüpfungen (
art_ab_variant) - Leert Cache automatisch
- Doppelte Bestätigung erforderlich
Export der Statistiken
- CSV-Export: Für Excel/LibreOffice
- JSON-Export: Für externe APIs/Tools
- Vollständige Event-Daten mit Zeitstempel
- Mindestens 2 Wochen laufen lassen
- Statistisch relevante Stichprobengröße abwarten
- Pro Test nur einen Aspekt ändern
- Klare Hypothese formulieren
- Original-Version als Kontrollgruppe nutzen
- Signifikante Verbesserung anstreben
- Wichtige Conversions mit
data-ab-track="click"markieren - Exit-Intent für Engagement-Messungen nutzen
- PHP 8.3+ kompatibel
- MySQL 5.7+ erforderlich
- Session-Cookies für Varianten-Persistierung
- JavaScript für Exit-Intent und Click-Tracking
- Metafeld "A/B Test Variante" gesetzt?
- Ziel-Artikel existiert und ist online?
- Browser-Cache leeren
- Nach Update auf diese Version einmal
update.phpausführen (im Backend AddOn aktualisieren)
- JavaScript aktiviert?
- Cookies erlaubt? (Session für Varianten-Zuordnung)
data-ab-trackAttribute gesetzt?
- Tests aktiv und live?
- Ausreichend Traffic vorhanden?
- Events in Datenbank-Tabelle vorhanden?
- REDAXO 5.15+
- Moderne Browser
- Performance-orientierte Websites
- SEO-bewusste Projekte
Entwickelt für bessere Conversion-Optimierung in REDAXO