PopupLift

Stand: 12.08.2026

Datenschutzerklärung PopupLift


0. Geltungsbereich und die zwei Rollen

PopupLift ist eine Shopify-App. Sie läuft im Shop eines Händlers und verarbeitet dort Daten von Besuchern dieses Shops. Daraus folgen zwei getrennte Rollen. Wer diese Erklärung liest, sollte in den nächsten drei Sätzen wissen, welcher Strang für ihn gilt.

PopupLift als Auftragsverarbeiter (Art. 28 DSGVO). Alles, was ein Shop-Besucher in einem Popup tut, verarbeiten wir ausschließlich im Auftrag und auf Weisung des Händlers. Verantwortlicher im Sinne der DSGVO ist dann der Händler, nicht wir. Wir haben für diese Daten keine eigene Rechtsgrundlage. Für die Ausübung von Betroffenenrechten ist allein der Händler zuständig. Shop-Besucher finden die für sie maßgebliche Datenschutzerklärung beim Händler. Abschnitt 2 beschreibt trotzdem vollständig, was wir dabei verarbeiten, weil der Händler diese Angaben für seine eigene Erklärung braucht.

PopupLift als Verantwortlicher (Art. 4 Nr. 7 DSGVO). Für die Daten des Händlers selbst (Shop-Domain, Einstellungen, Nutzungszahlen zur Abrechnung, Support-Kommunikation) sind wir Verantwortlicher. Dafür gilt Abschnitt 3.

Wer liestWelcher Abschnitt giltWer ist Verantwortlicher
Shop-Besucher2, 5, 9 (zur Information; maßgeblich ist die Erklärung des Händlers)der Händler
Händler (Merchant)3, 4, 6, 7, 8, 10, 11, 12PopupLift

1. Verantwortlicher und Kontakt

Kyrill Pysarenko
Danziger Str. 76, 10405 Berlin, Deutschland
E-Mail: privacy@popuplift.com

Datenschutzanfragen: privacy@popuplift.com, Antwort innerhalb von 20 Werktagen.

Ein Datenschutzbeauftragter ist nicht bestellt; eine gesetzliche Bestellpflicht besteht nicht.

Zuständige Aufsichtsbehörde: Berliner Beauftragte für Datenschutz und Informationsfreiheit, Alt-Moabit 59-61, 10555 Berlin.


2. Verarbeitung im Auftrag des Händlers

Alle Angaben sind aus dem Datenmodell der Anwendung abgeleitet. Die Zweck- und Rechtsgrundlagen-Zuordnung steht gebündelt in Abschnitt 4.

2.1 Besucherprofil (visitors)

DatumWoher
E-Mail-Adressevom Besucher im Popup eingegeben
Telefonnummer (optional)vom Besucher eingegeben, sofern der Händler ein Telefonfeld nutzt
Zeitpunkt der Marketing-Einwilligung (consented_at)Klick im Popup
Land, SpracheShopify-Storefront-Lokalisierung (localization im Theme-Baustein). Keine IP-Geolokalisierung.
Shopify-Kunden-ID, Klaviyo-Profil-IDShopify bzw. Klaviyo, beim Sync
Sitzungszähler, erster und letzter KontaktServer
Merker, ob eine E-Mail-Adresse vorliegtServer
Zähl-Marker für die Abrechnung: Monat, in dem der Besucher gezählt wurde, und Zeitpunkt der Lead-ZählungServer; Grundlage der Nutzungszahlen aus Abschnitt 3
freie Eigenschaften (properties)vom Händler in der Popup-Konfiguration definierte Zusatzfelder

2.2 Ereignisse (user_actions) und Zwischenstände

Popup gesehen, Schritt abgeschlossen, E-Mail abgegeben, Reward beansprucht, Popup geschlossen. Jeweils mit Zeitstempel, Popup-Bezug, Besucherbezug und einer anonymen Sitzungs-Kennung.

Dazu gehört der Zwischenstand eines mehrstufigen Popups (visitor_flow_state): welchen Schritt ein Besucher zuletzt erreicht hat, mit Popup- und Besucherbezug. Er wird bei einer Löschanfrage mitgelöscht (Abschnitt 9.2).

Der Server übernimmt aus dem Umschlag einer Ereignis-Meldung genau drei Sitzungsmerkmale: neue Sitzung ja/nein, Land und Sprache. Herkunft, UTM-Parameter, Referrer und Gerätetyp des Besuchers werden nicht übernommen, nicht ausgewertet und nicht gespeichert; ein Besucherprofil darüber existiert serverseitig nicht (Abschnitt 5). Einzige Ausnahme: Meldet das Widget einen Fehler, enthält die Meldung die Adresse der Seite, auf der der Fehler auftrat (Abschnitt 6) — sie dient allein der Fehlersuche.

2.3 Quiz- und Umfrage-Antworten (poll_answers)

Frage- und Antworttext mit Bezug zu Popup und Besucher. Der Besucher hat sie selbst hingeschrieben (zero-party). Sie werden nicht an Dritte weitergegeben, außer der Händler richtet den Klaviyo-Sync ein (Abschnitt 6).

2.4 Ausgegebene Rabattcodes (claimed_rewards, discount_code_pool)

Code, Rabattverhalten, Ausgabezeitpunkt, Ablauf sowie nach Einlösung Bestellnummer, Betrag und Währung.

