Kartuu KYTH. Systems UG (haftungsbeschränkt)

← Zurück zu Kartuu

Datenschutzerklärung für Kartuu

Kartuu ist eine Shopify-App der KYTH. Systems UG (haftungsbeschränkt). Sie erzeugt aus bezahlten Shopify-Bestellungen personalisierte Geschenkgutscheine als PDF. Die Zustellung an Käufer und Beschenkte läuft über den Mailzugang, den der Händler selbst hinterlegt — nicht über einen Versandweg von KYTH. Siehe Abschnitt 4.2.

Diese Erklärung beschreibt, welche Daten Kartuu verarbeitet. Sie beschreibt den tatsächlichen Stand der Software, nicht das, was irgendwann geplant ist. Wo die App heute weniger tut, als ihre Beschreibung im Shopify App Store vermuten lässt, steht das hier ausdrücklich.

Fassung 1.1
Stand 26.07.2026
Kennung des Zustimmungsnachweises 1.1-2026-07-26
Abgebildeter Quelltextstand 27.07.2026 (Bestellablauf)

Warum der abgebildete Quelltextstand jünger ist als die Fassung: Fassung 1.1 ist nie ausgeliefert worden und hat deshalb keinen einzigen Zustimmenden — die Begründung steht in Abschnitt 14. Die Kennung bleibt darum unverändert, während der Inhalt dem heutigen Programm nachgeführt wird.


⚠ Hinweis: nicht anwaltlich geprüft

Dieses Dokument wurde aus dem Quelltext und der Betriebsdokumentation von Kartuu erstellt und stellt keine Rechtsberatung dar. Es trägt seit dem 01.08.2026 keine offenen Stellen mehr; was aus dieser Zeit noch nachzuhalten ist, steht in Abschnitt 12.

Vor der Einreichung im Shopify App Store sollte es anwaltlich geprüft werden.


1. Auf einen Blick


2. Verantwortlicher

KYTH. Systems UG (haftungsbeschränkt) Prof.-Mederer-Straße 4 92348 Berg Deutschland

Vertreten durch die Geschäftsführer Stefan Grasse und Stephan Wittmann Registergericht: Amtsgericht Nürnberg, HRB 46313

Kontakt in Datenschutzfragen: datenschutz@kyth.systems Allgemeiner Kontakt: hello@kyth.systems Telefon: 0157 51603446

Die angegebene Telefonnummer ist die Geschäftsnummer der Gesellschaft; sie wird von der Geschäftsführung persönlich betrieben.

Eine Umsatzsteuer-Identifikationsnummer ist der Gesellschaft bislang nicht erteilt. Für diese Erklärung ist sie kein Pflichtbestandteil; für das Impressum wird sie es, sobald eine vorliegt.

Datenschutzbeauftragter: Ein Datenschutzbeauftragter ist nicht bestellt. Nach § 38 BDSG besteht dazu bei der derzeitigen Unternehmensgröße keine Pflicht. Für alle Anliegen ist die oben genannte Adresse zuständig.


3. Drei Rollen — bitte auseinanderhalten

Diese Erklärung richtet sich an drei Gruppen, und für jede gilt etwas anderes.

Sie sind Händlerin oder Händler und installieren Kartuu in Ihrem Shop Sie handeln für einen Händler im Shopify-Adminbereich Sie haben in einem Shop eingekauft, der Kartuu einsetzt — oder Sie sind beschenkt worden
Unsere Rolle Verantwortlicher nach Art. 4 Nr. 7 DSGVO Verantwortlicher nach Art. 4 Nr. 7 DSGVO Auftragsverarbeiter nach Art. 4 Nr. 8, Art. 28 DSGVO
Verantwortlich ist KYTH. Systems UG (haftungsbeschränkt) KYTH. Systems UG (haftungsbeschränkt) der Shop, bei dem Sie bestellt haben
Wir handeln auf eigener Rechtsgrundlage, siehe Abschnitt 5 auf eigener Rechtsgrundlage, siehe Abschnitt 5.6 ausschließlich auf Weisung des Shops
Ihre Rechte richten Sie an uns, siehe Abschnitt 10.1 uns, siehe Abschnitt 10.1 zuerst an den Shop, siehe Abschnitt 10.2
Zuständiger Abschnitt 5 5.6 6
Was Sie selbst tun müssen siehe § 12 des Auftragsverarbeitungsvertrages

Die dritte Spalte umfasst zwei Personen, und das ist seit dem Bestellablauf keine Feinheit mehr: die Person, die den Gutschein gekauft hat, und die Person, für die er bestimmt ist. Von der zweiten speichert Kartuu Name, E-Mail-Adresse und den an sie gerichteten Grußtext — obwohl sie nie etwas bestellt hat und Shopify sie nicht kennt. Für sie gilt dasselbe wie für die Käuferin: Wir sind Auftragsverarbeiter, verantwortlich ist der Shop. Was von ihr verarbeitet wird, steht in 6.1; wie sie zu ihrem Recht kommt, in 10.2.

Wir entscheiden nicht selbst über Zwecke und Mittel der Verarbeitung von Kundendaten eines Shops. Wir setzen um, was der Shop uns aufträgt. Grundlage dafür ist ein Auftragsverarbeitungsvertrag nach Art. 28 Abs. 3 DSGVO, den der Händler mit uns schließt.

Dieser Vertrag liegt als eigenes Dokument vor (Fassung 1.1, Stand 26.07.2026, intern geführt unter der Kennung 1.1-2026-07-26). Er enthält in § 12 eine kurze Liste dessen, was der Händler selbst zu tun hat.

Wie der Vertrag zustande kommt. Beim Verbinden der App im Shopify-Adminbereich zeigen wir Ihnen beide Dokumente — diese Erklärung und den Auftragsverarbeitungsvertrag — und fragen Ihre Zustimmung als bewusste Handlung ab. Ohne Zustimmung wird die App nicht verbunden: Es entsteht kein Datensatz zu Ihrem Shop, und es werden keine Zugangstoken bei Shopify abgeholt. Was wir dabei als Nachweis speichern, steht in 5.3.

Ändert sich einer der beiden Texte inhaltlich, erhöhen wir die Fassungskennung; beim nächsten Öffnen der App werden Sie erneut gefragt. Eine reine Tippfehlerkorrektur führt nicht zu einer neuen Kennung — ein Zustimmungsfenster ohne Anlass entwertet die Zustimmung.

Beide Dokumente liefert die App unter https://kartuu.kyth.systems/rechtliches/ aus (/rechtliches/datenschutz und /rechtliches/auftragsverarbeitung), ohne Anmeldung und in derselben Fassung, der Sie zustimmen. Unabhängig davon erhalten Sie sie jederzeit auf Anfrage an datenschutz@kyth.systems.

Zum Auslieferungsriegel. Die App liefert einen Rechtstext in der Produktivumgebung nur aus, wenn er keine offenen Stellen mehr trägt; andernfalls verweigert sie dort den Start (kaspar/routes/rechtliches.py). Eine Zustimmung zu einem Text, den man nicht lesen kann, wäre unwirksam.

Diese Erklärung und das Impressum sind seit dem 01.08.2026 vollständig. Der Auftragsverarbeitungsvertrag trägt weiterhin offene Stellen und hält den Riegel damit geschlossen — die Produktivumgebung startet also nach wie vor nicht. Was dort noch fehlt, steht in seinem eigenen Schlussabschnitt.


4. Stand der Software — was Kartuu heute wirklich tut

Kartuu befindet sich im Aufbau. Der Funktionsumfang, der in dieser Erklärung beschrieben wird, entspricht dem Quelltext mit Stand 27.07.2026.

Zur Zeitform dieses Dokuments. Wir beschreiben im Präsens ausschließlich das, was das Programm tatsächlich tut. Alles, wozu wir nur berechtigt sind oder was für spätere Ausbaustufen vorgesehen ist, steht ausdrücklich als solches gekennzeichnet daneben — niemals im Präsens. Die Trennung zieht sich durch das ganze Dokument: Abschnitte 5 und 6.1 beschreiben die tatsächliche Verarbeitung, Abschnitt 4.2 zählt auf, was das Programm nicht tut, und Abschnitt 4.3 sagt zu jeder erteilten Berechtigung, ob sie ausgeübt wird.

4.1 Was heute geschieht

Kartuu nimmt Ihre Shop-Domain und Ihre Zustimmung entgegen, holt bei Shopify Zugangstoken ab und erneuert sie, prüft eingehende Webhooks auf ihre Echtheit, bedient die drei von Shopify vorgeschriebenen Datenschutz-Webhooks, liest bei Shopify den Abonnementstand Ihres Shops, nimmt von Ihnen hochgeladene Bildmotive entgegen, prüft sie und bewahrt sie auf, und erzeugt aus Angaben, die Sie im Adminbereich eintippen, eine Vorschau und ein PDF der Gutscheinkarte.

Dazu gekommen ist der Bestellablauf, und er ist die weitreichendste Änderung seit dem ersten Entwurf dieser Erklärung:

Das ist der vollständige Umfang. Einzelheiten in den Abschnitten 5 und 6.1.

4.2 Was heute nicht geschieht

Es gibt im Programm keine Stelle, die

Die Liste der Tabellen mit personenbezogenen Kundendaten, die die Auskunfts- und Löschfunktion durchsucht, ist nicht mehr leer: Sie enthält die Gutscheintabelle. Frühere Fassungen dieser Erklärung sagten hier das Gegenteil.

4.3 Welche Berechtigungen erteilt sind — und welche davon ausgeübt werden

Kartuu fordert bei der Installation drei Berechtigungen an sowie den Zugriff auf die geschützten Kundendatenfelder „Name“ und „E-Mail-Adresse“. Shopify zeigt Ihnen das bei der Installation an, und Sie erteilen es damit.

Berechtigung Wozu Wird sie ausgeübt?
read_orders Gutscheinbestellungen erkennen und die Angaben lesen, die der Kunde im Bestellformular gemacht hat Ja. Ohne sie käme der orders/paid-Webhook ohne verwertbaren Inhalt an. Ausgeübt wird sie über den Webhook, nicht über eine Abfrage bei Shopify
write_gift_cards die Shopify-Geschenkkarte anlegen, die hinter einem Wertgutschein steht — mit einem Code, den Kartuu selbst erzeugt, weil ein von Shopify vergebener Code nie auslesbar wäre Ja, bei jedem Wertgutschein. Ausgeübt wird heute ausschließlich das Anlegen; das Deaktivieren einer Karte beim Storno ist vorgesehen und nicht gebaut
write_products das Gutscheinprodukt in Ihrem Shop anlegen — Produkt, Option, je Betrag eine Variante und die Metafelder, an denen der Bestellablauf die Gutscheinpositionen wiedererkennt Ja, aber nur auf Ihren Klick. Nichts entsteht bei der Installation oder im Hintergrund; ein vorhandenes Produkt wird nicht geändert und keines gelöscht
Feld „Name“ (geschützte Kundendaten) Empfängername und Name der schenkenden Person werden auf den Gutschein gedruckt Ja, aus den Angaben der Bestellposition
Feld „E-Mail-Adresse“ (geschützte Kundendaten) der fertige Gutschein soll als PDF an Käufer und wahlweise an die beschenkte Person zugestellt werden Ja. Die Adresse des Beschenkten wird entgegengenommen und verschlüsselt gespeichert. Zugestellt wird über den vom Händler hinterlegten Mailzugang; ohne hinterlegten Zugang wird nichts zugestellt

read_all_orders ist ausdrücklich nicht angefordert: Kartuu braucht nur Bestellungen ab dem Zeitpunkt der Installation. Ebenso wenig write_publications — ob Ihr Gutscheinprodukt in Ihrem Onlineshop sichtbar wird, entscheiden Sie.

