Wo WooCommerce Mittel

DataFirefly Push — Vollständiger Leitfaden

Native Web-Push-Benachrichtigungen für WooCommerce installieren, konfigurieren und betreiben: automatisch generierte VAPID-Schlüssel, Multi-Stil-Opt-in mit Pre-Prompt und A/B-Test, zehn automatische Trigger, Kampagnen mit visuellem Builder und Verhaltenssegmentierung, vollständige Analytics und Mein-Konto-Seite für Kunden.

Aktualisiert Modulversion 1.0.4

Übersicht und Voraussetzungen

DataFirefly Push verwandelt Ihren WooCommerce-Shop in eine native Web-Push-Benachrichtigungsplattform. Ohne SDK, ohne Tracking durch Dritte: die gesamte Kryptografie (VAPID und RFC 8291-Verschlüsselung) läuft auf Ihrem eigenen Server in reinem PHP über OpenSSL. Das Plugin deckt ein intelligentes Multi-Stil-Opt-in, zehn automatische Trigger, manuelle Kampagnen mit visuellem Builder und Segmentierung, ein vollständiges Analytics-Dashboard, eine dedizierte Mein-Konto-Seite für Ihre Kunden und native DSGVO-Konformität ab.

  • WordPress 6.2 und höher.
  • WooCommerce 7.0 und höher, getestet bis 9.6, kompatibel mit HPOS und Cart/Checkout Blocks.
  • PHP 8.1 und höher.
  • Mehrsprachig (FR/EN/ES/DE/IT), kompatibel mit Polylang und WPML.
  • Kompatibel mit LiteSpeed Cache, WP Rocket und anderen Cache-Plugins: der Service Worker wird als eigenständiges PHP ausgeliefert.

Kein Drittanbieter-Dienst, der angeschlossen werden muss, keine Composer-Bibliothek, die gepflegt werden muss. VAPID-Schlüssel werden bei der Aktivierung automatisch generiert, Abonnements und Ereignisse bleiben in Ihrer eigenen Datenbank.

Installation

  1. Laden Sie das Archiv df-push.zip aus Ihrem Kundenkonto herunter.
  2. Gehen Sie in der WordPress-Administration zu Plugins > Installieren > Plugin hochladen und legen Sie das Archiv ab.
  3. Klicken Sie auf Aktivieren.
  4. Das Menü DF Push erscheint in der Admin-Seitenleiste mit sieben Untermenüs: Dashboard, Kampagnen, Abonnenten, Trigger, Opt-in, Einstellungen, Webhooks & API.

Bei der Aktivierung erstellt das Plugin acht dedizierte Tabellen mit dem Präfix dfpush_, generiert Ihre VAPID-Schlüssel, plant den täglichen Cron df_push_daily_lifecycle und registriert den Mein-Konto-Endpunkt. Es ist kein manueller Eingriff erforderlich.

Erste Konfiguration: VAPID-Schlüssel und Opt-in

Nach der Aktivierung ist das Plugin mit seinen Standardeinstellungen sofort funktionsfähig: die schwebende Glocke erscheint nach fünf Sekunden unten rechts, das Pre-Prompt ist aktiviert, die automatischen Trigger sind bereit. Prüfen Sie einfach zwei Dinge in DF Push > Einstellungen, bevor Sie den Dienst kommunizieren:

  • VAPID öffentlicher Schlüssel: Der Block zeigt Ihren automatisch generierten öffentlichen Schlüssel (den Application Server Key, den der Browser verwendet). Sie können ihn neu generieren, dies macht aber alle bestehenden Abonnements ungültig.
  • PWA-Manifest und Standardsymbol: Fügen Sie Ihr Symbol (mindestens 192×192) hinzu, falls site_icon auf der Website nicht gesetzt ist.

Kein externer Dienst, der registriert werden muss, kein Firebase- / OneSignal-Entwicklerkonto zum Anlegen. Die VAPID-Schlüssel, die das Plugin generiert, reichen aus: sie authentifizieren Ihren Application Server gegenüber den Push-Diensten FCM, Mozilla Push und WNS.