2.5 Zugeordnete Bestellungen (attributed_orders)

Eine Zeile je Bestellung, die einen von PopupLift ausgegebenen Code benutzt hat: Betrag, Währung, Bestellzeitpunkt, Popup. Der Personenbezug steckt allein in den Feldern claimed_reward_id, order_id und code, die bei einer Löschanfrage geleert werden (Abschnitt 9.2). Quelle ist der Shopify-Webhook orders/create. PopupLift liest keine Bestellpositionen, keine Lieferadressen und keine Zahlungsdaten.

2.6 Server-Protokolle und Missbrauchsabwehr

Der Anwendungsserver protokolliert eingehende Anfragen (Methode, Pfad, Statuscode, Zeitstempel, IP-Adresse des Aufrufers). Alle offenen Storefront-Endpunkte haben zusätzlich ein Rate-Limit: global 600 Anfragen pro Minute und IP, je Route enger. Bei Anfragen mit Besucher-Sitzung wird vorrangig die Sitzungskennung gezählt; die IP-Adresse dient dort als Rückfallwert.

Das ist ausdrücklich zu unterscheiden von Abschnitt 2.7: Die IP-Adresse steht in den flüchtigen Betriebsprotokollen der Hosting-Plattform und im Arbeitsspeicher des Rate-Limiters. Sie wird nicht in die Datenbank geschrieben, es gibt kein IP-Feld im Datenmodell, und sie wird mit keinem Besucherprofil verknüpft.

Die Anwendungsprotokolle der Hosting-Plattform (Railway) werden dort 7 Tage vorgehalten und danach automatisch gelöscht.

Diese Protokolle führen wir in eigener Verantwortlichkeit (Abschnitt 4, berechtigtes Interesse): Sie entstehen zwar durch Anfragen der Besucher, dienen aber allein der Sicherheit und Verfügbarkeit unseres Dienstes, nicht einem Zweck des Händlers.

2.7 Was ausdrücklich nicht verarbeitet wird


3. Verarbeitung in eigener Verantwortlichkeit (Daten des Händlers)

Shop-Domain und Shop-Status, verschlüsselte Zugangstoken (Shopify, Klaviyo), Einstellungen (Firmenname, Links auf AGB und Datenschutzerklärung des Händlers, Logo), monatliche Nutzungszahlen (usage_counters: Besucher und Leads je Monat) als Grundlage der Abrechnung, sowie Support-Kommunikation.


4. Zwecke, Rechtsgrundlagen und Speicherdauer

Die eine Tabelle, in der alles zusammenläuft. Grundlage ist Verordnung (EU) 2016/679. Bei berechtigtem Interesse ist das Interesse ausformuliert und nicht nur die Norm zitiert.

Betroffene PersonDatenkategorieZweckRechtsgrundlageSpeicherdauer
Shop-BesucherE-Mail, Telefon, Einwilligungszeitpunkt (2.1)Rabattcode zustellen, Aufnahme in die Marketing-Liste des HändlersAuftragsverarbeitung nach Art. 28 auf Weisung des Händlers. Gegenüber dem Besucher trägt der Händler die Grundlage (Einwilligung, Art. 6 Abs. 1 lit. a)bis der Händler löscht, customers/redact eintrifft oder die App deinstalliert wird (Abschnitt 8)
Shop-BesucherQuiz- und Umfrage-Antworten (2.3)Reports „Survey answers" und „Performance by survey answer" im Händler-DashboardAuftragsverarbeitung nach Art. 28 auf Weisung des Händlers180 Tage
Shop-BesucherEreignisse (2.2)Auswertung des Funnels (Views, Anmeldungen, beanspruchte Rewards) für den HändlerAuftragsverarbeitung nach Art. 28 auf Weisung des Händlers180 Tage
Shop-BesucherZwischenstand im Popup (2.2)ein mehrstufiges Popup dort fortsetzen, wo der Besucher aufgehört hatAuftragsverarbeitung nach Art. 28 auf Weisung des Händlerswie die Besucherzeile; wird mit ihr gelöscht
Shop-BesucherRabattcodes und zugeordnete Bestellungen (2.4, 2.5)einen Code genau einmal ausgeben, erzielten Umsatz je Popup nachweisenAuftragsverarbeitung nach Art. 28 auf Weisung des Händlerswie die Besucherzeile; nach customers/redact verbleibt eine anonymisierte Kennzahlenzeile
Shop-BesucherLand und Sprache (2.1)Ausspielungsregeln, AuswertungAuftragsverarbeitung nach Art. 28 auf Weisung des Händlerswie die Besucherzeile
Shop-BesucherIP-Adresse in Protokoll und Rate-Limiter (2.6)Betriebssicherheit, Abwehr von Missbrauch und automatisierten Angriffen auf offene Storefront-EndpunkteArt. 6 Abs. 1 lit. f. Berechtigtes Interesse: einen missbrauchsfreien, verfügbaren Dienst bereitzustellen; für nicht authentifizierte Anfragen ist die IP-Adresse das einzige praktikable Unterscheidungsmerkmal7 Tage (Plattform-Protokolle, siehe 2.6); Rate-Limit-Zähler nur im Arbeitsspeicher, Fenster eine Minute
HändlerShop-Domain, Einstellungen, verschlüsselte Token (3)Bereitstellung der AppArt. 6 Abs. 1 lit. b (Vertragserfüllung)Dauer der Installation, danach Abschnitt 8
HändlerNutzungszahlen usage_counters (3)Abrechnung und Nachweis der abgerechneten MengenArt. 6 Abs. 1 lit. b; ergänzend Art. 6 Abs. 1 lit. c für handels- und steuerrechtliche Aufbewahrungkeine automatische Frist, siehe Abschnitt 8 (enthält keinen Personenbezug)
HändlerSupport-Kommunikation (3)Beantwortung von AnfragenArt. 6 Abs. 1 lit. b, ergänzend lit. f. Berechtigtes Interesse: Nachvollziehbarkeit früherer Anfragen24 Monate nach dem letzten Kontakt
Händler und Shop-BesucherFehlerberichte (Abschnitt 6, Sentry)Fehlerdiagnose und StabilitätArt. 6 Abs. 1 lit. f. Berechtigtes Interesse: Fehler zu finden, bevor sie Umsatz kosten. Personenbezogene Inhalte werden vor dem Versand entfernt. Soweit ein Fehlerbericht Daten aus der Auftragsverarbeitung berührt, geschieht das im Rahmen des AV-Vertrags — Sentry ist dort als Unterauftragsverarbeiter genannt30 Tage im derzeit genutzten Sentry-Plan; automatische Löschung durch den Anbieter
HändlerCompliance-Ledger compliance_requests (9)Nachweis, dass eine Lösch- oder Auskunftsanfrage bearbeitet wurdeArt. 6 Abs. 1 lit. c (Nachweispflicht aus Art. 5 Abs. 2)Nachweiszeile dauerhaft (ohne Klartext-E-Mail), Export-Inhalt 30 Tage