Bis zu dieser Fassung stand hier, die Berechtigung sei erteilt, aber an keiner Stelle ausgeübt. Das galt, solange es den Bestellablauf nicht gab, und gilt seither nicht mehr. Die Erklärung ist deshalb nachgeführt worden, statt den Unterschied zwischen „darf“ und „tut“ weiter zu behaupten, wo es ihn nicht mehr gibt.


5. Daten der Händlerinnen und Händler (wir sind Verantwortliche)

Wozu wir Ihre Daten nicht verwenden. Eine Verarbeitung zu eigenen Zwecken — insbesondere zu Werbung, Profiling, Weiterverkauf, zum Training von Modellen oder zu Auswertungen über Händler hinweg — findet nicht statt.

5.1 Was gespeichert wird

Ein Personenbezug entsteht hier nur mittelbar: die Shop-Domain identifiziert einen Betrieb, und bei Einzelunternehmen steht dahinter eine natürliche Person. Wir behandeln diese Daten deshalb wie personenbezogene Daten.

Datenkategorie Woher Wozu Rechtsgrundlage Wie lange
Shop-Domain im Klartext (z. B. beispielshop.myshopify.com) aus dem signaturgeprüften Shopify-Session-Token bzw. aus dem Inhalt der signierten Webhook-Nachricht Zuordnung Ihres Shops, Adressierung des Shopify-Token-Endpunkts, Zuordnung eingehender Webhooks Art. 6 Abs. 1 lit. b DSGVO (Nutzungsvertrag) bis zum shop/redact-Webhook, spätestens 30 Tage nach der Deinstallation, siehe 9.2 und 9.3 — mit dem dort benannten Vorbehalt: Solange der Auslöser des Aufräumlaufs fehlt, trägt die 30-Tage-Frist nur, wenn Shopify den Webhook tatsächlich zustellt
Suchhash der Shop-Domain (ein nicht umkehrbarer Prüfwert, berechnet mit dem Verfahren HMAC-SHA256) berechnet aus der Shop-Domain Suchindex: Produktionsabfragen laufen über den Hash statt über den Klartext Art. 6 Abs. 1 lit. b, lit. f DSGVO — berechtigtes Interesse: den Kreis der Stellen klein zu halten, die die Klartext-Domain zu sehen bekommen, und den Schaden bei einer Kompromittierung der Datenbank zu begrenzen wie oben
Shopify Access Token Ihres Shops Antwort des Shopify-Token-Endpunkts Zugriff auf die Shopify-API in Ihrem Namen. Verwendet für die Abfrage des Abonnementstands, für das Anlegen einer Geschenkkarte und für die Einrichtung Ihres Gutscheinprodukts — die vollständige Liste der sechs Aufrufe steht in Abschnitt 7. Bestellungen und Kundendatenfelder werden damit nicht abgefragt Art. 6 Abs. 1 lit. b DSGVO Bei Deinstallation sofort auf NULL; endgültig mit der Shop-Zeile bei shop/redact. Die Gültigkeit endet unabhängig davon nach 1 Stunde — der abgelaufene, verschlüsselte Wert bleibt bis zu einem der beiden Löschereignisse gespeichert
Shopify Refresh Token Ihres Shops Antwort desselben Endpunkts Erneuerung des Access Tokens ohne erneute Anmeldung Art. 6 Abs. 1 lit. b DSGVO Bei Deinstallation sofort auf NULL, ebenso wenn Shopify ihn verwirft; endgültig mit der Shop-Zeile bei shop/redact. Die Gültigkeit endet unabhängig davon nach 90 Tagen
Technische Metadaten: Ablauf- und Rotationszeitpunkte der Token, Token-Version, Installations- und Deinstallationszeitpunkt, erteilte Berechtigungen (Scopes) serverseitig erzeugt bzw. aus der Shopify-Antwort übernommen Steuerung des Token-Lebenszyklus, Auflösen gleichzeitiger Installationen, Erkennen verspäteter Webhooks Art. 6 Abs. 1 lit. b, lit. f DSGVO — berechtigtes Interesse: ein störungsfreier Token-Lebenszyklus und die Auflösung gleichzeitiger Installationsvorgänge wie Shop-Domain
Abonnementstand Ihres Shops: ob ein aktives Abonnement besteht, der von Shopify vergebene Tarifname, ob es ein von Shopify ausgestelltes Testabonnement ist, und wann zuletzt gefragt wurde Antwort der Shopify-Admin-API auf die Frage, ob für Ihren Shop ein aktives Abonnement dieser App besteht Durchsetzung der Bezahlschranke am PDF-Abruf und Anzeige Ihres Tarifs im Adminbereich. Zwischengespeichert, damit nicht jeder PDF-Abruf einen Aufruf bei Shopify auslöst Art. 6 Abs. 1 lit. b DSGVO (Nutzungsvertrag) wie Shop-Domain
Ihre Kontaktadresse (E-Mail), verschlüsselt gespeichert Ihre Eingabe im Zustimmungsschritt (Pflichtfeld) Mitteilungen an Sie: Meldung einer Datenpanne, Änderung des Auftragsverarbeitungsvertrages, Wechsel eines Unterauftragsverarbeiters, Weiterleitung von Anfragen betroffener Personen Art. 6 Abs. 1 lit. b DSGVO (Nutzungs- und Auftragsverarbeitungsvertrag). Ergänzend Art. 6 Abs. 1 lit. c DSGVO, soweit die Meldung nach Art. 33 Abs. 2 DSGVO betroffen ist wie Shop-Domain
Nachweis Ihrer Zustimmung: Zeitpunkt und Kennung der zugestimmten Fassung serverseitig erzeugt beim Zustimmungsschritt Nachweis, dass und zu welcher Fassung ein Auftragsverarbeitungsvertrag geschlossen wurde (Art. 28 Abs. 3, Art. 5 Abs. 2 DSGVO) Art. 6 Abs. 1 lit. b DSGVO; ergänzend Art. 6 Abs. 1 lit. c DSGVO — die Schriftform des Art. 28 Abs. 9 DSGVO verlangt einen belegbaren Vorgang wie Shop-Domain
Auftritt Ihres Shops: der Name, den Sie für die Gutscheinkarte wählen, und der Schlüssel des Bildes, das Sie als Logo bestimmt haben Ihre eigene Eingabe im Adminbereich unter „Gestalten“ Damit auf der Karte der Name Ihres Ladens steht und nicht die aus Ihrer Shop-Adresse abgeleitete Bezeichnung, und damit Ihr Logo darauf erscheint. Tragen Sie nichts ein, bleibt es wie bisher Art. 6 Abs. 1 lit. b DSGVO (Nutzungsvertrag) wie Shop-Domain — beides steht in der Zeile Ihres Shops und verschwindet mit ihr
Hochgeladene Bildmotive — der Bildinhalt selbst. Bei JPEG, PNG und WebP die Datei unverändert wie hochgeladen, einschließlich der eingebetteten Aufnahmedaten (EXIF); bei SVG die um alles Ausführbare bereinigte Fassung Ihr eigener Upload im Adminbereich. Nicht aus Ihrem Shop, nicht aus einer Bestellung Das Motiv auf der Gutscheinkarte zeichnen — in der Vorschau und im PDF. Ohne Aufbewahrung müssten Sie Ihr Logo vor jeder einzelnen Vorschau erneut hochladen Art. 6 Abs. 1 lit. b DSGVO (Nutzungsvertrag) — Sie laden das Bild hoch, damit die App es benutzt. Für Personen, die auf einem Bild zu sehen sind oder in dessen Aufnahmedaten stehen, schaffen Sie die Rechtsgrundlage: Wir sehen das Bild nicht durch und können sie nicht prüfen Solange die App verbunden ist. Endgültig mit shop/redact — und, wenn der ausbleibt, mit dem Aufräumlauf nach 9.3, der seit dem 01.08.2026 täglich läuft. Siehe 9.2; dort stehen auch zwei benannte Grenzen
Hochgeladene Bildmotive — die Angaben darüber: Schlüssel (<Shop-Kennung>/<Prüfsumme>.<Endung>), MIME-Typ, Größe in Byte, Breite und Höhe in Pixeln, Prüfsumme (SHA-256), Zeitpunkt des Hochladens beim Prüfen des Bildes serverseitig ermittelt — der Typ aus dem Inhalt, nicht aus Ihrer Angabe Ihre Bilder auflisten und ihr Seitenverhältnis anzeigen, ohne jedes Bild dafür aus dem Objektspeicher holen zu müssen Art. 6 Abs. 1 lit. b DSGVO wie Shop-Domain — die Angaben tragen eine Shop-Kennung und verschwinden mit dem Shop
Webhook-Kennungen: die von Shopify vergebene Webhook-ID mit Status und Zeitstempeln ein Kennfeld im Kopf der eingehenden Anfrage (X-Shopify-Webhook-Id) Duplikatschutz — verhindert, dass Wiederholungen desselben Webhooks mehrfach verarbeitet werden Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse: zu vermeiden, dass wiederholt zugestellte Webhooks mehrfach verarbeitet werden 30 Tage nach Abschluss des Webhooks, siehe 9.4
Zugriffsprotokoll für geschützte Kundendaten (in Shopifys Sprachgebrauch Protected Customer Data — kurz PCD): Shop-Kennung, Zeitpunkt, Akteur, Zweck, betroffene Feldkategorie, Anzahl der Datensätze eigene Anwendung Auflage der Shopify-Freigabe für geschützte Kundendaten und eigene Rechenschaftsfähigkeit nach Art. 5 Abs. 2 DSGVO: belegt, dass auf geschützte Kundendaten zugegriffen wurde, nicht welche. Vermerkt werden heute drei Zwecke: eine Auskunft nach Art. 15, eine Löschung nach Art. 17 und — seit dem Bestellablauf — das Anlegen von Gutscheinen aus einer bezahlten Bestellung. Bis dahin lief dieses Protokoll ins Leere, weil es keine Kundendaten gab Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse: die Nachweisauflagen aus der Shopify-Partnervereinbarung zu erfüllen, ohne die die App nicht betrieben werden darf, und rechenschaftsfähig zu bleiben. Ergänzend Art. 6 Abs. 1 lit. b DSGVO, soweit das Protokoll zur Erfüllung des Nutzungsvertrages erforderlich ist wie Shop-Domain — das Protokoll trägt eine Shop-Kennung und verschwindet mit dem Shop
Ihr Gutscheinprodukt: die Art (Wert- oder Leistungsgutschein), die Shopify-Produktkennung, der Handle, unter dem das Produkt in Ihrem Shop steht, die beim Anlegen gewählte Kartenvorlage und der Zeitpunkt des Anlegens serverseitig festgehalten, wenn Sie das Produkt anlegen lassen Zweimaliges Anlegen verhindern, den eingerichteten Stand im Adminbereich anzeigen, ohne dafür Shopify zu fragen, und im Bestellablauf eine Gutscheinposition auch dann erkennen, wenn ein Theme die Zusatzangaben nicht mitschickt Art. 6 Abs. 1 lit. b DSGVO (Nutzungsvertrag) wie Shop-Domain. Personenbezogene Daten trägt diese Zeile nicht — eine Produktkennung, ein Handle und zwei Kennungen aus unserem eigenen Vokabular
Anwendungsprotokolle: Shop-Domain, interne Shop-Kennung, beim Zugriffsprotokoll zusätzlich Akteur und Zweck, ob ein Abonnement aktiv bzw. ein Testabonnement ist, bei einer abgelehnten Eingabe im Gutschein-Editor der Name des beanstandeten Feldes — nie dessen Inhalt —, beim Hochladen eines Bildes der Typ des angenommenen Bildes bzw. der Grund einer Ablehnung — nie der Schlüssel, nie die Prüfsumme, nie ein Ausschnitt der Datei —, im Bestellablauf die Bestell-, Positions- und Gutscheinkennung, die Anzahl angelegter Gutscheine, der erreichte Zustand und der Fehlergrund als kurze eigene Kennungnie ein Gutscheincode, nie ein Abruf-Token, nie ein Empfänger- oder Absendername, nie ein Grußtext, nie eine Kunden-E-Mail-Adresse —, sowie die Art einer aufgetretenen Ausnahme eigene Anwendung Betriebsdiagnose (fehlgeschlagene Installation, fehlgeschlagener Tokentausch, unbekannter Shop, nicht abrufbarer Abonnementstand, gescheitertes Rendern, nicht erreichbarer Objektspeicher, gescheitertes Anlegen einer Geschenkkarte oder eines Gutscheinprodukts) Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse: Betriebsstörungen zu erkennen und zu beheben und Angriffe zu bemerken 14 Tage, siehe 9.7
Shop-Domain und Webhook-Kennung aus signierten Webhooks zu Shops ohne Zustimmung — die App ist bei der von Shopify verwalteten Installation bereits installiert und die Webhooks sind abonniert, bevor Sie die eingebettete Seite zum ersten Mal öffnen. Deinstallieren Sie, ohne dem Auftragsverarbeitungsvertrag zugestimmt zu haben, sendet Shopify trotzdem app/uninstalled — und geht in dieser Lage eine bezahlte Bestellung ein, auch orders/paid aus dem signierten Inhalt der Webhook-Nachricht bzw. deren Kopfzeile Entgegennahme des Webhooks, Nachschlagen des Shops. Ein Datensatz zu Ihrem Shop entsteht dabei nicht, und auch keine Gutscheinzeile: Ohne Shop-Datensatz gibt es keinen Mandanten, in dem eine entstehen könnte. Der Inhalt der Bestellung wird zur Signaturprüfung vollständig eingelesen, danach aber nicht mehr ausgewertet und im Arbeitsspeicher verworfen. Gespeichert wird die technische Webhook-Kennung, und wenn kein Shop zur Domain gehört, eine Zeile im Anwendungsprotokoll Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse: einen von Shopify verpflichtend abonnierten Webhook signaturgeprüft entgegenzunehmen und einen unbekannten Shop nicht lautlos zu verschlucken. Ergänzend Art. 6 Abs. 1 lit. c DSGVO für die Datenschutz-Webhooks. Ein Nutzungsvertrag nach lit. b besteht in dieser Lage gerade nicht Webhook-Kennung 30 Tage nach Abschluss (9.4), Protokollzeile 14 Tage (9.7)