Reiter Opt-in — Prompt, Stile und Auslöser

Dieser Reiter steuert die Abonnement-Anfrage. Fünf verfügbare Stile, jeder positionierbar und thematisierbar:

  • Schwebende Glocke (Standard): diskrete Pille unten rechts oder unten links.
  • Banner oben oder unten auf der Seite.
  • Modal zentriert mit Overlay.
  • Slide-in seitlich.
  • Sticky-Bar oben fixiert.

Das Soft-Ask-Pre-Prompt (empfohlen) zeigt Ihre angepasste Nachricht vor der nativen Browser-Anfrage an. Dieser Mechanismus schont Ihr Opt-in-Kontingent: in Chrome verbraucht eine Ablehnung des Pre-Prompts das Budget der nativen Anfragen nicht (×3 gegenüber 1 ohne Pre-Prompt).

Fünf konfigurierbare, kombinierbare Auslöser:

  • Verzögerung (in Sekunden) nach dem Seitenladen.
  • Scroll in Prozent der Seite (0 = deaktiviert).
  • Exit-Intent bei Mauszeiger-Verlass-Bewegung (nur Desktop).
  • X aufgerufene Seiten in der Sitzung.
  • In den Warenkorb (erfasst das WooCommerce-Ereignis added_to_cart).

Aktivieren Sie den A/B-Test des Prompts mit einem Variante-B-Titel und einer Variante-B-Nachricht und einer konfigurierbaren Aufteilung. Die Zuweisung wird in localStorage gespeichert, um sitzungsübergreifende Konsistenz pro Besucher zu gewährleisten.

Sobald die Browser-Berechtigung verweigert wurde, kann sie nicht per Skript erneut angefordert werden. Pflegen Sie Ihr Pre-Prompt und verketten Sie keine Anfrage beim ersten Scroll: dieses Muster zeigt 70 % Ablehnung gegenüber 20-30 % mit einem zum richtigen Zeitpunkt ausgelösten Pre-Prompt.

Reiter Trigger — die Automatismen

Zehn automatische Trigger, alle einzeln aktivierbar aus dem Reiter Trigger. Jeder stützt sich auf Action Scheduler für die verzögerten Sendungen, mit einem synchronen Fallback, falls Action Scheduler nicht verfügbar ist.

Abgebrochener Warenkorb

Drei konfigurierbare Erinnerungen, standardmäßig nach 1 Stunde, 24 Stunden und 72 Stunden nach dem Abbruch. Die Erkennung erfasst das Ereignis added_to_cart für Push-abonnierte Nutzer und plant drei df_push_abandoned_cart-Aktionen in abnehmenden Intervallen. Die Erinnerungen werden automatisch abgebrochen, wenn die Bestellung in der Zwischenzeit getätigt wird.

Wieder verfügbar (back-in-stock)

Auf der Produktseite können Ihre abonnierten Besucher einer produktspezifischen Warteliste beitreten. Wenn WooCommerce woocommerce_product_set_stock_status mit einer Rückkehr zu instock auslöst, sendet das Plugin eine Benachrichtigung an die Warteliste des Produkts und leert sie dann.

Preissenkung

Das Plugin pflegt ein Meta _df_push_last_price pro Produkt. Bei jeder Produkt-Aktualisierung vergleicht es den alten und neuen Preis. Übersteigt die Senkung den konfigurierten Mindestprozent-Schwellenwert, wird eine Benachrichtigung an das Thema Aktionen gesendet.

Bestätigung, Versand, Bewertung

  • Bestellbestätigung: sofortiger Versand bei woocommerce_thankyou an den Abonnenten, wenn die Benutzer-ID übereinstimmt.
  • Versand: erkennt die Sendungsnummer auf der Bestellung, indem nacheinander die Metas _tracking_number, _wc_shipment_tracking_items (WooCommerce Shipment Tracking) und _aftership_tracking_number (AfterShip) gelesen werden. Wird eine Nummer gefunden, enthält die Benachrichtigung sie in ihrer Nachricht.
  • Bewertungsanfrage: geplant X Tage nach dem Wechsel der Bestellung in den Status completed (konfigurierbare Verzögerung).