Kriterien, wo keine feste Zahl steht. Wenn wir Daten auf Grundlage eines Vertrags verarbeiten, speichern wir sie für die Dauer des Vertrags und danach, solange Ansprüche daraus geltend gemacht werden können. Bei berechtigtem Interesse endet die Speicherung, sobald das Interesse entfällt oder ein begründeter Widerspruch vorliegt. Bei Einwilligung endet sie mit dem Widerruf. Bei gesetzlicher Pflicht gilt die gesetzliche Frist.


5. Speicherung auf dem Endgerät des Besuchers (§ 25 TDDDG)

Das Widget setzt keine Cookies. Es legt Werte in localStorage und sessionStorage des Browsers ab. Rechtlich ist das derselbe Vorgang: § 25 TDDDG erfasst jede Speicherung von Informationen auf dem Endgerät und jeden Zugriff darauf, unabhängig von der Technik.

Wichtig zur Zuständigkeit: Die Speicherung findet auf der Storefront des Händlers statt, also im Rahmen des digitalen Dienstes, den der Händler anbietet. Eine nach § 25 Abs. 1 TDDDG erforderliche Einwilligung ist deshalb vom Händler einzuholen, in der Regel über sein Consent-Banner. PopupLift liefert die Angaben, die er dafür braucht, und zwar diese:

SchlüsselAblageZweckLaufzeitEinordnung
pl-jwtlocalStorageSitzungstoken gegenüber unserem Server. Ohne ihn nimmt der Server keine Eingabe aus dem Popup anbis zum Ablauf des Tokensunbedingt erforderlich, § 25 Abs. 2 Nr. 2 TDDDG
pl-fs-<Popup-ID>localStorageStand innerhalb eines mehrstufigen Popups. Ohne ihn beginnt ein Reload wieder bei Frage 1bis zum Abschluss des Popupsunbedingt erforderlich, § 25 Abs. 2 Nr. 2 TDDDG
pl-session-open-<Popup-ID>sessionStoragedasselbe Popup nicht mehrfach in einer Sitzung öffnenEnde der Sitzungunbedingt erforderlich (Frequenzbegrenzung), § 25 Abs. 2 Nr. 2 TDDDG, siehe Hinweis unten
pl-popup-groundlocalStorageSperrfrist zwischen zwei verschiedenen Popupsnach Konfiguration des Händlersunbedingt erforderlich (Frequenzbegrenzung), § 25 Abs. 2 Nr. 2 TDDDG, siehe Hinweis unten
pl-has-emaillocalStoragewer bereits eine E-Mail abgegeben hat, bekommt das Popup nicht erneutdauerhaft, bis der Besucher den Speicher leertunbedingt erforderlich (Frequenzbegrenzung), § 25 Abs. 2 Nr. 2 TDDDG, siehe Hinweis unten
pl-done-<Popup-ID>localStoragedieses Popup ist für diesen Besucher erledigt (Reward geclaimt oder weggeklickt) und erscheint nicht wiederdauerhaft, bis der Besucher den Speicher leertunbedingt erforderlich (Frequenzbegrenzung), § 25 Abs. 2 Nr. 2 TDDDG, siehe Hinweis unten
pl-done-srvsessionStorageMerker, dass diese Sitzung den Server schon einmal gefragt hat, welche Popups dieser Besucher erledigt hat (siehe unten)Ende der Sitzungnicht erforderlich (zweite Ebene zu pl-done-<id>), § 25 Abs. 1 TDDDG
pl-tracked-sessionsessionStorageeine Sitzung genau einmal zählenEnde der Sitzungnicht erforderlich (Reichweitenmessung), § 25 Abs. 1 TDDDG
pl-pageslocalStoragebesuchte Pfade (höchstens 50) für Ausspielungsregelndauerhaft, bis der Besucher den Speicher leertnicht erforderlich (Targeting), § 25 Abs. 1 TDDDG
pl-pvsessionStorageSeitenaufrufe dieser SitzungEnde der Sitzungnicht erforderlich (Targeting), § 25 Abs. 1 TDDDG
pl-srcsessionStorageutm_* und Referrer-Domain beim Beginn der SitzungEnde der Sitzungnicht erforderlich (Targeting), § 25 Abs. 1 TDDDG
pl-seenlocalStorageerste Sitzung dieses Browsers (neu oder wiederkehrend)dauerhaft, bis der Besucher den Speicher leertnicht erforderlich (Targeting), § 25 Abs. 1 TDDDG
pl-retsessionStorageEntscheidung neu oder wiederkehrend für diese SitzungEnde der Sitzungnicht erforderlich (Targeting), § 25 Abs. 1 TDDDG