Das Zugriffsprotokoll für geschützte Kundendaten enthält bewusst keine Spalte, die einen Namen, eine Adresse, eine E-Mail-Adresse oder eine Gutscheinnummer aufnehmen könnte. Die zulässigen Werte für Akteur und Feldkategorie sind in der Datenbank per Prüfregel auf ein festes Vokabular begrenzt.

Erforderlichkeit der Bereitstellung. Die Bereitstellung der Shop-Domain und der Shopify-Zugangstoken ist weder gesetzlich noch vertraglich vorgeschrieben, für die Installation und den Betrieb von Kartuu aber zwingend erforderlich. Diese Daten entstehen automatisch, wenn Sie die App in Ihrem Shop verbinden.

Wo die Bildmotive liegen — und wo nicht. Alle übrigen Zeilen dieser Tabelle stehen in der Datenbank auf dem Server in Berlin. Bei den Bildmotiven gilt das nur für die Angaben darüber; der Bildinhalt liegt im Objektspeicher der IONOS in Berlin, in einem eigenen Eimer je Umgebung und nicht öffentlich lesbar (Abschnitt 7). Er ist deshalb auch nicht Teil der Datenbanksicherung — was das bedeutet, steht in 9.6.

Stand der Einrichtung, damit diese Zeilen nicht mehr behaupten, als gilt. Der Adminbereich bietet den Upload inzwischen an — im Gutschein-Editor gibt es ein Feld, über das ein Motiv hochgeladen wird. Bis zu dieser Fassung stand hier, es gebe keine solche Oberfläche; das traf zu, als der Satz geschrieben wurde, und trifft seither nicht mehr zu. Wohin die Bytes gehen, entscheidet weiterhin die Konfiguration der jeweiligen Umgebung: Ohne Angabe gilt ein Verzeichnis im Dateisystem, und das ist die Voreinstellung. Welche Umgebung auf den Objektspeicher umgestellt ist, steht nicht im Programm und lässt sich diesem Dokument deshalb nicht entnehmen; die Zeilen oben beschreiben die Verarbeitung, für die diese Erklärung und der Auftragsverarbeitungsvertrag die Grundlage schaffen — in dieser Reihenfolge und nicht umgekehrt: Erst der Text, dann die Umstellung. Läge es andersherum, läge ein Händlerbild in einem Speicher, den kein Dokument nennt.

Was ein hochgeladenes Bild enthält, bestimmen Sie. Wir prüfen es auf Format, Maße und Ungefährlichkeit (11.2), sehen den Inhalt aber nicht durch und entfernen die Aufnahmedaten nicht. Ein Foto aus einem Mobiltelefon kann Aufnahmezeitpunkt, Gerät und Standort tragen; diese Angaben bleiben im gespeicherten Bild und im daraus erzeugten PDF. Wenn Sie das nicht wollen, entfernen Sie die Aufnahmedaten vor dem Hochladen. Wir sagen es hier ausdrücklich, weil ein Gutschein weitergegeben wird und wir Ihnen die Entscheidung nicht abnehmen können, ohne Ihr Bild neu zu berechnen und dabei sichtbar zu verschlechtern.

Ihre Kontaktadresse müssen Sie dagegen selbst eingeben, und sie ist ein Pflichtfeld: Ohne sie können wir Ihnen weder eine Datenpanne melden noch eine Vertragsänderung ankündigen, und die Angaben nach Art. 30 Abs. 2 lit. a DSGVO ließen sich nicht führen. Geben Sie keine Adresse an oder stimmen Sie dem Auftragsverarbeitungsvertrag nicht zu, wird die App nicht verbunden — es kommt dann kein Vertrag zustande und es wird kein Datensatz zu Ihrem Shop angelegt (Art. 13 Abs. 2 lit. e DSGVO). Vollständig verarbeitungsfrei ist dieser Fall dennoch nicht: Deinstallieren Sie danach, nimmt Kartuu den Webhook app/uninstalled entgegen, den Shopify unabhängig von Ihrer Zustimmung sendet. Was dabei geschieht, steht in der letzten Zeile der Tabelle oben.

Für das Zugriffsprotokoll über geschützte Kundendaten besteht keine Wahlmöglichkeit; es ist Voraussetzung der Shopify-Freigabe.

5.2 Was ausdrücklich nicht gespeichert wird

5.3 Ihre Kontaktadresse und der Zustimmungsnachweis

Was wir erheben. Im Zustimmungsschritt beim Verbinden der App fragen wir eine E-Mail-Adresse ab, unter der wir Sie erreichen können. Das Feld ist ein Pflichtfeld. Zusammen mit Ihrer Zustimmung speichern wir genau drei Angaben zu Ihrem Shop:

Angabe Form
wer — Ihre Kontaktadresse verschlüsselt (AES-256-GCM), wie die Zugangstoken
wann — Zeitpunkt der Zustimmung zeitzonenbewusster Zeitstempel
welche Fassung — die Kennung des Textes, dem Sie zugestimmt haben Klartext, z. B. 1.1-2026-07-26

Die Fassungskennung setzt ausschließlich der Server. Eine vom Browser mitgeschickte Angabe wird nicht übernommen — sonst ließe sich eine Zustimmung zu einer Fassung protokollieren, die Ihnen nie angezeigt wurde.

Die drei Angaben stehen entweder alle oder gar nicht: Die Datenbank lässt einen halben Nachweis nicht zu. Zu Ihrer Kontaktadresse wird kein Suchhash gebildet — nach der Adresse sucht niemand, sie wird über Ihre Shop-Domain gefunden.

Was wir damit tun. Wir schreiben Ihnen an diese Adresse, wenn es einen Anlass gibt: eine Verletzung des Schutzes personenbezogener Daten, eine Änderung des Auftragsverarbeitungsvertrages, ein Wechsel eines Unterauftragsverarbeiters, oder die Weiterleitung einer Anfrage, die eine betroffene Person an uns statt an Sie gerichtet hat. Werbung senden wir nicht.

Was wir damit nicht tun. Die Adresse wird nicht an Dritte weitergegeben, nicht ausgewertet und nicht mit anderen Händlern in Beziehung gesetzt.

Wenn Sie uns schreiben. Verarbeiten wir Ihre Nachricht und Ihre Absenderadresse, um sie zu beantworten. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, soweit es um den Nutzungsvertrag geht, sonst Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse: an uns gerichtete Anfragen zu beantworten.

Adresse ändern. Schreiben Sie an datenschutz@kyth.systems. Eine Änderung in der App ist noch nicht vorgesehen.

Abrechnung. Kartuu setzt die von Shopify verwalteten App-Tarife ein: Die Tarife sind im Shopify Partner Dashboard hinterlegt, die Auswahl und die Bezahlung finden auf einer Seite von Shopify statt, nicht bei uns. Im Programm steht keine Abrechnungslogik — kein Preis, keine Testphasenlänge, kein Buchungsvorgang. Wir lesen bei Shopify ausschließlich die Antwort auf eine Frage: ob für Ihren Shop ein aktives Abonnement besteht (siehe die Zeile Abonnementstand in 5.1). Zahlungsdaten — Karten-, Konto- oder Rechnungsdaten — verarbeiten wir nicht; sie liegen bei Shopify.

Kein eigener Bezahlweg. Die Abrechnung läuft ausschließlich über die von Shopify verwalteten Tarife; bei uns fallen dabei keine Zahlungs- oder Abrechnungsdaten an. Wird die Abrechnung eines Tages an Shopify vorbeigeführt — etwa über einen eigenen Zahlungsdienstleister —, ist dieser Abschnitt vor der Umstellung um die dann tatsächlich verarbeiteten Daten zu ergänzen und die Fassungskennung zu erhöhen.

5.4 App Bridge aus dem Shopify-CDN

Die eingebettete Oberfläche von Kartuu lädt die Bibliothek „App Bridge“ direkt von cdn.shopify.com. Dieser Aufruf geht aus Ihrem Browser, nicht von unserem Server. Shopify erhält dabei die üblichen Verbindungsdaten Ihres Browsers, also IP-Adresse und User-Agent, sowie die Herkunftsangabe.

Mitgegeben wird dabei nur die öffentliche Kennung unserer App. Es werden keine Kunden-, Bestell- oder Gutscheindaten und kein Token übertragen. Shopify erfährt durch die Herkunftsangabe nur, dass der Aufruf von https://kartuu.kyth.systems kommt — nicht, von welcher Unterseite, und nicht, um welchen Shop es geht. Dafür sorgt eine Referrer-Richtlinie, die den Parameter mit Ihrer Shop-Domain abschneidet.

Empfänger ist Shopify selbst, also dieselbe Stelle, die die umgebende Admin-Oberfläche ausliefert und Ihre IP-Adresse ohnehin sieht. Ein zusätzlicher Empfängerkreis entsteht dadurch nicht.

5.5 Keine Cookies, kein Tracking

Kartuu setzt keine eigenen Cookies und verwendet weder localStorage noch sessionStorage (zwei Speicher, die eine Website im Browser anlegen kann). Es sind keine Analyse-, Statistik-, Werbe- oder Tag-Dienste eingebunden. Schriftarten liegen lokal im Container; es wird kein externer Schrift- oder Symboldienst aufgerufen. Eine Einwilligung nach § 25 TDDDG — dem deutschen Gesetz über Cookies und Zugriffe auf Endgeräte — ist deshalb nicht erforderlich.

5.6 Wenn Sie für einen Händler im Shopify-Adminbereich handeln