Geburtstag, Reaktivierung, neues Produkt

  • Geburtstag: der tägliche Cron df_push_daily_lifecycle liest das WooCommerce-Feld billing_birthday und sendet eine Benachrichtigung an Abonnenten, deren Geburtstag heute ist.
  • Reaktivierung: Versand an Abonnenten, die seit 30, 60 und 90 Tagen inaktiv sind (Fenster konfigurierbar als CSV: 30,60,90).
  • Neues Produkt: bei Produktveröffentlichung wird eine Benachrichtigung an das Thema Neuheiten gesendet.

Jeder Trigger akzeptiert ein Template-Payload: {firstname}, {product_name}, {product_price}, {old_price}, {order_number}, {tracking_number}, {category}, {discount_code}. Variablen werden zum Sendezeitpunkt aufgelöst, nicht bei der Planung.

Reiter Kampagnen — visueller Builder, Segmentierung, A/B-Test

Bauen Sie eine manuelle Kampagne in DF Push > Kampagnen > Neue Kampagne. Der Builder bietet eine Live-Vorschau der Benachrichtigung so, wie sie auf dem Gerät des Abonnenten erscheinen wird.

  • Inhalt: Titel, Nachricht, Ziel-URL, Hero-Bild, bis zu zwei Aktions-Buttons mit eigener Beschriftung und URL.
  • Dauerhafte Benachrichtigung (Option requireInteraction): die Benachrichtigung bleibt bis zur Interaktion sichtbar.
  • Segmentierung nach Sprache, Land, Gerät, Thema und nach RFM-Verhalten: Mindestbestellungen, Mindestbestellwert, Tage inaktiv, gekaufte Kategorie. Verhaltenssegmente werden über wc_get_orders beim Start berechnet.
  • A/B-Test: aktivieren Sie eine Variante B (Titel und Nachricht), die Aufteilung ist in Prozent konfigurierbar. Die Zuweisung ist pro Abonnent zufällig, per ID deterministisch für die Analytics-Konsistenz.
  • Planung: wählen Sie Datum und Uhrzeit oder senden Sie sofort.
  • Testmodus: senden Sie die Kampagne nur an Administratoren, aus dem Builder, vor dem Produktionsstart.

Die Sende-Engine teilt das Segment automatisch in Blöcke, respektiert die Ruhezeiten pro Abonnenten-Zeitzone, wendet das konfigurierte Frequenzlimit an und entfernt im laufenden Betrieb Endpunkte, die 404 oder 410 (Abmeldung browserseitig) zurückgeben.

Dashboard und Analytics

Das Dashboard DF Push > Dashboard aggregiert Ihre 30-Tage-KPIs. Chart.js ist lokal gebündelt (keine externe CDN-Abhängigkeit).

  • KPIs: aktive Abonnenten, Opt-in-Rate, Sendungen, Klickrate (CTR), Conversions, zugeordneter Umsatz.
  • 30-Tage-Zeitreihe: Sendungen vs. Klicks, eine Linie pro Tag.
  • 7 × 24-Heatmap: beste Sendezeitfenster basierend auf Klicks, kreuzweise Wochentag und Tageszeit.
  • Funnel pro Kampagne: gesendet > zugestellt > geklickt > konvertiert.
  • Zugeordneter Umsatz: ein konfigurierbares Attributionsfenster (standardmäßig 72 Stunden) verknüpft jeden Klick mit dem ersten Kauf, der von diesem Abonnenten innerhalb des Fensters getätigt wurde.
  • CSV-Export aller Ereignisse für DSGVO-Audit oder BI-Integration.

Kundenseite: Mein Konto → Benachrichtigungen