Zu den unbedingt erforderlichen Einträgen. § 25 Abs. 2 Nr. 2 TDDDG befreit von der Einwilligung, wenn die Speicherung „unbedingt erforderlich ist, damit der Anbieter eines digitalen Dienstes einen vom Nutzer ausdrücklich gewünschten digitalen Dienst zur Verfügung stellen kann". pl-jwt und pl-fs-<id> erfüllen das: Ohne sie kann der Besucher das Popup, das er gerade ausfüllt, nicht abschließen.

Zu den Einträgen der Frequenzbegrenzung. pl-session-open-<id>, pl-popup-ground, pl-has-email und pl-done-<id> verhindern, dass derselbe Besucher dasselbe Popup wieder und wieder sieht. pl-done-<id> hält dabei das Ende fest: Wer den Reward geclaimt oder das Popup weggeklickt hat, hat den Flow abgeschlossen; ohne diesen Vermerk begänne er auf der nächsten Seite von vorn. Gespeichert ist der Zeitpunkt des Abschlusses und die Popup-ID des Händlers — nichts, was den Besucher beschreibt. Wir ordnen diese vier Einträge als unbedingt erforderlich im Sinne des § 25 Abs. 2 Nr. 2 TDDDG ein: Ohne sie wäre der Dienst für den Besucher keine abgeschlossene Interaktion, sondern eine Endlosschleife — dasselbe Popup erschiene auf jeder Seite erneut, auch nachdem er es ausgefüllt oder weggeklickt hat. Die Frequenzbegrenzung schützt damit in erster Linie den Besucher selbst.

Zweite Ebene zu pl-done-<id>. Der Marker kann verloren gehen: Der Speicher eines Browsers ist begrenzt, und ein fehlgeschlagener Schreibversuch bleibt unbemerkt. Ein bereits abgeschlossenes Popup erschiene dann wieder. Der Launcher fragt deshalb einmal je Sitzung beim Server nach, welche Popups dieser Besucher schon abgeschlossen oder weggeklickt hat, und stellt den Marker wieder her (pl-done-srv merkt sich, dass gefragt wurde). Zwei Punkte dazu, weil sie leicht missverstanden werden:

Abfrage und Meldung hängen zusätzlich am Consent-Signal des Shops (marketingAllowed()): Der lokale Marker ist unbedingt erforderlich, diese zweite Ebene ist es nicht — ohne Einwilligung findet sie nicht statt.

Zu den nicht erforderlichen Einträgen. Sie dienen den Ausspielungsregeln (Targeting), der Sitzungszählung und der zweiten Ebene oben. Sie entstehen nur, wenn der Händler entsprechende Regeln konfiguriert hat. Rechtsgrundlage ist die Einwilligung des Besuchers nach Art. 6 Abs. 1 lit. a DSGVO sowie § 25 Abs. 1 TDDDG. Die Einwilligung ist jederzeit mit Wirkung für die Zukunft widerrufbar, in der Regel über das Consent-Banner des Shops. Ein Widerruf berührt die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung nicht.

Der Gegenwert dieser Aufstellung. Alle Werte in dieser Tabelle bleiben im Browser des Besuchers. Das Besucherprofil, gegen das die Ausspielungsregeln ausgewertet werden, wird ausschließlich lokal im Browser gebildet und an niemanden übertragen. Der Server erfährt aus dem Targeting nicht, wer ein Besucher ist, sondern nur, welche Kampagnen-IDs am Ende angefragt wurden. Deshalb gibt es in PopupLift bewusst keinen Report über UTM-Quelle, Referrer oder Gerät.

Das Widget wertet den Consent-Status aus. Seit dem 03.08.2026 fragt es Shopifys Customer-Privacy-API (window.Shopify.customerPrivacy) ab, bevor es einen der sieben nicht erforderlichen Schlüssel schreibt — und bevor es einen davon liest, denn § 25 TDDDG erfasst beides gleichermaßen. Die Zuordnung folgt dem Zweck:

Schlüsselgebunden an
pl-pages, pl-pv, pl-src, pl-seen, pl-retmarketingAllowed() — sie entscheiden, welches Marketing-Popup ein Besucher sieht
pl-done-srvmarketingAllowed() — die zweite Ebene entscheidet ebenfalls, ob ein Marketing-Popup erscheint
pl-tracked-sessionanalyticsProcessingAllowed() — Reichweitenmessung

Ohne Einwilligung entsteht keiner dieser Schlüssel. Das Popup funktioniert weiter; die Ausspielungsregeln werten dann gegen das Profil eines Erstbesuchers aus (leere Historie, erster Seitenaufruf, keine Wiedererkennung, Quelle nur auf der Landing-Seite). Regeln, die auf Seite, Gerät oder aktueller URL beruhen, greifen unverändert — Einwilligung kostet hier Treffgenauigkeit, nicht die Funktion. Bei Widerruf werden die fünf Targeting-Schlüssel unmittelbar entfernt (der Launcher hört auf visitorConsentCollected).

Hat der Shop keine Consent-Konfiguration, wird geschrieben. Das ist Shopifys eigene Semantik: In Regionen mit Consent-Pflicht sind nicht erforderliche Zwecke bis zur Einwilligung gesperrt, in allen anderen sind sie erlaubt. Sehr viele Shops betreiben kein Banner; dort gibt es keine Einwilligungsentscheidung, die eine App respektieren könnte, und die Bewertung nach § 25 liegt beim Händler als Anbieter des digitalen Dienstes — er bekommt mit dieser Tabelle genau die Angaben, die er dafür braucht. Ist die API vorhanden, antwortet sie in Consent-Regionen von sich aus mit „nein", solange nichts entschieden wurde; der Default greift also nur dort, wo nichts zu respektieren ist.

Die Einträge der Frequenzbegrenzung hängen bewusst nicht an diesem Gate: Sie sind nach der Einordnung oben unbedingt erforderlich, und ihr Wegfall würde den Dienst für den Besucher in eine Endlosschleife verwandeln.


6. Empfänger und Unterauftragsverarbeiter

Verarbeitungsort und Speicherort werden getrennt ausgewiesen, weil ein Unternehmen mit Sitz in einem Drittland Daten in der EU speichern kann und umgekehrt. Beides ist für die Bewertung nötig.

Empfänger (Sitz)FunktionOrt der VerarbeitungOrt der SpeicherungGrundlage der Übermittlung
Supabase Pte. Ltd. (Singapur; verbundenes US-Unternehmen Supabase, Inc.)Postgres-Datenbank, alle in Abschnitt 2 und 3 genannten DatenAWS eu-central-1, Frankfurt am MainAWS eu-central-1, Frankfurt am MainAV-Vertrag mit Standardvertragsklauseln (Supabase DPA); ein Support-Zugriff aus den USA oder Singapur ist nicht ausgeschlossen und über die Klauseln abgedeckt
Railway Corporation (USA)Anwendungshosting: Server, Auslieferung des Widgets, Admin-Oberfläche, Anwendungsprotokolleeurope-west4, EU West, AmsterdamEU West, Amsterdam (Protokolle, 7 Tage)AV-Vertrag mit Standardvertragsklauseln (Railway DPA); Railway ist zudem unter dem EU-US Data Privacy Framework zertifiziert. Support-Zugriff aus den USA nicht ausgeschlossen
Shopify International Limited (Irland; Konzernmutter Shopify Inc., Kanada)Quelle und Ziel der Daten: Storefront, Kundenanlage, Rabattcodes, Bestell-WebhooksglobalglobalShopify-DPA des Händlers mit Standardvertragsklauseln; für die Übermittlung nach Kanada gilt der Angemessenheitsbeschluss der EU-Kommission
Klaviyo, Inc. (USA)E-Mail-Marketing, nur wenn der Händler die Verbindung selbst herstellt (OAuth-Verbindung oder eigener API-Key)USAUSA (AWS us-east-1, Northern Virginia)EU-US Data Privacy Framework (Klaviyo ist selbstzertifiziert) und ergänzend Standardvertragsklauseln in der Klaviyo-DPA. Der Vertrag über diese Übermittlung besteht zwischen Händler und Klaviyo, nicht zwischen PopupLift und Klaviyo
Functional Software, Inc. (Sentry) (USA)Fehlerdiagnose: Fehlerberichte aus Server, Verwaltungsoberfläche und — über den Server vermittelt — dem Storefront-Widget. Personenbezogene Inhalte werden vor dem Versand entferntEU-Datenregion, Frankfurt am MainFehler-Ereignisse: Frankfurt am Main. Konto- und Organisationsdaten des Sentry-Kontos (Zugänge, Einstellungen, Audit-Protokolle): USAAV-Vertrag mit Standardvertragsklauseln; Sentry ist zudem unter dem EU-US Data Privacy Framework zertifiziert
Cloudflare, Inc. (USA)DNS für app.popuplift.com und Weiterleitung der Postfächer support@ und privacy@ (E-Mail-Routing). Ein CDN vor der App-Domain ist nicht im Einsatzglobales Netz, Weiterleitung im DurchlaufInhalte weitergeleiteter E-Mails werden nach Anbieterangabe nicht gespeichert; Zustellprotokolle fallen anAV-Vertrag mit Standardvertragsklauseln; Cloudflare ist zudem unter dem EU-US Data Privacy Framework zertifiziert
Betreiber (Deutschland)tägliche Sicherungskopien der Datenbank (14 Kopien)Rechner des Betreibers in Deutschlanddito; die Kopien sind asymmetrisch verschlüsselt, der private Schlüssel wird getrennt von den Kopien verwahrtkeine Übermittlung an Dritte

Wer davon Unterauftragsverarbeiter ist. Unterauftragsverarbeiter im Sinne des AV-Vertrags (dort Anlage 1) sind Supabase, Railway, Shopify und Sentry. Die übrigen Zeilen sind Empfänger, aber keine Unterauftragsverarbeiter: Klaviyo, weil der Vertrag über diese Übermittlung zwischen Händler und Klaviyo besteht; Cloudflare, weil es keine Besucherdaten aus der App verarbeitet, sondern nur die Support-Postfächer des Betreibers weiterleitet (Daten aus Abschnitt 3); der Betreiber, weil er der Auftragsverarbeiter selbst ist.

Zu Sentry. Sentry ist aktiv. Fehlerberichte des Servers und der Verwaltungsoberfläche werden vor dem Versand von personenbezogenen Daten befreit: E-Mail-Adressen, Zugangstoken, JWTs, Authorization-Header, Klaviyo-Keys, die Werte sensibler Feldnamen und Geheimnisse in URL-Parametern werden ersetzt. Tracing und Profiling sind abgeschaltet; die Verwaltungsoberfläche sendet weder Sitzungsaufzeichnungen (Session Replay) noch Bedienungsverläufe noch Nutzerkennungen. Das Storefront-Widget enthält kein Fehler-SDK eines Drittanbieters, sondern meldet Fehler an unseren eigenen Server; die Meldung enthält Fehlertext, Stack und die Adresse der Seite, auf der der Fehler auftrat, und wird erst nach der Bereinigung an Sentry weitergegeben. Die Ereignisdaten liegen in Sentrys EU-Datenregion (Frankfurt am Main) und werden vom Anbieter automatisch gelöscht — im derzeit genutzten Sentry-Plan nach 30 Tagen.

Zu Klaviyo. Der Sync ist optional und wird erst aktiv, wenn der Händler die Verbindung selbst herstellt — über den Connect-Knopf in den App-Einstellungen (OAuth) oder mit einem eigenen API-Key. Übergeben werden dann E-Mail-Adresse, Einwilligungszeitpunkt und die vom Händler gewählten Zusatzfelder einschließlich Quiz-Antworten als Profil-Eigenschaften; auf dieser Grundlage legt PopupLift im Konto des Händlers auch Segmente an, sofern der Händler das konfiguriert.

Änderungen an dieser Liste. Neue oder ersetzte Unterauftragsverarbeiter werden 15 Tage vor Wirksamkeit angekündigt. Der Händler kann innerhalb von 10 Tagen widersprechen; kommt keine Einigung zustande, kann er den Vertrag kündigen. Die Regelung steht in § 6 des AV-Vertrags (Abschnitt 12), hier nur zur Information.


7. Übermittlung in Drittländer

Die Datenbank und der Anwendungsserver stehen in der EU (Frankfurt und Amsterdam). Für den regulären Betrieb der App findet keine Übermittlung personenbezogener Daten in ein Drittland statt.

Fünf Ausnahmen, die ehrlich benannt gehören:

  1. Klaviyo verarbeitet in den USA. Die Übermittlung findet nur statt, wenn der Händler den Sync aktiv einrichtet, und sie geschieht in seinem Auftrag und auf seine Rechnung. Grundlage: EU-US Data Privacy Framework und ergänzende Standardvertragsklauseln.
  2. Shopify ist die Plattform, auf der der Shop ohnehin läuft. Die Datenverarbeitung dort regelt der Vertrag zwischen Händler und Shopify (für EU-Händler mit Shopify International Limited, Irland); für die Übermittlung nach Kanada gilt der Angemessenheitsbeschluss der EU-Kommission.
  3. Supabase und Railway betreiben EU-Rechenzentren, sind aber Gesellschaften außerhalb der EU (Singapur bzw. USA). Die Daten liegen in der EU; ein Zugriff von außerhalb (etwa durch Support oder Administration) ist nicht ausgeschlossen und über die jeweiligen AV-Verträge samt Standardvertragsklauseln abgedeckt.
  4. Sentry speichert die Fehler-Ereignisse in der EU (Frankfurt am Main); die Konto- und Organisationsdaten des Sentry-Kontos liegen beim Anbieter in den USA. Grundlage: Standardvertragsklauseln und EU-US Data Privacy Framework.
  5. Cloudflare leitet die E-Mails an die Support- und Datenschutz-Postfächer über sein globales Netz weiter, ohne die Inhalte nach Anbieterangabe zu speichern. Grundlage: Standardvertragsklauseln und EU-US Data Privacy Framework.

8. Löschfristen

Der Löschlauf ist automatisiert und läuft alle sechs Stunden.

DatenFristWas passiert
Ereignisse (user_actions)180 TageZeile wird gelöscht
Quiz- und Umfrage-Antworten (poll_answers)180 TageZeile wird gelöscht
anonyme Besucher ohne E-Mail und ohne beanspruchten Reward90 Tage ab letztem KontaktZeile wird gelöscht
Auskunfts-Export (compliance_requests.result)30 Tage ab BearbeitungInhalt wird auf NULL gesetzt, die Nachweiszeile bleibt
abgeschlossene Hintergrund-Jobs (outbox_jobs, Status done)7 TageZeile wird gelöscht
tägliche Sicherungskopien14 Kopien, also rund 14 Tageälteste wird verworfen

Ohne automatische Frist, und zwar bewusst:

Nach Deinstallation: Die Zugangstoken werden schon beim Uninstall-Webhook (app/uninstalled) sofort gelöscht. 48 Stunden nach der Deinstallation sendet Shopify shop/redact. Damit wird die Shop-Zeile gelöscht; der Fremdschlüssel-Cascade nimmt Leads, Popups, Uploads, verschlüsselte Token und offene Jobs mit.

Nach einer Wiederherstellung aus einer Sicherungskopie werden zwischenzeitlich eingegangene Löschanfragen erneut angewendet; das Nachweisregister der bearbeiteten Anfragen übersteht die Wiederherstellung.


9. Betroffenenrechte und die Shopify-Compliance-Webhooks

Besucher eines Shops richten ihre Anfragen an den Händler, er ist der Verantwortliche. Der Händler leitet sie über Shopify weiter; Shopify stellt sie PopupLift als Webhook zu.

Alle drei Webhooks werden HMAC-geprüft (ungültige Signatur: 401), im Ledger compliance_requests protokolliert (mit unique(topic, payload_hash) gegen Doppelverarbeitung), sofort mit 200 quittiert und danach von einem Hintergrund-Worker ausgeführt. Grund für die Trennung: Shopify bricht eine Zustellung nach 5 Sekunden ab, ein shop/redact ist aber keine Fünf-Sekunden-Arbeit.

9.1 customers/data_request, Auskunft nach Art. 15

Die zu diesem Kunden gespeicherten Daten werden automatisch zusammengestellt (Besucherzeile, Ereignisse, Quiz-Antworten, ausgegebene Rabattcodes) und in die Ledger-Zeile geschrieben. Den Export stellt der Betreiber dem Händler auf Anfrage unverzüglich zur Verfügung, spätestens binnen 10 Tagen — dieselbe Frist, die der AV-Vertrag (§ 7) zusagt, damit der Händler seine eigene 30-Tage-Frist gegenüber dem Betroffenen wahren kann. Der Export wird nach 30 Tagen automatisch geleert, weil Shopify dem Händler 30 Tage zum Antworten gibt und die Kopie danach nur noch Risiko ist.

9.2 customers/redact, Löschung nach Art. 17

Zwei Klassen, absichtlich unterschiedlich behandelt:

Der Grund ist inhaltlich: Nach der Anonymisierung ist die Zeile kein personenbezogenes Datum mehr, und die Kennzahlen des Händlers sinken nicht rückwirkend bei jeder Löschanfrage.

9.3 shop/redact, Löschung des ganzen Shops

Kommt 48 Stunden nach der Deinstallation. Die shops-Zeile wird gelöscht, der Cascade räumt alles daran Hängende ab. Der Compliance-Ledger hat bewusst keinen Fremdschlüssel auf shops, sonst nähme der Cascade den Nachweis mit.

9.4 Alle Rechte im Überblick

RechtNormWeg
AuskunftArt. 15Shop-Besucher über den Händler, technisch über 9.1. Händler direkt bei uns
BerichtigungArt. 16über den Händler, Umsetzung auf dessen Weisung
LöschungArt. 17Shop-Besucher über den Händler, technisch über 9.2
EinschränkungArt. 18über den Händler, Umsetzung auf dessen Weisung
DatenübertragbarkeitArt. 20der Export aus 9.1 ist maschinenlesbar
WiderspruchArt. 21über den Händler; gegenüber PopupLift für die in Abschnitt 4 auf lit. f gestützten Zwecke
Widerruf einer EinwilligungArt. 7 Abs. 3jederzeit mit Wirkung für die Zukunft, beim Händler bzw. über dessen Consent-Banner
Beschwerde bei einer AufsichtsbehördeArt. 77Berliner Beauftragte für Datenschutz und Informationsfreiheit, Alt-Moabit 59-61, 10555 Berlin

10. Technische und organisatorische Maßnahmen (Art. 32)


11. Verletzung des Schutzes personenbezogener Daten

Wird uns eine Verletzung des Schutzes personenbezogener Daten bekannt, informieren wir den betroffenen Händler unverzüglich, in der Regel binnen 24 Stunden ab Kenntnis, damit er seinen Pflichten aus Art. 33 und 34 DSGVO nachkommen kann (Meldung an die Aufsichtsbehörde binnen 72 Stunden, Benachrichtigung der Betroffenen bei hohem Risiko). Gegenüber Shopify besteht zusätzlich eine Meldepflicht binnen 24 Stunden aus dem Partner Program Agreement.

Das zugehörige Verfahren ist seit dem 03.08.2026 dokumentiert und regelt Erkennung, Meldewege und die genannten Fristen.


12. Auftragsverarbeitungsvertrag

Zwischen Händler und PopupLift ist ein Vertrag zur Auftragsverarbeitung nach Art. 28 DSGVO erforderlich. Shopifys eigene DPA regelt nur Händler gegenüber Shopify und deckt den App-Anbieter nicht ab.

Der AVV in Version 2026-08-12 wird unter /avv bereitgestellt. Der Vertragsschluss nach Art. 28 Abs. 9 DSGVO erfolgt in Textform über die Zustimmung in der App; diese Funktion wird derzeit ausgerollt. Der AVV umfasst die Regelungen nach Art. 28 Abs. 3 DSGVO einschließlich seiner Unterauftragsverarbeiter-Liste (Anlage 1); Abschnitt 6 dieser Erklärung führt darüber hinaus Empfänger auf, die keine Unterauftragsverarbeiter sind, und erklärt die Abgrenzung.


13. Änderungen dieser Erklärung

Diese Erklärung wird angepasst, wenn sich Verarbeitung, Unterauftragsverarbeiter oder Fristen ändern. Stand: 12.08.2026.


Privacy Policy (short English version)

Who we are. PopupLift is a Shopify app operated by Kyrill Pysarenko, Danziger Str. 76, 10405 Berlin, Deutschland, privacy@popuplift.com.

Two roles, and which one applies to you. For everything a shop visitor does in a popup, the merchant is the controller and PopupLift is a processor acting on the merchant's instructions. We have no legal basis of our own for that data, and data subject rights are exercised with the merchant. This policy does not replace the merchant's own privacy notice. For the merchant's account data (shop domain, settings, usage counts for billing, support conversations) PopupLift is the controller.

What we process on the merchant's behalf. E-mail address and optional phone number entered in the popup, the timestamp of marketing consent, quiz and survey answers, popup events (view, step, signup, reward claimed, close) with an anonymous session id, the progress state of a multi-step popup, country and language taken from the Shopify storefront localisation (never from IP geolocation), the discount codes we issued, and, for revenue attribution, the order id, amount and currency of orders that used one of those codes.

What we do not do. We store no IP addresses in the database (there is no IP column in the data model), set no cookies, run no IP geolocation, use no advertising identifiers or fingerprinting, load no fonts from Google, and have no path in the code that exports data for AI training. Request logs on the hosting platform do contain the caller's IP address for abuse prevention and are deleted after 7 days; the public storefront endpoints are rate limited.

Storage on the visitor's device. The widget uses localStorage and sessionStorage, never cookies. Two entries are strictly necessary to deliver the popup the visitor is filling in (pl-jwt, pl-fs-<id>). Four limit how often a visitor sees the same popup — including pl-done-<id>, which records that a visitor finished or dismissed a popup so it does not come back; we classify these frequency caps as strictly necessary, because without them the popup would reappear on every page even after the visitor completed or dismissed it. Seven further entries exist only for targeting rules, session counting and the server-side second layer behind pl-done-<id>; they are not strictly necessary and therefore require consent under section 25 (1) TDDDG and Art. 6 (1) (a) GDPR. The full table with purposes and lifetimes is in section 5 of the German version. All of these values stay in the browser: the visitor profile the targeting rules are evaluated against is built locally and never transmitted, which is also why PopupLift deliberately has no report on UTM source, referrer or device.

Sub-processors. Supabase Pte. Ltd. (Postgres, processed and stored in AWS eu-central-1, Frankfurt), Railway Corporation (application hosting, europe-west4, Amsterdam), Shopify International Limited (source and destination of the data; EU merchants contract with the Irish entity), Klaviyo, Inc. (only if the merchant connects their own account via OAuth or API key; United States, EU-US Data Privacy Framework plus standard contractual clauses), Functional Software, Inc. (Sentry — error reporting; event data is stored in Sentry's EU data region in Frankfurt and automatically deleted — after 30 days under the currently used Sentry plan — while Sentry account and organization metadata resides in the United States), Cloudflare, Inc. (DNS and e-mail forwarding for the support mailboxes; forwarded e-mail content is not stored according to the provider), plus daily encrypted database backups held by the operator in Germany. Supabase, Railway, Sentry and Cloudflare are bound by data processing agreements with standard contractual clauses; Railway, Sentry and Cloudflare are additionally certified under the EU-US Data Privacy Framework. The Klaviyo transfer runs under the merchant's own contract with Klaviyo, not under a PopupLift agreement.

Retention. Events and survey answers 180 days; anonymous visitors without an e-mail address and without a claimed reward 90 days from last contact; GDPR export copies 30 days; completed background jobs 7 days; backups 14 copies. Visitors who gave an e-mail address are the merchant's lead list and are kept until the merchant deletes them, a customers/redact arrives, or the app is uninstalled.

Data subject rights. Visitors exercise their rights with the merchant. Shopify forwards requests to us as the three mandatory compliance webhooks. customers/data_request produces an export we hand to the merchant on request without undue delay, at the latest within 10 days (auto-purged after 30 days). customers/redact deletes identity rows and anonymises event rows, so aggregate reporting stays correct without a personal reference. shop/redact, which arrives 48 hours after uninstall, deletes the shop row and everything cascading from it. Merchants also have the right to lodge a complaint with a supervisory authority.

Security. HTTPS everywhere, AES-256-GCM encryption of Shopify and Klaviyo tokens at rest, row-level security in Postgres locking out the platform's public database roles with per-shop separation enforced in the application layer, HMAC verification of every webhook before parsing (401 on an invalid signature), expiring session tokens with key rotation, PII scrubbing before any error report leaves the server, and rate limits on all public storefront endpoints.

Breach notification. We inform the affected merchant without undue delay — as a rule within 24 hours of becoming aware — so that they can meet their Art. 33 and 34 GDPR obligations, and we notify Shopify within 24 hours as required by the Partner Program Agreement.

Contact. privacy@popuplift.com