Diese Angaben gelten für Personen, die Kartuu für einen Händler öffnen, ohne selbst der Händler zu sein — Beschäftigte des Shops, Agenturen, technische Dienstleister. Für Sie gilt Art. 14 DSGVO, weil wir Ihre Daten nicht von Ihnen bekommen.


6. Daten der Kundschaft eines Shops (wir sind Auftragsverarbeiter)

6.1 Heutiger Stand: Kartuu speichert Bestell-, Kunden- und Empfängerdaten

Bis zu dieser Fassung stand hier: „Kartuu speichert derzeit keine personenbezogenen Daten von Endkundinnen und Endkunden oder von Beschenkten." Dieser Satz ist mit dem Bestellablauf falsch geworden, und er war die tragende Aussage des ganzen Abschnitts. Was heute gilt, steht hier.

Wer betroffen ist — drei Personen an einer Bestellung

Person Was von ihr verarbeitet wird Woher
Die Käuferin oder der Käufer Name und E-Mail-Adresse (verschlüsselt) sowie die Shopify-Kundennummer (bei einem Gastkauf fehlt sie) aus der bezahlten Bestellung
Die beschenkte Person — sie hat nie etwas bestellt und hat deshalb auch keine Kundennummer Name, E-Mail-Adresse und der an sie gerichtete Grußtext aus den Angaben, die im Bestellformular gemacht wurden
Die schenkende Person, soweit sie sich als Absenderin einträgt der Absendername ebenso

Die beschenkte Person hat dabei zwei Rollen zugleich, und beide gehören genannt:

Erhält sie die Karte, erfährt sie damit auch den Namen der schenkenden Person und den Grußtext. Für die Information dieser Personen ist der Shop zuständig, nicht wir — und weil eine beschenkte Person ihre Daten nicht selbst gegeben hat, gilt dafür Art. 14 DSGVO (siehe 6.3).

Was gespeichert wird

Je gekauftem Stück entsteht eine Zeile. Kauft jemand drei Gutscheine über je 50 Euro, sind das drei Zeilen mit drei Codes — nicht eine über 150 Euro; ein zusammengefasster Gutschein ließe sich nicht einzeln verschenken und nicht einzeln einlösen.

Angabe Form Wozu
Empfängername, E-Mail-Adresse des Beschenkten, Absendername, Grußtext verschlüsselt (AES-256-GCM), wie die Zugangstoken des Händlers auf die Karte drucken; die Adresse für die spätere Zustellung
Suchwert über die E-Mail-Adresse des Beschenkten nicht umkehrbarer Prüfwert (HMAC-SHA256) damit eine Auskunft oder Löschung die beschenkte Person überhaupt finden kann. Sie hat keine Kundennummer; ohne diesen Suchwert wäre ihr Recht auf Löschung technisch nicht erfüllbar
Shopify-Kundennummer des Käufers Klartext Suchschlüssel der beiden Datenschutz-Webhooks — ein verschlüsselter Wert ließe sich nicht durchsuchen
Gutscheincode verschlüsselt, daneben ein nicht umkehrbarer Suchwert Shopify gibt den Code genau einmal heraus; danach ist er dort nicht mehr lesbar. Der Suchwert stellt sicher, dass kein Code je zweimal vergeben wird, und lässt den Händler einen vorgelegten Gutschein wiederfinden
Abruf-Token des Gutscheins verschlüsselt, daneben ein nicht umkehrbarer Suchwert die Adresse, unter der der Gutschein später abrufbar sein soll. Heute ohne Route dahinter
Bestell- und Positionskennung, laufende Nummer des Stücks Klartext sie bilden zusammen den Schlüssel, an dem eine wiederholte Zustellung desselben Webhooks als derselbe Vorgang erkannt wird und keine zweiten Gutscheine erzeugt
Nennwert und Währung, der gedruckte Betrag als Text, der Shopname, ein Gültigkeitsdatum Klartext die Karte muss sich ohne den Webhook-Körper fertig drucken lassen. Ein Gültigkeitsdatum wird heute nicht gesetzt
Zustand, Zeitpunkt des letzten Zustandswechsels, Fehlerzähler, Fehlergrund als kurze Kennung Klartext der Ablauf von „vorbereitet" bis „bereit", und was schiefging
Kennung der Shopify-Geschenkkarte Klartext um die Karte später zuordnen zu können. Ein Guthabenstand wird nicht gespeichert — den führt allein Shopify
Ein eingefrorenes Abbild der Kartenvorlage, mit Platzhaltern statt Werten JSON damit ein Nachdruck dieselbe Karte ergibt, auch wenn der Händler seine Vorlage inzwischen geändert hat. Die personenbezogenen Werte stehen bewusst daneben und nicht darin: In dem Abbild ließen sie sich nicht einzeln verschlüsseln und nicht einzeln löschen
Die Schlüssel der Bildmotive, die in dieser Karte stecken Klartext damit ein Motiv, das ein ausgestellter Gutschein benutzt, nicht gelöscht werden kann

Was ausdrücklich nicht gespeichert wird: Anschrift und Telefonnummer der Kundschaft, Zahlungsdaten, der Bestellinhalt jenseits der Gutscheinpositionen, das gerenderte PDF und das Wunschversanddatum, das im Bestellformular angegeben werden kann. Für keines davon gibt es eine Spalte.

Was weiterhin flüchtig bleibt

Der Gutschein-Editor. Im Adminbereich tippt der Händler Empfängername, Absendername, Grußtext, Gutscheincode, Betrag, Shopname und Gültigkeitsdatum ein und lässt sich daraus eine Vorschau und ein PDF erzeugen. Kartuu setzt die Werte in die gewählte Kartenvorlage, gibt Vorschau und PDF an denselben Händler zurück und behält nichts davon: keine Tabelle, keine Datei, kein Protokolleintrag mit Inhalt — im Protokoll steht im Fehlerfall nur der Name des beanstandeten Feldes, nie dessen Inhalt. Diese Angaben stammen nicht aus Ihrem Shop, sondern aus der Eingabe des Händlers.

Die Datenschutz-Webhooks. Ihr Inhalt wird zur Signaturprüfung vollständig eingelesen und danach verworfen. Ausgewertet werden Kundennummer und E-Mail-Adresse, mehr nicht. Einzelheiten in 6.4.

Das gerenderte PDF. Es entsteht im Arbeitslauf und wird nach dem Rendern verworfen. Gerendert wird trotzdem, denn „bereit" heißt „die Karte lässt sich drucken" — eine Vorlage, die an einem langen Grußtext zerbricht, soll hier auffallen und nicht beim Beschenkten.

Entgegennehmen, Auslesen und Verwerfen sind Verarbeitung im Sinne von Art. 4 Nr. 2 DSGVO. Wo unten „speichert nicht" steht, heißt das nicht „verarbeitet nicht" — die beiden Wörter sind an dieser Stelle nicht austauschbar.

Hochgeladene Bilder

Was auf einem hochgeladenen Motiv zu sehen ist und welche Aufnahmedaten darin stehen, entscheidet allein der Händler. Bildet ein Motiv Personen ab, sind deren Daten gespeichert, solange der Shop besteht (5.1).

Kartuu kann das nicht verhindern und prüft es nicht — eine Software, die Bilder auf abgebildete Personen durchsieht, wäre selbst die weitergehende Verarbeitung. Die Verantwortung dafür, ein Motiv nur mit der nötigen Rechtsgrundlage hochzuladen, liegt deshalb beim Händler; Kartuu ist dabei Auftragsverarbeiter und handelt auf seine Weisung. Der Upload ist diese Weisung (§ 3.2 Nr. 3 des Auftragsverarbeitungsvertrages).

6.2 Wie lange diese Daten liegen

Ereignis Wirkung auf die Gutscheindaten
Löschung einer einzelnen Person (customers/redact, oder ein Verlangen an uns) Empfängername, E-Mail-Adresse, deren Suchwert, Absendername und Grußtext werden auf NULL gesetzt; die Kundennummer nur dann, wenn sie zu der gesuchten Person gehört. Der Gutschein selbst bleibt: Code, Zustand, Wert und Vorlagenabbild. Er ist bezahlt, und die beschenkte Person kann ihn morgen einlösen wollen — ein gelöschter Code wäre kein Datenschutz, sondern ein Vermögensschaden bei einem Dritten. Ein Nachdruck trägt danach keinen Empfängernamen mehr; das ist die gewollte Folge
Löschung des Shops (shop/redact, ersatzweise der Aufräumlauf nach 9.3) Die Gutscheinzeilen verschwinden vollständig mit dem Shop — sie tragen eine Shop-Kennung und liegen damit im Löschpfad aus 9.2
Einlösung oder Ablauf eines Gutscheins Nichts. Es gibt keinen Lauf, der eingelöste oder abgelaufene Gutscheine nach einer Frist entfernt

Eine Grenze der ersten Zeile, offen benannt. Shopifys customers/redact trägt die Kundennummer und die Adresse genau einer Person — der Person, die Shopify kennt. Eine beschenkte Person, die nie in dem Shop gekauft hat, erscheint dort nie. Ihre Daten sind für uns über den Suchwert ihrer Adresse auffindbar, und die Löschung dafür ist gebaut; was fehlt, ist der Auslöser. Verlangt eine beschenkte Person die Löschung, geschieht sie deshalb heute von Hand, nach einer Nachricht an datenschutz@kyth.systems (Abschnitt 10.2). Ein Weg, über den ein Händler sie in der App selbst auslösen könnte, besteht nicht.

Die letzte Zeile der Tabelle ist eine benannte Lücke und keine Zusage. Sie steht so in 12.2, weil sie eine Entscheidung braucht: Wie lange ein eingelöster Gutschein als Beleg über eine erfüllte Verpflichtung aufzubewahren ist, folgt nicht aus dem Quelltext, sondern aus handels- und steuerrechtlichen Fristen und aus der Verjährung des Anspruchs. Solange diese Frist nicht festgelegt ist, liegen die Daten, bis der Shop verschwindet.

6.3 Auf wessen Weisung wir dabei handeln

Die Verarbeitung der Bestell-, Kunden- und Empfängerdaten geschieht ausschließlich auf Weisung des Shops. Die Rechtsgrundlage gegenüber der betroffenen Person schafft der Shop, nicht wir — in der Regel Art. 6 Abs. 1 lit. b DSGVO für die Erfüllung des Kaufvertrags. Wir prüfen diese Rechtsgrundlage nicht und können sie nicht prüfen.

Beschenkte erhalten ihre Daten typischerweise nicht selbst gegeben, sondern von der schenkenden Person. Die Informationspflicht gegenüber Beschenkten nach Art. 14 DSGVO trifft daher den Shop.

6.4 Die drei Datenschutz-Webhooks von Shopify

Shopify verpflichtet jede App, drei Webhooks zu bedienen. Kartuu tut das:

Webhook Was Kartuu damit macht
customers/data_request Shopify meldet ein Auskunftsersuchen einer einzelnen Person. Kartuu liest aus dem Webhook Kundennummer und E-Mail-Adresse und sucht damit in der Gutscheintabelle: über die Kundennummer den Käufer, über den Suchwert der Adresse die beschenkte Person. Zusammengestellt werden Empfängername, Adresse, Absendername und Grußtext — entschlüsselt, weil eine Auskunft in Base64 Art. 15 nicht erfüllt. Nicht enthalten sind Gutscheincode und Abruf-Token: Beides sind Schlüssel zur Ware, und eine Auskunft, die Zahlungsmittel aushändigt, wäre ein Weg um jede Anmeldung herum. Zugestellt wird die Auskunft nicht: Es gibt keine Seite in der App, auf der der Shop sie abrufen könnte, und keine Nachricht an ihn. Gespeichert wird nur, dass die Anfrage kam und wie viele Datensätze es gibt; den Inhalt gibt Kartuu auf Anforderung des Shops von Hand heraus (10.2). Bis zum 27.07.2026 stand hier, die Angaben würden „zurückgegeben" — das traf nicht zu
customers/redact Löschungsersuchen für eine einzelne Person. Kartuu anonymisiert die gefundenen Zeilen, statt sie zu löschen — die Begründung steht in 6.2
shop/redact Shopify meldet 48 Stunden nach der Deinstallation, dass alle Daten des Shops zu löschen sind. Kartuu löscht daraufhin sämtliche Daten dieses Shops, siehe 9.2.

Bis zu dieser Fassung stand hier, diese Liste sei leer und die Abfrage treffe nachweislich null Zeilen. Das galt, solange es keine Kundendaten gab. Seit dem Bestellablauf trifft sie Zeilen, und wer sich auf den alten Satz gestützt hat, hat sich auf einen Stand gestützt, den es nicht mehr gibt.

Shopify sendet in den ersten beiden Webhooks weitere Kundendaten mit, unter anderem Telefonnummer und Anschrift. Ausgewertet werden nur Kundennummer und E-Mail-Adresse. Der Inhalt der Webhook-Nachricht wird zur Signaturprüfung vollständig eingelesen und danach verworfen; nichts davon wird gespeichert.

Für diese Verarbeitung gilt:

Unsere Rolle Auftragsverarbeiter — wir handeln auf Weisung des Shops
Rechtsgrundlage des Shops in der Regel Art. 6 Abs. 1 lit. c DSGVO: Der Shop erfüllt damit seine eigenen Pflichten nach Art. 15 und Art. 17 DSGVO
Speicherdauer Der Webhook-Inhalt selbst wird nicht gespeichert. Was der Webhook in unseren Zeilen bewirkt, steht in 6.2
Was zurückbleibt ein Eintrag im Zugriffsprotokoll für geschützte Kundendaten: Shop, Zeitpunkt, Akteur, Zweck, Feldkategorie, Anzahl der betroffenen Datensätze. Kein Name, keine Adresse, keine Kundenkennung

Jeder eingehende Webhook wird vor jeder Verarbeitung anhand seiner Signatur geprüft (HMAC-SHA256, ein Prüfwert, den nur Shopify mit dem gemeinsamen Geheimnis erzeugen kann). Ohne gültige Signatur passiert nichts.


7. Empfänger und Unterauftragsverarbeiter

Empfänger Sitz Rolle Was dorthin fließt
Shopify International Ltd. (für Händler im EWR), verbunden mit Shopify Inc., Kanada Irland bzw. Kanada Plattform, auf der Kartuu läuft — Ihr eigener Auftragsverarbeiter, nicht unserer. Sie haben Shopify beauftragt, nicht wir. Einzelheiten in 6.4 des Auftragsverarbeitungsvertrags (a) Ausgehender Serveraufruf an den Token-Endpunkt Ihres eigenen Shops mit unserer App-Kennung, unserem App-Geheimnis und dem Session- bzw. Refresh-Token. (b) Ausgehende Serveraufrufe an die Admin-API Ihres eigenen Shops mit dem Access Token — sechs verschiedene: die Abfrage des Abonnementstands; das Anlegen einer Geschenkkarte, wobei der Gutscheincode, der Nennwert, eine Notiz ohne Personendaten und die Kundennummer des Käufers übertragen werden; und vier rund um Ihr Gutscheinprodukt (nachsehen, ob es den Handle schon gibt, nachsehen, ob eine hinterlegte Produktkennung noch existiert, das Produkt anlegen, die beiden Bestandsfelder einer Variante nachziehen), die Produkt- und Variantenangaben tragen und keine Personendaten. Bestellungen und Kundendatenfelder fragt Kartuu über die Admin-API nicht ab. (c) Eingehende Webhooks von Shopify an uns — darunter orders/paid mit dem vollständigen Inhalt einer bezahlten Bestellung. (d) Laden der App-Bridge-Bibliothek aus dem Browser, siehe 5.4.
IONOS SE Elgendorfer Straße 57, 56410 Montabaur, Deutschland; Verarbeitungsort Rechenzentrum Berlin Hosting — ein virtueller Server mit Anwendungscontainern und beiden Datenbanken Alle in Abschnitt 5 genannten Daten. Kein Drittlandbezug.
IONOS Object Storage (IONOS-Gruppe) Region eu-central-3, Rechenzentrum Berlin, Deutschland; Endpunkt s3.eu-central-3.ionoscloud.com Zwei getrennte Zwecke in zwei getrennten Eimern: (a) Ablage der täglichen Datenbanksicherungen im Eimer kaspar-kyth-db-backup; (b) laufende Ablage der von Ihnen hochgeladenen Bildmotive in einem eigenen Eimer je Umgebung — ausdrücklich nicht im Sicherungseimer Zu (a): die vollständige Datenbanksicherung, also alle in Abschnitt 5 genannten Daten in dem Zustand, in dem sie in der Datenbank stehen — die verschlüsselten Felder verschlüsselt; Einzelheiten in 9.6. Zu (b): die Bytes Ihrer Bilder, unverändert und einschließlich ihrer Aufnahmedaten, nicht öffentlich lesbar. Kein Drittlandbezug.
GitHub, Inc. San Francisco, USA (Microsoft-Konzern) privates Quellcode-Repository Keine Händler- oder Kundendaten. Nur Quelltext. Zugangsdaten liegen ausschließlich in der Betriebsumgebung und sind vom Repository ausgeschlossen.

Cloudflare — für die App nur DNS, kein Auftragsverarbeiter

Die Zone kyth.systems wird bei Cloudflare geführt. Für Kartuu ist Cloudflare damit ausschließlich autoritativer DNS-Dienst: Cloudflare beantwortet die Frage, welche IP-Adresse zu kartuu.kyth.systems gehört, und ist an der Verbindung selbst nicht beteiligt.

Nachgemessen am 26.07.2026: kartuu.kyth.systems und kartuu-staging.kyth.systems lösen unmittelbar auf die IP-Adresse unseres Servers in Berlin auf (85.215.155.92). Der Datenverkehr zwischen Ihrem Browser und Kartuu läuft also nicht über Cloudflare. Cloudflare sieht weder Ihre Verbindungsdaten noch Inhalte und ist deshalb für die App kein Auftragsverarbeiter — weder von Händler- noch von Kundendaten.

Anders liegt es bei unserer Unternehmenswebsite kyth.systems und www.kyth.systems: Diese Namen lösen auf Cloudflare-Adressen auf, laufen also im Proxy-Modus. Dort verarbeitet Cloudflare Verbindungsdaten. Das betrifft nicht Kartuu und ist Gegenstand der Datenschutzerklärung der Website, nicht dieser Erklärung.

Diese Unterscheidung hängt an einer DNS-Einstellung und kann sich mit einem einzigen Klick ändern. Wird kartuu.kyth.systems künftig auf den Proxy-Modus umgestellt, wird Cloudflare damit Auftragsverarbeiter — dann sind dieser Abschnitt, Abschnitt 8 und § 6 des Auftragsverarbeitungsvertrages vor der Umstellung zu ändern und die Händler nach § 6.6 des Vertrages zu informieren.

Ausdrücklich nicht beteiligt

Gesucht und nicht gefunden: kein Mailversanddienst von KYTH, kein externer Schrift- oder Symboldienst, kein Analyse- oder Tag-Dienst, kein externer Dienst zur Fehlererfassung.

Der Mailversand verdient dabei einen eigenen Satz, weil er leicht misszuverstehen ist: Kartuu verschickt Gutscheine über Ihren Mailserver, den Sie selbst hinterlegen. Ihr Mailanbieter ist damit Ihr Auftragsverarbeiter und nicht unserer — wir wählen ihn nicht aus, wir beauftragen ihn nicht, und wir haben keinen Vertrag mit ihm. Wir liefern die Nachricht lediglich über den Zugang ein, den Sie uns dafür geben. Die einzige HTTP-Bibliothek im Anwendungscode wird an genau zwei Stellen verwendet, und beide sprechen dieselbe Gegenstelle an: den Token-Endpunkt und die Admin-API Ihres eigenen Shops. Objektspeicher wird ausschließlich bei IONOS benutzt, in den beiden oben genannten Eimern: Mit dem Sicherungseimer spricht die Anwendung nicht, das tut ein eigenes Sicherungsskript auf dem Server; mit dem Eimer für Ihre Bildmotive spricht sie sehr wohl — sie legt dort ab, liest wieder und löscht beim Löschen Ihres Shops. Bis zu dieser Fassung stand hier, die Anwendung spreche mit keinem Objektspeicher; seit der Bildablage trifft das nicht mehr zu.

Die Empfänger mit vollständiger Anschrift. Ermittelt am 01.08.2026 aus den öffentlichen Angaben der jeweiligen Anbieter; die Fundstellen stehen in Abschnitt 12.3.

Empfänger Anschrift Register
Shopify International Limited The Sidings, 4th Floor, Grand Canal Quay, Dublin D02 E7K8, Irland
Shopify Inc. (kanadische Muttergesellschaft) 151 O'Connor Street, Ground floor, Ottawa, Ontario K2P 2L8, Kanada
IONOS SE (Server, Datenbank, Sicherungen) Elgendorfer Straße 57, 56410 Montabaur, Deutschland AG Montabaur, HRB 24498
IONOS Cloud GmbH (Objektspeicher) Elgendorfer Straße 57, 56410 Montabaur, Deutschland AG Montabaur, HRB 31110

Der Objektspeicher wird unter s3.eu-central-3.ionoscloud.com erbracht; die Anbieterkennzeichnung dieses Dienstes nennt die IONOS Cloud GmbH. Welche Gesellschaft der IONOS-Gruppe im Einzelfall Vertragspartnerin ist, ergibt sich aus dem jeweiligen Vertrag; beide sind unter derselben Anschrift erreichbar.

Diese Tabelle und § 6.3 des Auftragsverarbeitungsvertrages beschreiben denselben Empfängerkreis. Ändert sich einer, ist der andere mitzuändern — sonst laufen sie auseinander, und die ältere Fassung wird stillschweigend zur falschen Auskunft.


8. Übermittlung in Drittländer

Ein Drittlandbezug entsteht nicht durch unser Hosting — Server, Datenbank und Sicherungen liegen in Berlin —, sondern über Shopify.

Shopify. Vertragspartnerin für Händler im EWR ist Shopify International Limited mit Sitz in Irland. Der Konzern hat seinen Ursprung in Kanada und unterhält Gesellschaften unter anderem in den USA. Wir können nicht bestimmen und nicht überprüfen, in welchem Land Shopify die an den Token-Endpunkt und an die Admin-API gesendeten Daten und die von Shopify an uns gesendeten Webhooks verarbeitet.

Kanada gilt als sicheres Drittland, allerdings nur für private Unternehmen, die dem kanadischen Datenschutzgesetz PIPEDA unterliegen. Die Europäische Kommission hat das mit ihrer Entscheidung 2002/2/EG festgestellt (Angemessenheitsbeschluss nach Art. 45 DSGVO). Für Übermittlungen dorthin ist damit keine weitere Garantie nötig.

Die Grundlage. Shopify bezieht in sein Data Processing Addendum (Fassung vom 07.07.2026) die EU-Standardvertragsklauseln ein — die Klauseln aus dem Durchführungsbeschluss (EU) 2021/914 der Europäischen Kommission vom 4. Juni 2021. Auf sie stützen sich Übermittlungen an Shopify-Stellen außerhalb des Europäischen Wirtschaftsraums, also auch an Stellen in den USA.

Für Kanada besteht daneben ein Angemessenheitsbeschluss der Europäischen Kommission (Entscheidung 2002/2/EG) für dem PIPEDA unterliegende Organisationen.

Eine Kopie der Standardvertragsklauseln erhalten Sie auf Anfrage an datenschutz@kyth.systems; das Addendum selbst ist unter https://www.shopify.com/legal/dpa öffentlich abrufbar.

Was hier bewusst NICHT steht. Eine Zertifizierung der beteiligten Shopify-Gesellschaften unter dem EU-US Data Privacy Framework wird nicht behauptet: Das Addendum nennt keine, und ohne Beleg gehört sie nicht in eine Datenschutzerklärung. Die Standardvertragsklauseln tragen die Übermittlung auch ohne sie.

GitHub. Sitz in den USA. Dorthin fließen ausschließlich Quelltexte, keine Händler- und keine Kundendaten.

Cloudflare. Kein Drittlandbezug für Kartuu. Cloudflare ist für die App reiner autoritativer DNS-Dienst; der Datenverkehr läuft nicht über Cloudflare, und personenbezogene Daten aus Kartuu werden dorthin nicht übermittelt. Siehe Abschnitt 7.

IONOS Object Storage. Kein Drittlandbezug. Sowohl die Sicherungen als auch die hochgeladenen Bildmotive liegen in der Region eu-central-3, Rechenzentrum Berlin.


9. Speicherdauer und Löschung

9.1 Bei Deinstallation der App

Erhält Kartuu den Webhook app/uninstalled, werden sofort beide Zugangstoken gelöscht (auf NULL gesetzt) und der Deinstallationszeitpunkt vermerkt. Die Zeile mit Shop-Domain, Suchhash, Zeitstempeln, Berechtigungen, Abonnementstand, Ihrer Kontaktadresse und dem Zustimmungsnachweis bleibt zunächst bestehen — damit verspätete Webhooks noch korrekt zugeordnet werden können und damit Sie bei einer Neuinstallation innerhalb der Frist nach 9.3 nicht erneut zustimmen müssen.

9.2 Endgültige Löschung

Shopify sendet in der Regel 48 Stunden nach der Deinstallation den Webhook shop/redact. Daraufhin löscht Kartuu zuerst Ihre hochgeladenen Bildmotive im Objektspeicher und danach in einer einzigen Transaktion alle Zeilen sämtlicher Tabellen, die eine Shop-Kennung tragen, und anschließend den Shop-Datensatz selbst. Entweder verschwindet der Shop vollständig oder gar nicht.

Warum die Bilder zuerst. Umgekehrt ließe sich der Fehler nicht heilen: Wären die Zeilen weg und scheiterte danach der Objektspeicher, meldeten wir einen Fehlschlag, Shopify wiederholte den Webhook — und die Wiederholung fände den Shop nicht mehr, meldete „nichts zu löschen" und ließe die Bilder für immer liegen. Gelöscht wird dabei alles unter dem Namensraum Ihres Shops und nicht Bild für Bild nach Liste; so verschwindet auch ein Objekt, dessen Zeile wegen eines Abbruchs während des Hochladens nie geschrieben wurde.

Welche Tabellen dabei geleert werden, wird zur Laufzeit aus dem Datenbankschema ermittelt und nicht aus einer von Hand gepflegten Liste. Erfasst werden alle Tabellen im Hauptschema, die eine Spalte mit dem Namen shop_id tragen; eine neu hinzugefügte Tabelle dieser Art wird dadurch automatisch mitgelöscht. Die Tabellen des Bestellablaufs sind auf genau diesem Weg mitgekommen — Gutscheine, die Zuordnung ihrer Bildmotive und die Gutscheinprodukte tragen alle eine Shop-Kennung, es musste nichts nachgetragen werden. Genau dafür ist der Mechanismus da.

Was der Mechanismus nicht erfasst — der Quelltext benennt diese Grenzen selbst: Tabellen in einem anderen Schema, Tabellen mit abweichend benannter Shop-Spalte, Views sowie Tabellen, die nur mittelbar über einen Fremdschlüssel an einer Shop-Tabelle hängen. Für diese muss die Löschung gesondert sichergestellt werden. Der heutige Datenbestand fällt vollständig in den erfassten Bereich; mit jeder neuen Tabelle wird die Einschränkung wichtiger.

Zwei benannte Grenzen bei den Bildmotiven. Sie stehen hier, weil sie eine Zusage begrenzen, und nicht in einer Fußnote:

  1. Der Aufräumlauf löscht die Bilder mit — solange er läuft. Bleibt shop/redact aus, entfernt der Lauf nach 9.3 nach 30 Tagen zuerst die Bilder im Objektspeicher und danach die Datenbankzeilen, in derselben Reihenfolge wie der Webhook. Bis zu dieser Fassung stand hier, er nehme die Bilder nicht mit; das traf zu und ist behoben. Was bleibt: Dieser Lauf hat noch keinen Auslöser (9.3). Solange das so ist, hängt die Löschung der Bilder an der tatsächlichen Zustellung des Webhooks — für den Regelfall ist das erfüllt, für den Ausfallfall nicht.
  2. Ein einzelnes Bild können Sie in der App nicht löschen, und es gibt keinen Lauf, der ungenutzte Motive sucht und entfernt. Ein hochgeladenes Bild bleibt liegen, solange Ihr Shop besteht. Wollen Sie ein bestimmtes Motiv entfernt haben — etwa weil eine abgebildete Person widersprochen hat —, genügt eine Nachricht an datenschutz@kyth.systems; wir entfernen es von Hand und bestätigen das.

9.3 Wenn der Löschwebhook ausbleibt: 30 Tage

Bleibt shop/redact aus — die Zustellung geht verloren, unser Endpunkt ist vorübergehend nicht erreichbar, Shopify meldet ihn nie —, entfernt ein Aufräumlauf die Shop-Zeile 30 Tage nach der Deinstallation vollständig, über denselben Löschpfad wie shop/redact. Es gibt genau eine Löschlogik, nicht zwei.

Warum nicht kürzer: Wer die App versehentlich deinstalliert und in derselben Woche neu installiert, soll seine Zustimmung und seine Kontaktadresse nicht verloren haben. Warum überhaupt: Eine Shop-Zeile, die ohne Zweck stehen bleibt, verstößt gegen Art. 5 Abs. 1 lit. e DSGVO — und sie fällt niemandem auf, weil dabei nichts fehlschlägt.

Der Fall ohne Deinstallationszeitpunkt: 90 Tage. Die Frist oben rechnet ab dem Zeitpunkt der Deinstallation. Es gibt eine Lage, in der es diesen Zeitpunkt nie gibt: Sie stimmen zu, wir legen den Datensatz zu Ihrem Shop an, und der unmittelbar folgende Abruf des Zugangstokens bei Shopify scheitert. Eine Deinstallationsmeldung kommt für diesen Datensatz nie, weil die App gar nicht mehr installiert ist. Derselbe Aufräumlauf löscht ihn deshalb nach 90 Tagen — vorausgesetzt, es ist weder ein Zugangs- noch ein Erneuerungstoken hinterlegt, denn dann ist belegt, dass kein Zugriff auf Ihren Shop mehr möglich ist. Die Frist ist länger als die 30 Tage oben, weil sie von einem schwächeren Anhaltspunkt ausgeht als von einer gemeldeten Deinstallation.

Was auch das nicht erfasst: einen Datensatz, dessen Token noch hinterlegt sind, obwohl der Shop längst deinstalliert ist. Er ist von dem eines arbeitenden Shops nicht zu unterscheiden, und eine Regel, die ihn erfasste, träfe auch arbeitende Shops. Möglich wird das, wenn die Deinstallationsmeldung den Shop wegen eines nach einem Schlüsselwechsel veralteten Suchwertes nicht auflösen konnte.

Der Auslöser läuft. Seit dem 01.08.2026 ruft die Anwendung diesen Aufräumlauf selbst auf — einmal täglich, gestartet mit dem Anwendungsprozess (kaspar/aufraeumlauf.py). Bis dahin war die Löschung zwar gebaut und geprüft, aber von nichts aufgerufen: Die Frist stand in dieser Erklärung und war eine Absicht. Das gilt ebenso für die Frist in 9.4, die derselbe Lauf abarbeitet.

9.4 Webhook-Kennungen: 30 Tage

Die Tabelle mit den Webhook-Kennungen (Duplikatschutz) trägt keine Shop-Kennung und wird deshalb vom Löschpfad des Shops nicht erfasst. Inhaltlich sind das ausschließlich von Shopify vergebene technische Kennungen ohne Personenbezug.

Ein eigener Aufräumlauf entfernt einen Eintrag 30 Tage nach Abschluss der Verarbeitung des jeweiligen Webhooks. Shopify wiederholt einen Webhook über höchstens 48 Stunden; die 30 Tage sind Puffer für die Frage „kam dieser Webhook je an?“.

Einträge, deren Verarbeitung nie abgeschlossen wurde (etwa weil ein Prozess abgebrochen ist), bleiben stehen. Sie zu löschen hieße, eine Wiederholung desselben Webhooks ein zweites Mal durchlaufen zu lassen. Personenbezug haben sie nicht.

9.5 Löschung einzelner Personen

Über customers/redact. Dieser Vorgang trifft seit dem Bestellablauf tatsächlich Zeilen: Er anonymisiert in der Gutscheintabelle Empfängername, E-Mail-Adresse samt ihrem Suchwert, Absendername und Grußtext, und die Kundennummer dann, wenn sie zu der gesuchten Person gehört. Der Gutschein selbst bleibt — die Begründung und die Grenzen stehen in 6.2. Protokolliert wird zusätzlich, dass die Anfrage bearbeitet wurde, und wie viele Datensätze betroffen waren.

Bis zu dieser Fassung stand hier, der Vorgang treffe keine einzige Zeile, weil keine Kundendaten gespeichert seien.

9.5a Gutscheindaten nach Zweckfortfall

Für die Gutscheinzeilen gibt es keine eigene Frist. Sie werden aufbewahrt, solange der Shop besteht, und verschwinden mit ihm über 9.2 oder 9.3. Ein Gutschein, der eingelöst oder abgelaufen ist, wird von keinem Lauf entfernt; ein Gutschein, dessen Bestellung storniert wurde, ebenfalls nicht.

Das ist eine benannte Lücke und keine Zusage. Welche Frist nach Zweckfortfall gilt, folgt nicht aus dem Programm: Ein ausgestellter Gutschein ist der Beleg über eine eingegangene Verpflichtung, und wie lange dieser Beleg zu führen ist, richtet sich nach handels- und steuerrechtlichen Aufbewahrungspflichten und nach der Verjährung des Anspruchs. Der offene Punkt steht in 12.2.

9.6 Sicherungen — 30 Tage lokal, 90 Tage im Objektspeicher

Was gesichert wird. Von der Datenbank wird täglich nachts (03:20 Uhr UTC) eine vollständige Sicherung erstellt, verschlüsselt, auf dem Server abgelegt und an den Objektspeicher der IONOS in Berlin übertragen (Eimer kaspar-kyth-db-backup, Region eu-central-3). Seit dem 26.07.2026 ist eine tägliche Sicherung eingerichtet und mit einem tatsächlichen Lauf belegt; seit dem 01.08.2026 ist sie verschlüsselt.

Dass sie sich einspielen lässt, ist geprüft. Am 01.08.2026 haben wir eine Sicherung aus dem Objektspeicher geholt, entschlüsselt und in eine leere Wegwerfdatenbank eingespielt; anschließend haben wir Tabellenzahl, Datenbestand und Versionsstand verglichen. Die Wegwerfdatenbank wurde danach gelöscht. Wir nennen das, weil eine Sicherung, die noch nie eingespielt wurde, eine Vermutung ist und keine Maßnahme.

Ob sie überhaupt läuft, wird überwacht. Ein täglicher Prüflauf schlägt Alarm, wenn seit mehr als 26 Stunden keine erfolgreiche Sicherung mehr vermerkt wurde — er meldet damit nicht nur fehlgeschlagene Läufe, sondern auch ausgebliebene.

Was nicht gesichert wird: Ihre hochgeladenen Bildmotive. Gesichert wird die Datenbank, und dort stehen von einem Bild nur die Angaben darüber (5.1). Der Bildinhalt liegt im Objektspeicher und geht in keine Sicherung ein. Geht dieser Eimer verloren, sind die Motive weg; Ihre übrigen Daten wären davon nicht berührt, und die mitgelieferten Motive der Kartenvorlagen ebenfalls nicht — die kommen aus dem Programm selbst. Das ist eine Verfügbarkeitslücke, und wir nennen sie hier, statt sie unter der allgemeinen Sicherungszusage verschwinden zu lassen.

Wie lange sie liegt.

Ablageort Aufbewahrung
auf dem Server 30 Tage
im Objektspeicher bei IONOS 90 Tage

Zusätzlich löscht eine Lebenszyklusregel im Eimer selbst jede Sicherung auf Speicherebene (Regel sicherungen-nach-90-tagen-loeschen, gesamter Eimer, Ablauf 90 Tage nach Erstellung). Der Unterschied ist kein Detail: Die Aufbewahrung des Betriebswerkzeugs ist ein Aufräumjob, und Aufräumjobs fallen still aus. Die Lebenszyklusregel wirkt unabhängig davon.

Verschlüsselung — was wir zusagen und was nicht.

Was das für eine Löschung bedeutet — bitte ausdrücklich zur Kenntnis nehmen. Löschen wir Ihre Daten in der Datenbank — auf Ihr Verlangen, über shop/redact oder über den Aufräumlauf nach 9.3 —, dann sind sie in bereits erstellten Sicherungen weiterhin enthalten. Sie verschwinden von dort erst mit dem Ablauf der oben genannten Fristen, also spätestens 30 Tage später auf dem Server und 90 Tage später im Objektspeicher. Ein gezieltes Herausschneiden einzelner Datensätze aus vorhandenen Sicherungen findet nicht statt; es würde die Sicherung als Wiederherstellungspunkt entwerten. Solange sie dort liegen, werden sie ausschließlich zur Wiederherstellung im Störungsfall verwendet und zu keinem anderen Zweck.

9.7 Anwendungs- und Containerprotokolle: 14 Tage

Anwendungs- und Containerprotokolle werden 14 Tage aufbewahrt und danach verworfen. Ihr Inhalt ist in 5.1 beschrieben: Shop-Domain, interne Shop-Kennung und die Art einer aufgetretenen Ausnahme — keine Zugangsdaten, keine Kontaktadresse, keine Kundendaten.

Diese Frist wird im Betriebswerkzeug eingestellt, nicht im Programm. Sie steht hier, weil sie gilt, nicht weil sie im Quelltext nachlesbar wäre.

9.8 Der vorgelagerte Proxy

Es gibt keine serverseitigen Zugriffsprotokolle. Dem Anwendungscontainer ist ein Reverse-Proxy vorgelagert (Traefik, betrieben über Coolify auf demselben Server in Berlin). Seine Zugriffsprotokollierung ist ausgeschaltet — sie ist bei Traefik standardmäßig aus und in dieser Installation nirgends eingeschaltet. Der Proxy speichert damit keine IP-Adressen, keine Browserkennungen und keine Abfrageparameter.

Was er schreibt, ist sein eigenes Betriebsprotokoll: Startmeldungen und Fehler beim Ausstellen von TLS-Zertifikaten. Darin stehen Domainnamen, keine Angaben zu Besucherinnen und Besuchern. Es liegt ausschließlich auf diesem Server, wird nicht ausgewertet und nicht weitergegeben, und es besteht kein Zugriff Dritter darauf. Die Container-Umgebung begrenzt es auf drei Dateien zu je zehn Megabyte und überschreibt die älteste, sobald es voll ist; eine Frist in Tagen gibt es dafür nicht, weil es keine personenbezogenen Daten enthält.

Rechtsgrundlage für das Betriebsprotokoll ist Art. 6 Abs. 1 lit. f DSGVO — das berechtigte Interesse am sicheren und störungsfreien Betrieb.

Bis zum 03.08.2026 stand hier etwas anderes, und es war zu unseren Lasten falsch: „Er protokolliert Verbindungen technisch mit", dazu die Ankündigung, die Aufbewahrungsdauer auf 14 Tage zu begrenzen. Nachgemessen an der laufenden Installation trifft beides nicht zu — die Protokollierung war nie eingeschaltet. Eine Datenschutzerklärung, die mehr Datenerhebung behauptet als stattfindet, ist genauso falsch wie eine, die zu wenig nennt; sie beschreibt nur einen Fehler in die andere Richtung.

Wer die Zugriffsprotokollierung später einschaltet, muss diesen Abschnitt vorher ändern: Dann werden IP-Adressen verarbeitet, und dann braucht es auch die Frist.


10. Ihre Rechte

10.1 Wenn Sie Händlerin oder Händler sind

Ihnen stehen uns gegenüber die folgenden Rechte zu:

Schreiben Sie dafür an datenschutz@kyth.systems. Wir antworten unentgeltlich und innerhalb eines Monats (Art. 12 Abs. 3 DSGVO).

Der schnellste Weg zur vollständigen Löschung ist die Deinstallation der App: Shopify löst dann automatisch den Löschvorgang aus, siehe 9.2.

10.2 Wenn Sie in einem Shop eingekauft haben — oder beschenkt worden sind

Wenden Sie sich bitte an den Shop, bei dem bestellt wurde. Der Shop ist für Ihre Daten verantwortlich; wir handeln nur in seinem Auftrag und dürfen ohne seine Weisung keine Auskunft erteilen und nichts löschen.

So unterstützen wir den Shop dabei:

Wenn Sie beschenkt worden sind, gilt eine Besonderheit. Sie haben in dem Shop nie etwas bestellt, Shopify kennt Sie deshalb nicht, und die beiden Webhooks oben erreichen Sie nur zufällig — nämlich dann, wenn Ihre E-Mail-Adresse dieselbe ist wie die der Person, über die Shopify die Anfrage stellt. Ihre Daten sind bei uns über den Suchwert Ihrer Adresse auffindbar, und die Löschung dafür ist gebaut; was fehlt, ist ein Weg, über den der Shop sie auslösen kann. Schreiben Sie deshalb an datenschutz@kyth.systems: Wir leiten Ihr Anliegen an den Shop weiter und führen die Löschung auf seine Weisung von Hand aus.

Erreichen Sie den Shop nicht, können Sie sich auch direkt an datenschutz@kyth.systems wenden. Wir leiten Ihr Anliegen an den Shop weiter und informieren Sie darüber. Der Kanal dafür steht: Jeder Shop hinterlegt beim Verbinden der App eine Kontaktadresse (siehe 5.3), und diese Adresse zu benennen und aktuell zu halten ist eine Pflicht des Shops nach § 2a Nr. 4 des Auftragsverarbeitungsvertrages.

Antworten können wir Ihnen inhaltlich nicht: Der Shop entscheidet über Ihre Daten, nicht wir.

10.3 Beschwerde bei der Aufsichtsbehörde

Sie können sich unabhängig davon jederzeit bei einer Datenschutz-Aufsichtsbehörde beschweren (Art. 77 DSGVO), insbesondere in dem Mitgliedstaat Ihres Aufenthaltsorts, Ihres Arbeitsplatzes oder des mutmaßlichen Verstoßes.

Für uns zuständig ist:

Bayerisches Landesamt für Datenschutzaufsicht (BayLDA) Promenade 27, 91522 Ansbach poststelle@lda.bayern.de

10.4 Keine automatisierte Entscheidungsfindung

Eine automatisierte Entscheidungsfindung einschließlich Profiling im Sinne von Art. 22 Abs. 1 und Abs. 4 DSGVO findet nicht statt. Kartuu trifft keine Entscheidungen, die Ihnen gegenüber rechtliche Wirkung entfalten oder Sie in ähnlicher Weise erheblich beeinträchtigen.


11. Technische und organisatorische Maßnahmen

Die folgenden Maßnahmen sind im Quelltext bzw. in der Betriebsdokumentation belegt. Es besteht keine Zertifizierung nach Art. 42 DSGVO und keine ISO-Zertifizierung; wir behaupten auch keine.

Kurz und ohne Fachsprache: Die Zugangstoken liegen nur verschlüsselt in der Datenbank. Die Anwendung arbeitet mit einem Datenbankkonto, das absichtlich wenig darf. Die Daten verschiedener Shops sind voneinander getrennt. Eingehende Nachrichten werden auf Echtheit geprüft, bevor irgendetwas passiert. Und Zugangsdaten landen nicht in Protokollen. Die Absätze darunter sagen dasselbe mit den Fachbegriffen, damit eine Prüferin die Angaben nachvollziehen kann.

11.1 Vertraulichkeit

11.2 Integrität

11.3 Verfügbarkeit

11.4 Belastbarkeit der Löschung

11.5 Umgang mit Vorfällen

Es besteht ein Verfahren für Datenschutzvorfälle mit Eskalationsstufen, der 72-Stunden-Meldefrist nach Art. 33 DSGVO, benannter Aufsichtsbehörde und einem ausdrücklichen Hinweis auf die Informationspflicht nach Art. 14 DSGVO gegenüber Beschenkten.

11.6 Verfügbarkeit — und was daran offen ist

Die Sicherungen sind verschlüsselt und liegen getrennt vom laufenden System (9.6). Der Schlüssel, mit dem Zugriffstoken und Kontaktadressen verschlüsselt sind, wird außerhalb der Datenbank verwahrt.

Am 01.08.2026 geschlossen: Der Wiederherstellungstest ist durchgeführt und die Überwachung der Sicherungen eingerichtet (Einzelheiten in 9.6). Ebenfalls angelegt sind die Zweitkopien der Schlüssel — sowohl des Schlüssels, mit dem Token und Kontaktadressen verschlüsselt sind, als auch des Kennworts der Sicherungsdateien. Sie werden außerhalb des Servers verwahrt. Ohne sie wären Ihre Daten auch aus einer vorhandenen Sicherung nicht mehr lesbar gewesen.

Zwei Punkte sind an dieser Stelle noch nicht abgeschlossen, und sie stehen hier, weil eine Sicherheitsbeschreibung, die nur die gelungenen Maßnahmen nennt, keine ist:

Beides betrifft die Verfügbarkeit Ihrer Daten und nicht ihre Vertraulichkeit: Es gibt keinen Weg, auf dem einer dieser Punkte zu einem Zugriff Unbefugter führen könnte. Beide sind in der Betriebsdokumentation als offene Aufgaben geführt.


12. Offene Punkte in diesem Entwurf

12.1 Seit dem vorherigen Entwurf geschlossen

Damit niemand einer überholten Fassung folgt, hier zuerst, was nicht mehr offen ist:

12.2 Weiterhin offen

Im Text dieser Erklärung ist nichts mehr offen. Die Punkte unten sind entweder am 01.08.2026 entschieden worden — dann steht die Entscheidung in der Spalte „Was" — oder sie sind Aufgaben außerhalb dieses Textes, die an ihrer Sachstelle beschrieben sind und in der Betriebsdokumentation nachgehalten werden. Die Nummern 7, 12 und 13 sind als offene Stellen weiterhin im Auftragsverarbeitungsvertrag markiert und halten den Auslieferungsriegel geschlossen (siehe Abschnitt 3).

# Offener Punkt Wer Was
1 ~~Telefonnummer im Impressum~~ Geschäftsführung Am 01.08.2026 entschieden: Die Nummer wird als Geschäftsnummer geführt. Siehe Abschnitt 2
2 Umsatzsteuer-Identifikationsnummer Geschäftsführung Bleibt offen, blockiert aber nichts: Es ist keine erteilt, und § 5 DDG verlangt die Angabe nur, soweit vorhanden. Sobald eine vorliegt, gehört sie ins Impressum
3 Auslieferungsriegel in der Produktivumgebung technische Leitung Teilweise geschlossen: Diese Erklärung und das Impressum sind seit dem 01.08.2026 vollständig. Der AVV trägt weiterhin offene Stellen und hält den Riegel geschlossen. Siehe Abschnitt 3
4 ~~Auslöser der beiden Aufräumläufe~~ technische Leitung Am 01.08.2026 gebaut: kaspar/aufraeumlauf.py ruft beide Fristen täglich auf, gestartet mit dem Anwendungsprozess. Siehe 9.3
5 ~~Grundlage der Übermittlung an Shopify-Stellen in den USA~~ Stefan Grasse Am 01.08.2026 belegt: Shopify-DPA vom 07.07.2026, Standardvertragsklauseln nach 2021/914. Eine DPF-Zertifizierung wird nicht behauptet. Siehe Abschnitt 8 und 12.3
6 ~~Vollständige ladungsfähige Anschriften~~ Stefan Grasse Am 01.08.2026 ermittelt und in Abschnitt 7 eingetragen. § 6.3 des AVV ist noch nachzuziehen
7 ~~Verträge nach Art. 28 Abs. 4 DSGVO mit IONOS und Shopify~~ Stefan Grasse Am 03.08.2026 benannt. IONOS: Vereinbarung zur Auftragsverarbeitung nach Art. 28 Abs. 3 DSGVO, Version 1.2, Stand 06/2023 — leistungsunabhängig gefasst und damit auch für den Objektspeicher. Shopify: braucht keinen. Das Data Processing Addendum vom 07.07.2026 hat den Händler als Partei und nicht KYTH; Shopify ist damit eigener Auftragsverarbeiter des Händlers. Siehe § 6.3 und 6.4 des AVV
8 ~~Aufbewahrungsdauer der Proxy-Protokolle~~ technische Leitung Am 03.08.2026 geklärt, und anders als erwartet: Traefiks Zugriffsprotokollierung ist ausgeschaltet. Es gibt keine IP-Adressen und damit nichts zu befristen. Siehe 9.8
9 ~~Zweitkopien beider Schlüssel~~ Geschäftsführung Am 01.08.2026 angelegt: Zweitkopien des Kennworts der Sicherungsdateien und des Verschlüsselungsschlüssels beider Umgebungen, außerhalb des Servers. Siehe 11.6
9a Herausgabeweg der Schlüssel im Vertretungsfall Geschäftsführung festlegen, wer die Zweitkopien herausgeben darf, wenn die technische Leitung ausfällt. Die getrennte Verwahrung der beiden Geheimnisse bleibt Bedingung. Siehe 11.6
10 ~~Wiederherstellungstest, Alarm bei fehlgeschlagener Sicherung~~ technische Leitung Am 01.08.2026 erledigt: Wiederherstellung aus dem Objektspeicher durchgeführt und festgehalten; täglicher Prüflauf meldet ausgebliebene Sicherungen. Siehe 9.6
10a Verfügbarkeitsüberwachung von außerhalb des Servers, Fehlererfassung technische Leitung Überwachung entscheiden. Der Prüflauf aus Nummer 10 läuft auf demselben Server und deckt dessen Totalausfall nicht ab. Siehe 11.6
11 Abrechnungsdaten aus einem eigenen Bezahlweg Geschäftsführung Nichts zu tun, solange die Abrechnung über Shopify läuft. Vor einer Umstellung nachzutragen. Siehe 5.3
12 ~~Weitere Zugriffsberechtigte~~ Geschäftsführung Am 03.08.2026 festgestellt: Zugriff auf die Produktionsumgebung haben ausschließlich die beiden Geschäftsführer Stefan Grasse und Stephan Wittmann. Keine Beschäftigten, keine freie Mitarbeit, keine Dienstleister. Siehe § 4 des AVV — dort auch, warum es keine gesonderten Verpflichtungserklärungen gibt
13 Aufbewahrungsfrist der Gutscheindaten nach Zweckfortfall — eingelöste, abgelaufene und stornierte Gutscheine werden von keinem Lauf entfernt; sie liegen, bis der Shop verschwindet Geschäftsführung, gemeinsam mit dem Händler als Verantwortlichem die Frist festlegen (handels- und steuerrechtliche Aufbewahrung, Verjährung des Anspruchs) und danach den Aufräumlauf dafür bauen. Siehe 6.2 und 9.5a, sowie § 9.3 Nr. 7 des AVV
14 Auslöser für die Löschung einer beschenkten Person fehlt — Shopifys customers/redact erreicht sie nur zufällig, weil sie keine Kundennummer hat. Die Löschung selbst ist gebaut technische Leitung einen Weg schaffen, über den der Händler sie auslöst. Bis dahin erfolgt sie von Hand. Siehe 6.2 und 10.2

12.3 Bekannte Grenzen, die keine Entscheidung erfordern

Diese Punkte sind keine offenen Fragen, sondern benannte Eigenschaften des heutigen Stands. Sie stehen hier, damit sie nicht in Vergessenheit geraten:

12.4 Belege der Angaben über Dritte

Die Angaben über Shopify und IONOS in den Abschnitten 7 und 8 sind nicht geschätzt, sondern am 01.08.2026 aus den öffentlichen Angaben der Anbieter entnommen. Wer sie prüfen will, findet sie hier — und wer sie ändert, sollte sie hier erneut prüfen:

Angabe Quelle Stand
Standardvertragsklauseln nach 2021/914, keine Aussage zum Data Privacy Framework https://www.shopify.com/legal/dpa (Data Processing Addendum, dort selbst datiert auf den 07.07.2026) 01.08.2026
Anschriften Shopify International Limited und Shopify Inc. https://www.shopify.com/legal/terms, Abschnitt 13 01.08.2026
Anschrift und Register IONOS SE https://www.ionos.de/impressum 01.08.2026
Anschrift und Register IONOS Cloud GmbH https://cloud.ionos.de/impressum 01.08.2026

Was diese Belege nicht leisten. Sie zeigen, was die Anbieter öffentlich erklären. Sie ersetzen nicht die Vertragsunterlagen, die für Kartuu tatsächlich gelten — welche Gesellschaft im Einzelfall Vertragspartnerin ist und welche Fassung eines Addendums vereinbart wurde, steht im jeweiligen Vertrag. Die Punkte 7 und 12 der Liste in 12.2 bleiben deshalb offen.


13. Änderungen dieser Erklärung

Kartuu wird weiterentwickelt. Ändert sich der Umfang der Verarbeitung, ändern wir diese Erklärung vorher und erhöhen die Fassungskennung. Die jeweils geltende Fassung steht unter https://kartuu.kyth.systems/rechtliches/datenschutz; solange sie dort nur in den Testumgebungen ausgeliefert wird (siehe Abschnitt 3), erhalten Sie sie auf Anfrage an datenschutz@kyth.systems.

Steigt die Fassungskennung, werden Sie beim nächsten Öffnen der App erneut um Zustimmung gebeten. Eine reine Tippfehlerkorrektur löst das nicht aus.

Verarbeitung zu einem anderen Zweck. Beabsichtigen wir, Ihre Daten zu einem anderen als dem ursprünglich erhobenen Zweck zu verarbeiten, informieren wir Sie vorab über diesen anderen Zweck und über alle weiteren Angaben nach Art. 13 Abs. 2 DSGVO (Art. 13 Abs. 3 DSGVO). Die Information erfolgt in Textform an die Kontaktadresse, die Sie uns nach 5.3 hinterlegt haben.


14. Stand

Fassung 1.1, 26.07.2026; abgebildeter Quelltextstand 01.08.2026. Gegenüber Fassung 1.0 desselben Tages sind der Admin-API-Client, der Abonnementstand, der Webhook app_subscriptions/update, der PDF-Renderer mit seiner Vorlagenauswahl und die Auslieferung dieser Texte unter /rechtliches/ hinzugekommen; die Angaben dazu stehen in 4.1, 5.1, 6.1 und 7.

Am 01.08.2026 sind alle offenen Stellen dieses Textes geschlossen worden — Anschriften der Empfänger (7), Grundlage der Drittlandübermittlung (8), Auslöser der Löschfristen (9.3, dafür wurde kaspar/aufraeumlauf.py gebaut), Zugriffsprotokolle (9.8) und die Verfügbarkeitspunkte (11.6). Die Belege stehen in 12.4.

Warum die Fassungskennung dabei nicht gestiegen ist. Sie zu erhöhen hat genau einen Zweck: jeden Händler erneut zu fragen, der einer älteren Fassung zugestimmt hat. Fassung 1.1 ist nie ausgeliefert worden — die Produktionsumgebung startet nicht, solange der Auftragsverarbeitungsvertrag offene Stellen trägt —, es gibt also keine einzige Zustimmung dazu. Eine Erhöhung fragte niemanden und nutzte die Regel ab, die sie durchsetzen soll. Die ausführliche Begründung steht im Kopf von kaspar/rechtstexte.py; sie kippt mit der ersten echten Zustimmung.

Zweiter Nachtrag innerhalb derselben Fassung: die Ablage hochgeladener Bildmotive — neue Datenkategorie in 5.1, Einschränkung der Aussage über Kundendaten in 6.1, der Objektspeicher als produktive Ablage in Abschnitt 7 und 8, die Löschung samt ihren zwei Grenzen in 9.2, die fehlende Sicherung in 9.6, die Prüfung beim Hochladen in 11.2 und die nicht entfernten Aufnahmedaten in 5.1 und 12.3.

Dritter Nachtrag innerhalb derselben Fassung — der Bestellablauf. Er ist der weitreichendste: Er hat die Kernaussage dieser Erklärung umgekehrt. Nachgeführt sind - die Verarbeitung von Bestell-, Kunden- und Empfängerdaten samt der drei betroffenen Personen (1, 3, 6.1), - die tatsächliche Ausübung von read_orders und die beiden neuen Berechtigungen write_gift_cards und write_products (4.3), - der Webhook orders/paid und die sechs Aufrufe an die Admin-API (4.1, 4.2, 5.1, 7), - die Löschung und Anonymisierung dieser Daten samt der fehlenden Frist nach Zweckfortfall (6.2, 9.2, 9.5, 9.5a), - die tatsächlich getroffenen Zeilen der beiden Datenschutz-Webhooks (6.4, 10.2), - die Maßnahmen des Bestellablaufs: verschlüsselte Codes und Empfängerangaben, Idempotenzschlüssel, Zustandslauf (11.1, 11.2), - und zwei neue offene Punkte in 12.2.

Was dabei nicht nachzuführen war, weil es sich damals nicht geändert hatte: Es gab zu jenem Zeitpunkt keinen Mailversand, kein gespeichertes PDF, keinen Abruf über den erzeugten Link und keine Abfrage von Bestellungen über die Admin-API. Der erste dieser vier Punkte gilt nicht mehr — die Zustellung ist gebaut und läuft seit dem 01.08.2026 über den Mailzugang des Händlers; diese Erklärung führt sie oben.

Warum die Fassungskennung dabei nicht gestiegen ist. Fassung 1.1 ist nie ausgeliefert worden: Die Produktions-App ist nicht ausgerollt, und die Route für die Rechtstexte verweigert dort den Dienst, solange offene Stellen im Text stehen. Es hat ihr also niemand zugestimmt, und es gibt keine Zeile in der Datenbank, die auf sie verweist. Eine Erhöhung auf 1.2 wäre eine Fassungshistorie ohne Leser — und sie würde die Regel entwerten, dass eine steigende Kennung jeden Händler erneut fragt.


⚠ Hinweis: nicht anwaltlich geprüft

Dieses Dokument wurde aus dem Quelltext und der Betriebsdokumentation von Kartuu erstellt und stellt keine Rechtsberatung dar.

Vor der Veröffentlichung — insbesondere vor der Einreichung im Shopify App Store — sollte es anwaltlich geprüft werden. Offene Stellen trägt es seit dem 01.08.2026 nicht mehr; der Auslöser der Aufräumläufe, der dafür zuerst gebaut werden musste, läuft seither (kaspar/aufraeumlauf.py). Was außerhalb dieses Textes noch aussteht, steht in 12.2.