Eine dedizierte Seite Mein Konto → Benachrichtigungen wird automatisch zum WooCommerce-Dashboard hinzugefügt. Der Kunde verfügt über vier Blöcke:

  • Dieses Gerät: aktueller Status (aktiviert, deaktiviert, vom Browser blockiert, nicht unterstützt), mit Schaltfläche Auf diesem Gerät aktivieren oder deaktivieren.
  • Alle Ihre Geräte: Liste der abonnierten Geräte (Typ, Browser, Sprache, letzte Aktivität), mit Einzel-Abmeldung oder vollständiger Abmeldung mit einem Klick.
  • Meine Einstellungen: Kontrollkästchen für die nativen Themen (Neuheiten, Aktionen, Wieder verfügbar). Speicherung über REST mit Bestätigung.
  • Benachrichtigungsverlauf: die letzten 30 erhaltenen Benachrichtigungen mit Titel, Text, Symbol, Link und Datum.

Die URL ist /mein-konto/df-push-notifications/ in Deutsch. Der Rewrite-Endpunkt ist mit der Maske EP_ROOT | EP_PAGES registriert, mit einer Selbstheilung auf init:999, die eine fehlende Regel erkennt (Fall eines parallelen Permalink-Flushs) und automatisch neu flusht.

Kundenseitige Aktionen (Abmeldung, Einstellungen) gehen über REST-Routen unter df-push/v1/account/*, authentifiziert per Cookie + wp_rest-Nonce. Keine Aktion kann auf ein anderes Konto ausgeführt werden, selbst wenn die Geräte-ID in der Anfrage manipuliert wird.

DSGVO und Einwilligungsregister

Die DSGVO-Konformität wird nativ behandelt, nicht als kosmetisches Add-on. Jedes Opt-in und jede Abmeldung wird in die Tabelle dfpush_consent_log eingetragen, mit:

  • Abonnenten-ID.
  • Aktion: subscribe oder unsubscribe.
  • In SHA-256 gehashte IP (die Klartext-IP wird niemals gespeichert).
  • User-Agent.
  • UTC-Zeitstempel.

Die nativen WordPress Privacy Exporters und Erasers sind integriert: Ein Kunde kann den Export oder die Löschung seiner personenbezogenen Daten über Werkzeuge → Personenbezogene Daten exportieren oder Werkzeuge → Personenbezogene Daten löschen anfordern. Das Plugin fügt dann seine Abonnements, Themen, Inbox und sein Einwilligungsregister in die Antwort ein — oder löscht sie auf Anfrage.

Reiter Einstellungen — Anti-Spam und Attribution

Dieser Reiter zentralisiert die Parameter zum Abonnentenschutz und das Attributionsfenster:

  • Ruhezeiten (quiet hours): Intervall, in dem keine Benachrichtigung gesendet wird. Zeitzonen-bewusst (am Opt-in-Zeitpunkt auf dem Gerät des Abonnenten über Intl.DateTimeFormat().resolvedOptions().timeZone gelesen). Standardmäßig 22h-8h lokal.
  • Frequenzlimit: maximale Anzahl von Benachrichtigungen pro Tag pro Abonnent. 0 = unbegrenzt.
  • Smart Send Time: optimiert die Sendezeit pro Abonnent basierend auf seinen historischen Klick-Zeitfenstern.
  • Attributionsfenster: Dauer in Stunden zwischen einem Klick und einer Bestellung, damit die Bestellung der Benachrichtigung zugeordnet wird. Standardmäßig 72 Stunden.
  • In-Site-Inbox: aktiviert oder deaktiviert die schwebende Glocke mit dem Benachrichtigungsverlauf im Frontend.
  • PWA-Manifest: aktiviert die Generierung des Manifests, um die Website auf Mobilgeräten installierbar zu machen.

Reiter Webhooks und REST-API

Der Reiter Webhooks & API deckt zwei Integrationsmechanismen ab.

Ausgehende Webhooks

Konfigurieren Sie einen oder mehrere HTTP-Endpunkte pro Ereignis. Drei Formate sind verfügbar:

  • Slack: Payload { text }, kompatibel mit Slack Incoming Webhooks.
  • Discord: Payload { content }, kompatibel mit Discord Webhooks.
  • Generic: vollständiges JSON-Payload mit event, timestamp, data — kompatibel mit Zapier, n8n, Make.

Verfügbare Ereignisse: subscriber.created, campaign.launched, notification.clicked, order.attributed. Anfragen sind nicht blockierend (wp_remote_post mit blocking=false), um den Hauptversand nie zu verlangsamen.

REST-API

Unter dem Namespace df-push/v1 stellt das Plugin eine token-geschützte öffentliche Sende-Route bereit: POST /wp-json/df-push/v1/send mit dem Header X-DF-Push-Token. Das Token ist mit einem Klick aus der Administration neu generierbar.

curl -X POST https://ihre-seite.com/wp-json/df-push/v1/send 
  -H "Content-Type: application/json" 
  -H "X-DF-Push-Token: IHR_TOKEN" 
  -d '{
    "title": "Flash-Aktion",
    "body": "20 % auf den gesamten Katalog bis Mitternacht",
    "url": "https://ihre-seite.com/aktionen",
    "segment": { "lang": "de", "topic": "promos" }
  }'

Behandeln Sie dieses Token wie ein Passwort. Wer es besitzt, kann Benachrichtigungen an Ihre Abonnenten senden. Generieren Sie es sofort neu, falls Sie eine Kompromittierung vermuten.

In-Site-Inbox, PWA und Mehrsprachigkeit

Drei ergänzende Funktionen decken die Fälle ab, in denen der Nutzer Push nicht autorisiert hat.

  • In-Site-Inbox: eine schwebende Glocke (im Frontend konfigurierbar) öffnet eine Liste der letzten vom Nutzer erhaltenen Benachrichtigungen, gelesen oder ungelesen, auch wenn er Push nie autorisiert hat. Besonders nützlich für iOS Safari vor 16.4 und PWA-Nutzer.
  • PWA-Manifest: dynamisch unter /df-push-manifest.json aus site_icon oder einem angepassten Symbol generiert. Filter df_push_manifest verfügbar, um Theme Color, Display, Scope, Start URL anzupassen.
  • Mehrsprachig: kompatibel mit Polylang und WPML. Benachrichtigungen werden in der Sprache des Abonnenten gesendet (beim Opt-in erkannt), mit Fallback auf die Standardsprache der Website. .po– und .mo-Dateien in FR, EN, ES, DE, IT sind enthalten.

Service Worker und technische Architektur

Der Service Worker wird von einer eigenständigen PHP-Datei unter der URL /wp-content/plugins/df-push/sw.php ausgeliefert. Dieser Ansatz umgeht das WordPress-Routing vollständig: keine Möglichkeit einer Interferenz mit einem Cache-Plugin, einem Canonical-Redirect oder einem anderen template_redirect-Handler.

Der Header Service-Worker-Allowed: / wird in der Antwort gesendet, um die Registrierung mit Root-Scope (scope: '/') zu ermöglichen, auch wenn das Skript unter /wp-content/ liegt.

Datenbankseitig acht Tabellen mit dem Präfix dfpush_:

  • dfpush_subscribers: Abonnenten und ihr Push-Endpunkt.
  • dfpush_topic_subs: Zuweisungen Thema ↔ Abonnent.
  • dfpush_campaigns: manuelle Kampagnen mit Payload, Segment und Planung.
  • dfpush_notifications: Protokoll der einzelnen gesendeten Benachrichtigungen.
  • dfpush_events: rohe Ereignisse (Opt-in, sent, delivered, clicked, converted) für die Analytics.
  • dfpush_inbox: dauerhafte Kopie der Benachrichtigungen für die In-Site-Inbox.
  • dfpush_stock_waitlist: Wartelisten für Wieder-verfügbar.
  • dfpush_consent_log: DSGVO-Register.

Die Deinstallation (vollständige Löschung über Plugins) löscht diese acht Tabellen und entfernt alle Optionen. Die einfache Deaktivierung hingegen behält die Daten für eine spätere Reaktivierung.

Entwickler-Hooks

Das Plugin stellt Aktionen und Filter an Schlüsselpunkten bereit, um sein Verhalten zu erweitern, ohne den Kern zu verändern.

  • df_push_booted (Aktion): wird nach dem Plugin-Boot ausgelöst, nützlich zum Registrieren angepasster Erweiterungen.
  • df_push_payload_build (Filter): das JSON-Payload, das vor der Verschlüsselung an den Push-Dienst gesendet wird, ändern.
  • df_push_should_send (Filter): den Versand auf benutzerdefinierte Bedingungen kurzschließen (false zurückgeben zum Überspringen).
  • df_push_segment_query (Filter): Kriterien der Verhaltenssegmentierung anreichern.
  • df_push_webhook_payload (Filter): Payloads der ausgehenden Webhooks anpassen.
  • df_push_manifest (Filter): das generierte PWA-Manifest ändern.
  • Registrierte Action-Scheduler-Aktionen: df_push_send_one, df_push_fan_out, df_push_abandoned_cart, df_push_review_request, df_push_dispatch_campaign.

FAQ und Fehlersuche

Das Opt-in-Prompt erscheint nicht

Drei mögliche Ursachen: die Browser-Berechtigung ist bereits verweigert (prüfen Sie die Browser-Einstellungen), die Berechtigung ist bereits erteilt (das Prompt hat keinen Zweck mehr) oder ein Auslöser wurde nicht erreicht (Verzögerung nicht abgelaufen, unzureichendes Scrollen). Führen Sie in der JavaScript-Konsole window.DFPush.isSubscribed() aus, um den aktuellen Status zu prüfen.

Die Abonnenten-Administration ist leer, obwohl ein Opt-in erfolgreich war

Prüfen Sie in der Netzwerk-Konsole, dass die Anfrage POST /wp-json/df-push/v1/subscribe einen 200-Code zurückgibt. Ab Version 1.0.1 re-synchronisiert das Plugin automatisch jedes vorhandene PushSubscription bei jedem Seitenladen mit dem Server und protokolliert jeden DB-Insertion-Fehler in error_log.

Der Service Worker liefert einen Registrierungsfehler

Lautet der Browser-Fehler „The script resource is behind a redirect“ oder „Unexpected token ‚<‚“, testen Sie direkt die URL https://ihre-seite.com/wp-content/plugins/df-push/sw.php. Sie sollten den JavaScript-Code des Service Workers mit einem Content-Type: application/javascript und dem Header Service-Worker-Allowed: / sehen. Wenn Sie ein HTML 403 sehen, prüfen Sie die htaccess-Regeln, die die direkte PHP-Ausführung unter wp-content/plugins/ blockieren könnten.

Benachrichtigungen werden auf iOS nicht empfangen

Safari auf iOS unterstützt Push-Benachrichtigungen erst ab Version 16.4 und nur für Sites, die als PWA über die Schaltfläche Zum Home-Bildschirm hinzufügen installiert sind. Das vom Plugin generierte PWA-Manifest erleichtert diese Installation. Wenn Sie nicht speziell auf iOS abzielen, ist dies kein Problem: die anderen Browser empfangen die Benachrichtigungen normal.

Wie migriere ich von OneSignal oder Pusher

Bestehende Abonnenten dieser Drittanbieter-Dienste sind nicht portierbar: die Push-Kryptografie verknüpft jedes Abonnement mit einem eindeutigen Paar (VAPID-Schlüssel des Servers, Endpunkt des Browsers). Ihre Besucher müssen sich nach dem Wechsel zu DataFirefly Push neu abonnieren. Sie können den Übergang vorbereiten, indem Sie das alte SDK einige Tage vorher deaktivieren und über ein Pre-Announcement-Banner zur neuen Experience kommunizieren.

Was passiert bei der Deinstallation?

Die einfache Deaktivierung behält alle Tabellen und Optionen: Sie können das Plugin wieder aktivieren und dort weitermachen, wo Sie aufgehört haben. Die vollständige Löschung aus Plugins führt uninstall.php aus, das die acht dfpush_-Tabellen löscht, alle Plugin-Optionen entfernt (einschließlich VAPID-Schlüssel und API-Token) und die Crons aushebt. Permalinks werden bei der nächsten Anfrage automatisch geflusht.

War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren