Kartuu KYTH. Systems UG (haftungsbeschränkt)

Vertrag über die Auftragsverarbeitung (AVV)

nach Art. 28 DSGVO — für die Shopify-App Kartuu

Fassung 1.15
Stand 24.09.2026
Kennung des Zustimmungsnachweises 1.21-2026-09-24
Gilt für Kartuu, Shopify-App, https://kartuu.kyth.systems
Stand der beschriebenen Software 24.09.2026
---

Vertragsparteien

Verantwortlicher

Der Händler, der Kartuu in seinem Shopify-Shop installiert. Er entscheidet über Zwecke und Mittel der Verarbeitung der Daten, die in seinem Shop anfallen.

Der Händler wird gegenüber dem Auftragsverarbeiter durch zwei Angaben identifiziert, die beide beim Vertragsschluss nach § 0 festgehalten werden:

  1. seine myshopify-Domain — sie bezeichnet den Shop eindeutig und stammt aus dem von Shopify signierten Sitzungsnachweis, ist also nicht frei behauptbar;
  2. eine E-Mail-Adresse als Kontaktadresse, die der Händler im Zustimmungsschritt selbst angibt (Pflichtfeld, § 2a Nr. 4).

Damit sind Name und Kontaktdaten des Verantwortlichen im Sinne von Art. 30 Abs. 2 lit. a DSGVO führbar. Die vollständigen Firmendaten (Firmierung, Anschrift, Vertretung) erhebt KYTH nicht selbst; sie ergeben sich aus dem Shopify-Konto des Händlers und werden bei Bedarf über die genannte Kontaktadresse erfragt.

Auftragsverarbeiter

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

Sitz Berg bei Neumarkt in der Oberpfalz
Registergericht Amtsgericht Nürnberg
Registernummer HRB 46313
Vertreten durch Stefan Grasse und Stephan Wittmann, jeweils einzelvertretungsberechtigt
Kontakt Datenschutz datenschutz@kyth.systems
Kontakt allgemein hello@kyth.systems · 0157 51603446

Datenschutzbeauftragter: Ein Datenschutzbeauftragter ist nicht bestellt. Nach § 38 BDSG besteht dazu bei der derzeitigen Unternehmensgröße keine Pflicht. Zuständige Anlaufstelle für Datenschutzfragen ist datenschutz@kyth.systems; das ist kein Datenschutzbeauftragter im Sinne von Art. 37 DSGVO.

Im Folgenden „KYTH“.


§ 0 Zustandekommen des Vertrages

0.1 Zustimmung im Installationsablauf

Dieser Vertrag kommt dadurch zustande, dass der Händler ihm im Installationsablauf der App zustimmt. Der Ablauf ist folgender:

  1. Der Händler öffnet Kartuu in seinem Shopify-Adminbereich und löst das Verbinden aus.
  2. Liegt für die aktuelle Fassung keine Zustimmung vor, führt die App den Vorgang nicht aus, sondern zeigt den Zustimmungsschritt: Verweise auf diesen Vertrag, auf die Datenschutzerklärung und auf den Nutzungsvertrag, ein Feld für die Kontaktadresse (Pflichtfeld) und ein Zustimmungshäkchen, das nicht vorbelegt ist.
  3. Erst wenn der Händler beides ausfüllt, wird der Vorgang ausgeführt.

Ohne Zustimmung geschieht nichts. Vor der Zustimmung wird weder ein Datensatz zum Shop angelegt noch ein Zugangstoken bei Shopify abgeholt. Die Prüfung, ob eine Zustimmung zur aktuellen Fassung vorliegt, steht vor jedem Schreibzugriff und vor jedem Aufruf bei Shopify.

Eine Ausnahme liegt außerhalb des Einflusses von KYTH. Bei der von Shopify verwalteten Installation ist die App bereits installiert und sind die Webhooks bereits abonniert, bevor der Händler die eingebettete Seite überhaupt zum ersten Mal öffnet. Klickt er den Zustimmungsschritt weg und deinstalliert wieder, sendet Shopify gleichwohl app/uninstalled; verkauft er in der Zwischenzeit etwas, sendet Shopify auch orders/paid. Diese signierten Webhooks nimmt KYTH entgegen: Die Shop-Domain wird zum Suchhash verrechnet, in der Datenbank nachgeschlagen und — wenn kein Shop zu ihr gehört — für 14 Tage im Anwendungsprotokoll vermerkt. Ein Datensatz zum Shop entsteht dabei nicht, und auch keine Gutscheinzeile: Ohne Shop-Datensatz gibt es keinen Mandanten, in dem eine entstehen könnte, und der Inhalt der Bestellung wird nach der Signaturprüfung nicht weiter ausgewertet. Gespeichert wird lediglich die technische Webhook-Kennung im Duplikatschutz. Diese Verarbeitung findet also ohne geschlossenen Vertrag statt, und sie steht deshalb als eigener Fall in Anlage 1 Abschnitt A. Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse daran, 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, soweit die Entgegennahme der Datenschutz-Webhooks der Erfüllung der Pflichten aus Art. 12 ff. DSGVO dient.

Eine gesonderte Unterschrift ist nicht erforderlich (Art. 28 Abs. 9 DSGVO lässt das elektronische Format ausdrücklich zu).

0.2 Nachweis

KYTH hält den Vertragsschluss in der Datenbank fest — drei Angaben, entweder alle oder keine:

Angabe Inhalt
wann Zeitpunkt der Zustimmung, zeitzonenbewusst
welche Fassung die Kennung des Textes, der dem Händler angezeigt wurde, z. B. 1.12-2026-09-17
wer die vom Händler angegebene Kontaktadresse, verschlüsselt gespeichert

Die Fassungskennung setzt ausschließlich der Server; eine vom Browser mitgeschickte Angabe bleibt wirkungslos.

Der Nachweis überdauert eine Deinstallation. Installiert der Händler die App innerhalb der Frist nach § 9.3 Nr. 1 erneut, muss er nicht erneut zustimmen — seine Zustimmung zu genau dieser Fassung liegt vor. Mit der Löschung des Shops verschwindet auch der Nachweis.

Verlauf: Neben der zuletzt erteilten Zustimmung an der Shop-Zeile hält die Tabelle zustimmungen jede erteilte Zustimmung fest — ausschließlich anhängend und ohne UPDATE: Ein geschriebener Nachweis lässt sich nicht mehr ändern. Gelöscht wird er zusammen mit dem Shop (§ 9). So bleibt der Nachweis einer älteren Zustimmung erhalten, wenn eine Fassung erhöht wird. Ein Eintrag trägt Shop-Zuordnung, Fassungskennung und Zeitpunkt; eine personenbezogene Angabe steht nicht darin.

0.3 Geltende Fassung und Änderungen

Der Vertrag gilt in der Fassung, deren Kennung beim Zustimmen festgehalten wurde. Ändert KYTH den Text inhaltlich, erhöht KYTH die Fassungskennung; beim nächsten Öffnen der App wird der Händler erneut um Zustimmung gebeten. Eine reine Berichtigung von Schreibfehlern führt nicht zu einer neuen Kennung.

Unabhängig davon informiert KYTH den Händler über eine Änderung dieses Vertrages mindestens 30 Tage vor dem Wirksamwerden in Textform an die nach § 2a Nr. 4 hinterlegte Kontaktadresse. Widerspricht der Händler nicht innerhalb von 30 Tagen ab Zugang der Mitteilung in Textform, gilt die neue Fassung als angenommen; widerspricht er, kann jede Partei die Nutzung der App beenden — der Händler durch Deinstallation.

0.4 Veröffentlichung

Alle drei Dokumente liefert die App unter https://kartuu.kyth.systems/rechtliches/ aus (/rechtliches/auftragsverarbeitung, /rechtliches/datenschutz und /rechtliches/nutzungsvertrag), ohne Anmeldung und aus derselben Quelle, aus der die Fassungskennung stammt. Unabhängig davon stellt KYTH sie auf Anfrage an datenschutz@kyth.systems bereit.


§ 1 Gegenstand, Dauer, Art und Zweck der Verarbeitung

1.1 Gegenstand

KYTH stellt dem Händler die Shopify-App Kartuu zur Verfügung. Kartuu ist dafür bestimmt, aus Bestellungen des Händler-Shops personalisierte Geschenkgutscheine als PDF zu erzeugen und zuzustellen.

Umgesetzt ist:

  1. Die Gestaltung der Gutscheinkarte im Adminbereich: Der Händler gestaltet die Karte, tippt Probeangaben ein und bekommt eine Vorschau und ein PDF zurück. Die Probeangaben werden nicht gespeichert; gespeichert wird eine Gestaltung nur, wenn der Händler sie als Entwurf sichert.
  2. Die Einrichtung des Gutscheinprodukts im Shop des Händlers, auf seinen Klick hin.
  3. Die Kartenvorschau auf der Produktseite, wenn der Händler den Kartuu-Block dort platziert (Anlage 1 Abschnitt B).
  4. Der Bestellablauf: Kartuu ist auf den Webhook orders/paid abonniert. Aus einer bezahlten Bestellung mit einer Gutscheinposition entsteht je gekauftem Stück eine Zeile in der Datenbank — mit den Angaben, die der Kunde im Bestellformular gemacht hat (Empfängername, E-Mail-Adresse des Beschenkten, Absendername, Grußtext, gewünschter Versandtermin), mit der Shopify-Kundennummer des Käufers und mit einem von Kartuu erzeugten Gutscheincode. Bei einem Wertgutschein legt Kartuu damit über die Admin-API eine echte Shopify-Geschenkkarte an. Anschließend wird die Karte gerendert. Als Gutscheinposition gilt nur eine Position, deren Produkt der Händler in Kartuu als Gutscheinprodukt eingerichtet hat. Tragen andere Produkte Kartuu-Angaben, entsteht die Zeile im Zustand „Produkt prüfen“ — ohne Code, ohne Geschenkkarte und ohne Abruflink —, bis der Händler sie in der Bestellübersicht freigibt oder verwirft. Unmittelbar bevor ein Gutschein ausgestellt wird, fragt Kartuu bei Shopify den Storno- und Zahlungsstand der Bestellung ab; ist sie storniert, ganz erstattet oder die Zahlung aufgehoben, entsteht kein Gutschein.
  5. Der Kartuu-Block auf der Danke- und Bestellstatusseite, wenn der Händler ihn platziert: Er zeigt der kaufenden Person den Stand ihrer Gutscheine und, nach erfolgreicher Prüfung, die Abruflinks (Anlage 1 Abschnitt B).

Die Zustellung ist umgesetzt — über den Mailserver DES HÄNDLERS. Der Händler hinterlegt in der App unter „Administration" seinen eigenen SMTP-Zugang; Kartuu liefert die Mail über diesen Zugang ein. Sie trägt das gerenderte PDF im Anhang und einen Abruflink. Hat die kaufende Person einen Wunschtermin gewählt, hält Kartuu die Mail bis dahin zurück; der Händler kann sie in der Bestellübersicht mit „Jetzt senden“ vorziehen. Hinterlegt der Händler nichts, verschickt Kartuu für ihn nichts: Der Gutschein wird erzeugt, ist abrufbar und herunterladbar, und der Händler übergibt ihn selbst.

KYTH ist an dieser Stelle kein Verarbeiter. Die Mail an den Beschenkten geht nicht über einen Versandweg von KYTH und nicht über einen Unterauftragsverarbeiter von KYTH, sondern über den Mailanbieter, den der Händler selbst gewählt und selbst beauftragt hat. Ein eigenes oder gemeinsames Mailkonto für alle Händler hat Kartuu nicht.

Das gerenderte PDF wird nicht gespeichert; es entsteht bei jedem Versand neu. Was Kartuu heute tatsächlich verarbeitet, ist abschließend in Anlage 1 aufgeführt.

Bildmotive. Der Händler kann Bildmotive hochladen — sein Logo, sein Produktfoto —, damit eine Kartenvorlage sie zeichnen kann. Diese Bilder werden dauerhaft aufbewahrt: die Bytes in der Bildablage (§ 3.4), die Angaben darüber (Schlüssel, Typ, Maße, Größe, Prüfsumme) in einer Tabelle der Datenbank. Anlage 1 Abschnitt A führt sie mit Zweck, Rechtsgrundlage und Löschung; die Prüfung beim Hochladen steht in Anlage 2 Abschnitt 2.6.

Erweitert sich der Funktionsumfang, wird dieser Vertrag angepasst und dem Händler in der neuen Fassung vorgelegt (§ 0.3).

1.2 Art der Verarbeitung

Erheben, Erfassen, Speichern, Verwenden, Abfragen, Verschlüsseln, Übermitteln an den in § 6 genannten Empfängerkreis, Löschen und Einschränken der Verarbeitung — jeweils im Umfang der Anlage 1.

1.3 Zweck der Verarbeitung

Ausschließlich:

  1. Installation und Betrieb der App im Shop des Händlers: Zuordnung des Shops, Beschaffung und Erneuerung der Shopify-Zugangstoken, Authentifizierung von Aufrufen aus der eingebetteten Oberfläche.
  2. Erfüllung der von Shopify vorgeschriebenen Datenschutz-Webhooks (Auskunft, Löschung einer Person, Löschung eines Shops).
  3. Nachweis über Zugriffe auf geschützte Kundendaten (Protokoll über Zugriffe auf geschützte Kundendaten): Auflage aus der Shopify-Freigabe für geschützte Kundendaten und eigene Rechenschaftsfähigkeit nach Art. 5 Abs. 2 DSGVO. Art. 5 Abs. 2 DSGVO ist dabei der Zweck, nicht die Rechtsgrundlage; zur Rechtsgrundlage siehe Abschnitt 5.1 der Datenschutzerklärung.
  4. Feststellung des Abonnementstands des Händler-Shops bei Shopify und dessen Durchsetzung an drei Stellen: dem Einrichten des Gutscheinprodukts, dem Korrekturabzug und der Zustellsperre — ohne aktives Abonnement hält der automatische Versand an, und die fertigen Gutscheine bleiben liegen, bis wieder ein Tarif läuft. Die Erzeugung eines bezahlten Gutscheins ist ausdrücklich nicht verriegelt: Die Geschenkkarte entsteht, und der Händler kann die Karte herunterladen und selbst übergeben. Die Tarife verwaltet Shopify; KYTH liest dort, ob ein aktives Abonnement besteht, wie der Tarif heißt, ob es ein Testabonnement ist und bis wann der laufende Abrechnungszeitraum reicht. Die ersten drei Angaben werden zwischengespeichert, das Ende des Abrechnungszeitraums wird nur angezeigt.
  5. Erzeugung der Gutscheinkarte als Vorschau und als PDF aus Angaben, die der Händler im Adminbereich selbst eingibt — ohne Speicherung der Probeangaben und ohne Zugriff auf Bestell- oder Kundendaten des Shops; gespeichert werden nur Entwürfe, die der Händler ausdrücklich sichert.
  6. Aufbewahrung der vom Händler hochgeladenen Bildmotive, damit eine Kartenvorlage sie zeichnen kann.
  7. Einrichtung des Gutscheinprodukts im Shop des Händlers auf dessen Klick hin, und Festhalten, welches Produkt das ist. Ohne diese Angabe ließe sich eine Gutscheinbestellung, die über einen Express-Bezahlweg hereinkommt, nicht als solche erkennen.
  8. Abwicklung einer bezahlten Gutscheinbestellung in diesen Schritten: a) die bezahlte Bestellung entgegennehmen und je gekauftem Stück einen Datensatz anlegen; b) die Angaben des Kunden zur beschenkten Person übernehmen und verschlüsselt ablegen; c) bei einem Wertgutschein einen Gutscheincode erzeugen, ihn verschlüsselt speichern und damit bei Shopify eine Geschenkkarte anlegen; d) die Karte rendern und den Vorgang als abgeschlossen vermerken; e) den fertigen Gutschein zustellen, und zwar über den Mailzugang des Händlers (§ 1.1). Hat der Händler keinen hinterlegt, wird nichts zugestellt — der Gutschein bleibt abrufbar und herunterladbar, und der Händler übergibt ihn selbst; f) der kaufenden Person im Kartuu-Block den Stand und die Abruflinks ihrer Gutscheine zeigen.
  9. Kartenvorschau auf der Produktseite des Shops, ohne Speicherung.
  10. Betriebsdiagnose und Sicherheit in dem in Anlage 1 beschriebenen, sehr engen Umfang.

Eine Verarbeitung zu eigenen Zwecken von KYTH — insbesondere zu Werbung, Profiling, Weiterverkauf, Training von Modellen oder Auswertung über Händler hinweg — findet nicht statt.

1.4 Dauer

Die Verarbeitung beginnt mit der Zustimmung nach § 0 und dem darauf folgenden Verbinden der App. Der Vertrag läuft auf unbestimmte Zeit, solange die App installiert ist.

Der Vertrag endet, ohne dass es einer Kündigung bedarf, mit der Deinstallation der App. Für Daten, die zu diesem Zeitpunkt noch vorhanden sind, gelten die Pflichten dieses Vertrages bis zu deren Löschung nach § 9 fort.

Höchstdauer. Die in der Datenbank verbliebenen Daten werden spätestens 30 Tage nach der Deinstallation gelöscht — im Regelfall früher, nämlich mit dem Webhook shop/redact, den Shopify regelmäßig 48 Stunden nach der Deinstallation sendet. Bleibt dieser Webhook aus, greift der Aufräumlauf nach § 9.3 Nr. 1. In den Sicherungen bestehen gelöschte Daten fort, bis die dortigen Fristen ablaufen (§ 9.3 Nr. 2).


§ 2 Art der personenbezogenen Daten und Kategorien betroffener Personen

2.1 Kategorien betroffener Personen

Kategorie Heutiger Stand
Händler und die für ihn im Shopify-Adminbereich handelnden Personen betroffen — über die Shop-Domain, den kurzlebigen Sitzungstoken und die im Zustimmungsschritt angegebene Kontaktadresse. Letztere ist regelmäßig die Adresse einer natürlichen Person und deshalb verschlüsselt gespeichert
Endkundschaft des Händlers (Käuferinnen und Käufer) betroffen, mit Speicherung: Kauft eine Kundin einen Gutschein, werden Name und E-Mail-Adresse verschlüsselt in der Gutscheinzeile abgelegt — der Händler sieht beides in der Einzelansicht seiner eigenen Bestellung, nicht in der Liste der Bestellungen. Zusätzlich wird ihre Shopify-Kundennummer in der Gutscheinzeile abgelegt — im Klartext, weil sie der Suchschlüssel der beiden Datenschutz-Webhooks ist. Bei einem Gastkauf fehlt sie; gefunden wird die Person dann über einen nicht umkehrbaren Suchwert ihrer Adresse, der neben dem Chiffrat liegt. Die Kundennummer wird nicht an Shopify übertragen: Der Aufruf zum Anlegen der Geschenkkarte trägt ausschließlich den Gutscheincode, den Nennwert und eine Notiz zur Zuordnung. Flüchtig hinzu kommen die Kundennummer aus den Datenschutz-Webhooks und, wenn die kaufende Person den Kartuu-Block auf der Danke- oder Bestellstatusseite nutzt, deren Sitzungsmerkmal und gegebenenfalls die dort eingegebene E-Mail-Adresse (Anlage 1 Abschnitt B)
Beschenkte / Empfänger von Gutscheinen betroffen, mit Speicherung, und in zwei Rollen zugleich. Als betroffene Person: Empfängername, E-Mail-Adresse und der an sie gerichtete Grußtext werden aus der Bestellung übernommen und verschlüsselt gespeichert; über einen nicht umkehrbaren Suchwert der Adresse ist sie auffindbar. Als Empfängerin des Gutscheins: Genau dafür wird die Adresse erhoben — die Karte wird ihr über den Mailzugang des Händlers zugestellt und trägt Grußtext und Absendernamen (§ 1.1). Hat der Händler keinen Zugang hinterlegt, wird nichts zugestellt und er übergibt die Karte selbst. Sie hat nicht bestellt, hat deshalb keine Kundennummer, und Shopify kennt sie nicht — die Folge daraus für ihre Betroffenenrechte steht in § 7.2
Schenkende Personen betroffen, mit Speicherung, soweit ein Absendername angegeben wurde: verschlüsselt in derselben Zeile. Sie ist regelmäßig, aber nicht zwingend die Käuferin
Personen, die auf einem hochgeladenen Bild zu sehen sind oder in dessen Metadaten stehen betroffen, und hier mit Speicherung. Was ein hochgeladenes Motiv zeigt, entscheidet allein der Händler; KYTH sieht es nicht durch und wertet es nicht aus. Bei einem Bild aus einem Mobiltelefon können die eingebetteten Aufnahmedaten (EXIF) unter anderem Aufnahmezeitpunkt, Gerät und Standort enthalten. Diese Angaben entfernt Kartuu beim Hochladen aus jedem Bild; erhalten bleibt allein die Ausrichtung (§ 2.2). Gehört das Motiv zur Gestaltung eines Gutscheinprodukts, kann jede Person, die dessen Produktseite mit der Kartenvorschau aufruft, die Bilddatei abrufen (Anlage 1 Abschnitt B); Aufnahmedaten trägt sie nicht (Anlage 2 Abschnitt 2.6)

2.2 Art der Daten

Abschließend aufgeführt in Anlage 1. In Kurzform:

Zu den Bildmotiven: Was ein hochgeladenes Bild zeigt und welche Aufnahmedaten darin stehen, bestimmt der Händler. Ein Bild kann Personen abbilden, und die eingebetteten Aufnahmedaten (EXIF) eines Mobiltelefons können einen Standort tragen. KYTH prüft das Bild auf Format, Maße und Ungefährlichkeit (Anlage 2 Abschnitt 2.6) und wertet den Inhalt nicht aus.

Die Aufnahmedaten fallen beim Hochladen weg, und zwar aus jedem Bild. Misst die längere Kante mehr als 2000 Pixel, wird das Motiv auf diese Kante heruntergerechnet und dabei neu kodiert; die Ausrichtung wird dabei in die Pixel übernommen. Ist das Bild kleiner, verwirft Kartuu nur die Teile der Datei, in denen Aufnahmedaten stehen, und kodiert nicht neu — die Bildpunkte bleiben unverändert, und die Ausrichtung bleibt als einzige Angabe stehen, damit ein hochkant aufgenommenes Foto nicht auf der Seite liegt. Aufnahmezeitpunkt, Gerät und Standort fallen in beiden Fällen vollständig weg. Bilder, die vor dem 23.09.2026 hochgeladen wurden, sind auf dieselbe Weise bereinigt.

Wer ein Motiv abrufen kann. Eine allgemein lesbare Adresse der Bildablage gibt es nicht. Der Händler erhält seine Bilder im Adminbereich nach Prüfung seiner Sitzung. Außerhalb davon wird ein Motiv nur über eine signierte Adresse ausgeliefert, die an den Shop und den Schlüssel gebunden ist und nach ein bis zwei Stunden ungültig wird: in der Vorschau im Adminbereich und — wenn Motiv oder Logo zur Gestaltung eines Gutscheinprodukts gehören — an jede Person, die dessen Produktseite mit der Kartenvorschau aufruft. Diese Person kann die Bilddatei so herunterladen, wie sie gespeichert ist — ohne Aufnahmedaten. Was ein Händler von sich aus in ein Bild hineinlädt, verantwortet er.

2.3 Erteilte Berechtigungen und ihre Ausübung

Dieser Abschnitt trennt zwei Dinge: was KYTH darf und was KYTH tut.

Was der Händler erteilt. In der Shopify-App-Konfiguration sind angefordert:

Berechtigung Zweck Ausübung
read_orders Gutscheinbestellungen erkennen und die Angaben lesen, die der Kunde als Zusatzangaben zur Bestellposition mitgibt ausgeübt — über den Webhook orders/paid. read_all_orders ist ausdrücklich nicht angefordert
write_gift_cards den Wertgutschein als echte Shopify-Geschenkkarte anlegen, mit einem von Kartuu erzeugten Code ausgeübt, bei jedem Wertgutschein. Zum Anlegen und zum Entwerten: Storniert der Händler eine Bestellung oder erstattet er eine Gutscheinposition ganz, wird die zugehörige Geschenkkarte über die Admin-API deaktiviert; nach einer Teilerstattung und bei einer schon angebrochenen Karte erst, wenn der Händler das in der Bestellübersicht wählt. Übertragen wird dabei allein die Kennung der Karte. Den Guthabenstand liest die App auf Nachfrage des Händlers und zeigt ihn an; gespeichert wird er nicht
write_products das Gutscheinprodukt im Shop des Händlers anlegen: Produkt, eine Option, je Betrag oder Leistung eine Variante und die Metafelder, an denen der Bestellablauf die Gutscheinpositionen wiedererkennt ausgeübt, aber nur auf einen Klick des Händlers. Nichts entsteht bei der Installation und nichts im Hintergrund. Ein vorhandenes Produkt wird nicht geändert und keines gelöscht; ändert der Händler Titel, Preis oder Bilder, bleibt es so. write_publications ist ausdrücklich nicht angefordert — ob das Produkt im Onlineshop sichtbar wird, entscheidet der Händler
write_merchant_managed_fulfillment_orders die Gutscheinposition einer bezahlten Bestellung als erfüllt melden, sobald der Gutschein freigegeben ist — der Händler soll die Bestellung nicht von Hand abhaken müssen ausgeübt, bei jeder Freigabe. Übertragen werden die Kennung des Erfüllungsauftrags und die Zeilen mit Stückzahl (§ 3.4); eine Benachrichtigung des Kunden löst Kartuu dabei ausdrücklich nicht aus. Andere Positionen derselben Bestellung bleiben unberührt
geschütztes Kundendatenfeld name Empfängername und Name der schenkenden Person werden auf den Gutschein gedruckt ausgeübt — die Namen stammen aus der Bestellposition und werden verschlüsselt gespeichert
geschütztes Kundendatenfeld email der fertige Gutschein soll als PDF an die beschenkte Person zugestellt werden; die Adresse der kaufenden Person dient dem Abgleich im Kartuu-Block ausgeübt. Die Adresse des Beschenkten wird entgegengenommen, verschlüsselt gespeichert und als Suchwert abgelegt; die Adresse der kaufenden Person wird verschlüsselt gespeichert. Zugestellt wird über den vom Händler hinterlegten Mailzugang; ohne hinterlegten Zugang wird nichts zugestellt

Was KYTH weiterhin nicht tut. Über die Admin-API fragt Kartuu kein Kundendatenfeld ab — keine Anschrift, keine Telefonnummer, keine Zahlungsdaten. Die personenbezogenen Bestelldaten kommen ausschließlich aus dem Webhook, den Shopify zustellt. Eine Bestellung wird sehr wohl abgefragt, aber nur in ihrer Lage: Beim Freigeben fragt Kartuu zu der Bestellung, aus der der Gutschein stammt, die Erfüllungsaufträge und die offenen Mengen ab, um die Gutscheinposition als erfüllt melden zu können. Übertragen wird dabei die Bestellkennung; zurück kommen Kennungen, Zustände und Stückzahlen — kein Kundendatenfeld. Unmittelbar bevor ein Gutschein ausgestellt wird, fragt Kartuu außerdem, ob die Bestellung storniert ist und wie ihr Zahlungsstand lautet; übertragen wird wieder allein die Bestellkennung. Die vollständige Liste der fünfundzwanzig Aufrufe an die Admin-API steht in § 3.4.

Herkunft der Daten. Personenbezogene Daten erreichen Kartuu auf diesen Wegen:

  1. Aus dem Shop des Händlers — über den Bestellwebhook. Diese Daten werden gespeichert (Anlage 1 Abschnitt A). Für sie ist der Händler Verantwortlicher und KYTH Auftragsverarbeiter; die Weisung dazu ist dieser Vertrag samt der Einrichtung des Gutscheinprodukts.
  2. Aus der Eingabe des Händlers bei der Gestaltung — Probeangaben werden nicht gespeichert (Anlage 1 Abschnitt B); gesicherte Entwürfe werden gespeichert (Anlage 1 Abschnitt A).
  3. Aus einem Upload des Händlers — die Bilder werden gespeichert (Anlage 1 Abschnitt A).
  4. Aus dem Browser der kaufenden oder besuchenden Person — über den Kartuu-Block und die Kartenvorschau im Shop. Diese Angaben werden nicht gespeichert (Anlage 1 Abschnitt B).

Wenn sich das ändert. Vor jeder Erweiterung, die den Kreis der verarbeiteten Daten verändert, wird dieser Vertrag in neuer Fassung vorgelegt und die Fassungskennung erhöht — der Händler wird dann erneut um Zustimmung gebeten (§ 0.3, § 11 Nr. 6).

2.4 Besondere Datenkategorien

Daten besonderer Kategorien nach Art. 9 DSGVO und Daten nach Art. 10 DSGVO sind nicht Gegenstand der Verarbeitung. KYTH wird sie auch künftig nicht anfordern.


§ 2a Pflichten und Rechte des Verantwortlichen

Art. 28 Abs. 3 Satz 1 DSGVO verlangt, dass ein Auftragsverarbeitungsvertrag auch die Pflichten und Rechte des Verantwortlichen festlegt. Das geschieht hier.

  1. Rechtmäßigkeit der Verarbeitung. Der Händler ist allein dafür verantwortlich, dass die von ihm angewiesene Verarbeitung rechtmäßig ist und dass eine Rechtsgrundlage nach Art. 6 DSGVO vorliegt. Er entscheidet über Zwecke und Mittel. KYTH prüft die Rechtsgrundlage nicht und kann sie nicht prüfen.
  2. Informationspflichten. Die Informationspflichten nach Art. 13 und Art. 14 DSGVO gegenüber der Kundschaft des Händlers und gegenüber Beschenkten treffen den Händler. Beschenkte geben ihre Daten typischerweise nicht selbst, sondern die schenkende Person gibt sie — dafür gilt Art. 14 DSGVO.
  3. Weisungen. Der Händler ist berechtigt und verpflichtet, Weisungen nach § 3 zu erteilen; seine Weisungen müssen rechtmäßig sein. Er benennt KYTH die Personen, die für ihn weisungsberechtigt sind, und hält diese Angabe aktuell. Benennt er niemanden, gelten die vertretungsberechtigten Organe des Händlers als weisungsberechtigt.
  4. Kontaktadresse. Der Händler gibt beim Zustimmungsschritt nach § 0 eine E-Mail-Adresse an, unter der KYTH ihn erreichen kann. Die Angabe ist Pflicht; ohne sie wird die App nicht verbunden. An diese Adresse gehen die Mitteilungen nach § 0.3, § 6.6 und § 8.2. Hat der Händler einen Mailzugang hinterlegt, schickt Kartuu über diesen Zugang außerdem höchstens einmal täglich einen Hinweis an diese Adresse, wenn Bestellungen seine Aufmerksamkeit brauchen; der Hinweis nennt nur Anzahlen und einen Link in die App, keine Namen, Adressen, Codes oder Beträge. Der Händler hält die Adresse aktuell und teilt eine Änderung in Textform an datenschutz@kyth.systems mit. In der App lässt sie sich beim Zustimmungsschritt ändern: Steigt die Fassung dieser Texte, fragt Kartuu erneut und zeigt dabei die hinterlegte Adresse zur Bearbeitung an; der eingetragene Wert wird gespeichert. Einen eigenen Bildschirm dafür gibt es nicht. Wird die Adresse unzustellbar, kann KYTH den Händler nicht mehr unmittelbar erreichen — auch nicht bei einer Verletzung des Schutzes personenbezogener Daten, für deren Meldung dem Händler nach Art. 33 Abs. 1 DSGVO nur 72 Stunden bleiben. Die Aktualität liegt deshalb in seinem eigenen Interesse.
  5. Nachweise und Prüfungen. Der Händler hat die Rechte auf Nachweise und Überprüfungen nach § 10.
  6. Meldung von Datenpannen. Die Meldung einer Verletzung des Schutzes personenbezogener Daten an die Aufsichtsbehörde (Art. 33 DSGVO) und die Benachrichtigung der betroffenen Personen (Art. 34 DSGVO) obliegen dem Händler. KYTH unterstützt ihn dabei nach § 8.2.
  7. Eigene Kontrolle. Der Händler überzeugt sich vor Beginn der Verarbeitung und danach regelmäßig von den technischen und organisatorischen Maßnahmen nach Anlage 2. Anlage 2 benennt in Abschnitt 7 ausdrücklich die bekannten Lücken.

Zum Umgang mit der Kontaktadresse. KYTH speichert sie verschlüsselt, verwendet sie ausschließlich für die in Nummer 4 genannten Mitteilungen und Hinweise und für die Weiterleitung von Anfragen betroffener Personen nach § 7.1, gibt sie nicht weiter und wirbt darüber nicht. Sie wird mit der Shop-Zeile gelöscht (§ 9).


§ 3 Verarbeitung nur auf dokumentierte Weisung

3.1 Grundsatz

KYTH verarbeitet personenbezogene Daten ausschließlich auf dokumentierte Weisung des Händlers. Das gilt auch für die Übermittlung in ein Drittland.

3.2 Was als Weisung gilt

Weisungen sind:

  1. dieser Vertrag einschließlich seiner Anlagen — er ist die Grunderklärung der Weisungen; die Zustimmung nach § 0 ist die Erteilung dieser Grunderklärung,
  2. die Installation der App und die Erteilung der Berechtigungen im Shopify-Adminbereich,
  3. Einstellungen und Handlungen des Händlers in der App — insbesondere das Hochladen eines Bildmotivs, das Sichern eines Entwurfs, das Einrichten des Gutscheinprodukts, das Hinterlegen des Mailzugangs, die Wahl der Sprache, das Ändern oder Ergänzen von Kartenangaben und das Freigeben eines Gutscheins. Probeangaben für eine Vorschau gelten nur für diesen einen Renderlauf und werden nicht gespeichert,
  4. Einzelweisungen in Textform an datenschutz@kyth.systems.

Mündlich erteilte Weisungen bestätigt der Händler unverzüglich in Textform. KYTH dokumentiert Einzelweisungen und bewahrt sie für die Dauer des Vertrages auf.

3.3 Grenzen der Weisung

KYTH informiert den Händler unverzüglich, wenn eine Weisung nach Auffassung von KYTH gegen die DSGVO oder gegen andere Datenschutzvorschriften verstößt. KYTH darf die Ausführung einer solchen Weisung aussetzen, bis der Händler sie bestätigt oder ändert.

Ist KYTH gesetzlich zu einer Verarbeitung verpflichtet, teilt KYTH dem Händler die rechtliche Anforderung vor der Verarbeitung mit, sofern das Gesetz die Mitteilung nicht wegen eines wichtigen öffentlichen Interesses verbietet.

3.4 Verarbeitungsort und Drittlandtransfer

Die Verarbeitung durch KYTH selbst findet in Deutschland statt: Anwendung und Datenbank laufen auf einem einzigen virtuellen Server bei der IONOS SE am Standort Berlin. Die täglichen Datenbanksicherungen liegen im Objektspeicher der IONOS in der Region eu-central-3, ebenfalls Berlin. Die vom Händler hochgeladenen Bildmotive liegen auf dem Server selbst — in einer Dateiablage auf einem dauerhaften Datenträger. Siehe § 6.3. Es gibt keine weitere Verarbeitungsumgebung. Der Objektspeicher begründet keinen Drittlandbezug.

Übermittlungen an Stellen außerhalb von KYTH ergeben sich ausschließlich aus dem in § 6 genannten Kreis:

Aufruf Was dabei übertragen wird
Abfrage des Abonnementstands nichts außer dem Token — die Abfrage trägt keine Angaben
Abfrage des Shopnamens nichts außer dem Token. Zurück kommt der Name des Ladens, wie er bei Shopify hinterlegt ist — eine Angabe über ein Unternehmen und keine über eine Person. Sie wird dem Händler als Vorschlag für das Feld „Name auf der Karte“ angezeigt und nur gespeichert, wenn er sie bestätigt
Abfrage der Ablauffrist für Geschenkgutscheine nichts außer dem Token. Zurück kommt die Frist, die der Händler in Shopify unter Einstellungen → Zahlungen → Ablaufdatum von Gutscheinen festgelegt hat (etwa drei Jahre), oder dass Gutscheine nicht ablaufen — keine Personendaten. Gespeichert wird davon nur das daraus errechnete Ablaufdatum am einzelnen Gutschein
Anlegen einer Geschenkkarte der Gutscheincode, der Nennwert samt Währung des Kaufs, das Ablaufdatum, wenn der Händler in Shopify eine Ablauffrist eingestellt hat, und eine Notiz zur Zuordnung — und ausdrücklich nicht die Shopify-Kundennummer des Käufers. Die Notiz enthält keine Personendaten: Wer beschenkt wird, steht in der verschlüsselten Spalte bei KYTH und nicht in einem Freitextfeld bei Shopify
Entwerten einer Geschenkkarte beim Storno allein die Kennung der Karte, keine Kundenangaben. Den Guthabenstand fragt Kartuu vorher mit dem eigenen Aufruf weiter unten ab. Der Aufruf erfolgt aus dem Stornopfad oder — nach einer Teilerstattung oder bei einer angebrochenen Karte — auf Knopfdruck des Händlers in der Bestellübersicht, und er ist endgültig — Shopify kann eine entwertete Karte nicht wieder freischalten
Nachsehen, ob es den Produkt-Handle im Shop schon gibt der Handle und die Namen zweier Metafelder
Nachsehen, ob eine hinterlegte Produktkennung noch existiert die Produktkennung
Abfrage von Titel, Status und Hauptbild eines Gutscheinprodukts für die Liste im Adminbereich die Produktkennung. Zurück kommen Titel, Status, die Adresse des Hauptbilds und je Variante, ob Shopify beim Verkauf Steuer erhebt — Angaben über Ware, keine über Personen. Gespeichert wird davon nichts
Anlegen des Gutscheinprodukts Produkttitel, Beschreibung, Optionen, Varianten mit Preisen und die Metafelder — Angaben über Ware, keine über Personen
Nachziehen der beiden Bestandsfelder einer Variante Produkt- und Variantenkennung
Abfrage der Variantenkennungen eines Gutscheinprodukts, bevor seine Steuerpflicht umgestellt wird die Produktkennung. Zurück kommen die Kennungen der Varianten — keine Personendaten. Gespeichert wird davon nichts
Umstellen der Steuerpflicht beim Verkauf, auf Knopfdruck des Händlers Produkt- und Variantenkennungen und je Variante ein Ja oder Nein
Abfrage der Varianten eines Wertgutscheins und der Preislisten der Märkte des Shops die Produktkennung. Zurück kommen Varianten mit Preisen und Auswahlwerten sowie die Preislisten mit ihrer Währung — Angaben über Ware, keine über Personen. Gespeichert wird davon nichts
Setzen fester Preise für einen Wertgutschein in einer Preisliste (ein Gutschein über 25 kostet in Euro, Dollar, Franken und Pfund genau 25) Kennung der Preisliste, Variantenkennungen, Beträge und Währung
Umbenennen der Auswahlwerte eines Wertgutscheins („25" statt „25,00 €") Produkt-, Options- und Wertkennungen und die neuen Auswahlwerte
Abfrage des Guthabenstands einer Geschenkkarte die Kennungen der Karten einer Bestellung — beim Storno die der betroffenen Karten, bevor sie entwertet werden, und für den Export unter „Export“ die Kennungen aller Wertgutscheine des Shops, in Stapeln. Zurück kommen Guthaben, Ausgangswert und ob die Karte noch gilt — kein Code, keine Personendaten. Der Wert wird durchgereicht und nicht gespeichert
Abfrage der Lage der Bestellung beim Freigeben die Bestellkennung. Zurück kommen Erfüllungsaufträge, Zustände und offene Mengen — kein Kundendatenfeld
Abfrage des Storno- und Zahlungsstands einer Bestellung, unmittelbar bevor ein Gutschein ausgestellt wird die Bestellkennung. Zurück kommen, ob die Bestellung storniert ist, und ihr Zahlungsstand (etwa bezahlt oder erstattet) — kein Kundendatenfeld. Ist sie storniert, ganz erstattet oder die Zahlung aufgehoben, entsteht kein Gutschein. Gespeichert wird davon nichts
Melden der Gutscheinposition als erfüllt (Erfüllen der Bestellung) die Kennung des Erfüllungsauftrags und die Zeilen mit Stückzahl. Eine Benachrichtigung des Kunden wird dabei ausdrücklich nicht ausgelöst
Anfordern eines Upload-Ziels für das Produktbild Dateiname, MIME-Typ und Grösse des Bildes — noch keine Bilddaten
Übertragen des Produktbilds an Shopifys Speicher die Bytes eines PNG: die ganze Gutscheinkarte, wie sie der Käufer im Shop sehen soll, befüllt mit erfundenen Beispielangaben — einem Beispielnamen, einem Beispielbetrag, einem mit „MUSTER“ beginnenden Code und einem Beispielgruß. Sie trägt den Anzeigenamen des Shops, sein Logo und das vom Händler gewählte Motiv — keine Angaben einer echten Person und keinen gültigen Code
Anhängen des Produktbilds an das Gutscheinprodukt Produktkennung, die Kennung der hochgeladenen Datei und ein Alternativtext
Abfrage des Medienstands des Produkts die Produktkennung. Zurück kommen die Kennungen und Zustände der angehängten Bilder
Abhängen überzähliger Produktbilder Produktkennung und die Kennungen der zu entfernenden Bilder
Abfrage der Kennung der App-Installation nichts außer dem Token. Zurück kommt die Kennung, unter der Kartuu im Shop installiert ist
Setzen des Versandmerkers an der App-Installation allein ein Ja oder Nein: ob der Händler einen E-Mail-Versand eingerichtet hat — kein Mailserver, keine Adresse, kein Zugang. Der Kartuu-Block im Shop zeigt die Felder für die E-Mail-Adresse der beschenkten Person und den Wunschtermin nur, wenn der Versand eingerichtet ist

Bestell- und Kundendaten werden über die Admin-API nicht abgefragt; sie kommen eingehend über den Webhook orders/paid, den Shopify zustellt. Shopify ist zugleich die Plattform, auf der der Shop des Händlers ohnehin betrieben wird; der Händler unterhält hierzu ein eigenes Vertragsverhältnis mit Shopify. Vertragspartner für Händler im Europäischen Wirtschaftsraum ist regelmäßig die Shopify International Ltd. mit Sitz in Irland; eine Verarbeitung durch verbundene Unternehmen außerhalb des EWR, insbesondere die Shopify Inc. in Kanada, ist nicht ausgeschlossen.

Weisung. Mit Abschluss dieses Vertrages weist der Händler KYTH an, den Token-Endpunkt und die Admin-API seines eigenen Shops bei Shopify aufzurufen und die eingehenden Webhooks von Shopify entgegenzunehmen, auch soweit dabei eine Übermittlung an Shopify-Stellen außerhalb des EWR stattfindet (Art. 28 Abs. 3 lit. a DSGVO). Ohne diesen Datenfluss lässt sich die App nicht betreiben.

Kanada. Für Kanada besteht ein Angemessenheitsbeschluss der Europäischen Kommission (Entscheidung 2002/2/EG) für privatwirtschaftliche Organisationen, die dem kanadischen Datenschutzgesetz PIPEDA unterliegen.

Übrige Drittländer, insbesondere die USA: Standardvertragsklauseln. Shopify bezieht in sein Data Processing Addendum in der 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. Das Addendum ist unter https://www.shopify.com/legal/dpa öffentlich abrufbar; eine Kopie der Klauseln erhält der Händler auf Anfrage an datenschutz@kyth.systems (Art. 13 Abs. 1 lit. f DSGVO). Dieselbe Grundlage steht in Abschnitt 8 der Datenschutzerklärung.

Andere Übermittlungen in Drittländer finden nicht statt. Insbesondere liegen die Sicherungen in Deutschland (§ 6.3).


§ 4 Vertraulichkeit der eingesetzten Personen

KYTH setzt zur Verarbeitung nur Personen ein, die zur Vertraulichkeit verpflichtet sind oder einer angemessenen gesetzlichen Verschwiegenheitspflicht unterliegen (Art. 28 Abs. 3 lit. b DSGVO). Die Verpflichtung wirkt über das Ende der Tätigkeit hinaus.

KYTH stellt sicher, dass diese Personen personenbezogene Daten ausschließlich auf Weisung des Händlers verarbeiten und mit den für sie maßgeblichen Datenschutzvorgaben vertraut sind.

Der Kreis der Zugriffsberechtigten. Zugriff auf die Produktionsumgebung — Server, Coolify, Datenbank und das Shopify Partner Dashboard — haben ausschließlich die beiden Geschäftsführer von KYTH, Stefan Grasse und Stephan Wittmann.

Darüber hinaus hat niemand Zugriff. Es gibt keine Beschäftigten, keine freie Mitarbeit und keine Dienstleister mit Zugang zur Produktionsumgebung. Die Unterauftragsverarbeiter aus § 6.3 sind davon nicht berührt: Sie stellen Infrastruktur und haben keinen Zugriff auf die Anwendung.

Verschwiegenheit. Art. 28 Abs. 3 lit. b DSGVO verlangt eine Verpflichtung zur Vertraulichkeit oder eine angemessene gesetzliche Verschwiegenheitspflicht. Für die Geschäftsführer folgt die Verschwiegenheitspflicht aus ihrer organschaftlichen Treuepflicht (§ 43 GmbHG, für die UG über § 5a Abs. 1 GmbHG). Erhält eine weitere Person Zugriff, wird sie vorher schriftlich zur Vertraulichkeit verpflichtet.


§ 5 Technische und organisatorische Maßnahmen (Art. 32 DSGVO)

KYTH trifft die in Anlage 2 beschriebenen technischen und organisatorischen Maßnahmen. Anlage 2 enthält ausschließlich umgesetzte Maßnahmen und benennt in einem eigenen Abschnitt die bekannten Lücken.

Die Maßnahmen unterliegen dem technischen Fortschritt. KYTH darf sie anpassen, solange das Schutzniveau nicht unterschritten wird. Wesentliche Änderungen werden dokumentiert und dem Händler auf Anfrage mitgeteilt.

KYTH verfügt über keine Datenschutz- oder Sicherheitszertifizierung (weder ISO/IEC 27001 noch SOC 2 noch eine Zertifizierung nach Art. 42 DSGVO) und behauptet auch keine. Anlage 2 ist eine Selbstauskunft, kein Prüfbericht.


§ 6 Unterauftragsverarbeiter

6.1 Zustimmung

Der Händler stimmt mit Abschluss dieses Vertrages der Beauftragung der unter 6.3 genannten Unterauftragsverarbeiter zu (allgemeine schriftliche Genehmigung nach Art. 28 Abs. 2 Satz 2 DSGVO).

6.2 Bedingungen

KYTH verpflichtet jeden Unterauftragsverarbeiter vertraglich auf Datenschutzpflichten, die den Pflichten aus diesem Vertrag entsprechen, insbesondere auf hinreichende Garantien nach Art. 28 Abs. 4 DSGVO. Kommt der Unterauftragsverarbeiter seinen Datenschutzpflichten nicht nach, haftet KYTH gegenüber dem Händler für dessen Einhaltung nach Maßgabe von Art. 28 Abs. 4 Satz 2 DSGVO.

Mit der IONOS gilt deren Vereinbarung zur Auftragsverarbeitung (siehe unten).

6.3 Liste der Unterauftragsverarbeiter

Unternehmen Sitz / Verarbeitungsort Zweck Welche Daten
IONOS SE Elgendorfer Straße 57, 56410 Montabaur, Deutschland (AG Montabaur, HRB 24498); Verarbeitungsort Rechenzentrum Berlin Hosting: ein virtueller Server (VPS), darauf die Anwendungscontainer, die PostgreSQL-Datenbanken für Test- und Produktivbetrieb und die Dateiablage der hochgeladenen Bildmotive auf einem dauerhaften Datenträger Alle in Anlage 1 als gespeichert bezeichneten Daten sowie die Anwendungsprotokolle
IONOS Cloud GmbH (Objektspeicher) Elgendorfer Straße 57, 56410 Montabaur, Deutschland (AG Montabaur, HRB 31110); Verarbeitungsort Region eu-central-3, Rechenzentrum Berlin; Endpunkt s3.eu-central-3.ionoscloud.com Ablage der täglichen Datenbanksicherungen im Eimer kaspar-kyth-db-backup-worm (mit Object Lock); Sicherungen bis zum 04.08.2026 liegen bis zum Ablauf ihrer Frist im Vorgängereimer kaspar-kyth-db-backup die vollständige Datenbanksicherung, also alle in Anlage 1 als gespeichert bezeichneten Daten in dem Zustand, in dem sie in der Datenbank stehen — die feldweise verschlüsselten Werte verschlüsselt; Fristen in § 9.3 Nr. 2

Zu den Verträgen nach Art. 28 Abs. 4 DSGVO:

IONOS. Es gilt die „Vereinbarung zur Auftragsverarbeitung nach Art. 28 Abs. 3 DSGVO" der IONOS, Version 1.2, Stand 06/2023, öffentlich abrufbar unter https://www.ionos.de/terms-gtc/avv/. KYTH hält eine Ausfertigung in seinen Vertragsunterlagen. Nach ihrem § 1.1 umfasst sie „alle Tätigkeiten, die der Auftragnehmer zur Erfüllung des Auftrags erbringt und die eine Auftragsverarbeitung darstellen", und erfasst damit Server und Objektspeicher, soweit beide unter demselben Hauptvertrag bezogen werden.

Den Objektspeicher stellt die IONOS Cloud GmbH (AG Montabaur, HRB 31110); die Anbieterkennzeichnung des Dienstes unter s3.eu-central-3.ionoscloud.com nennt sie. Server, Datenbank und Sicherungen laufen bei der IONOS SE (HRB 24498). Beide sind unter derselben Anschrift erreichbar; welche Gesellschaft im Einzelfall Vertragspartnerin ist, ergibt sich aus dem jeweiligen Vertrag.

Shopify ist kein Unterauftragsverarbeiter, sondern eigener Auftragsverarbeiter des Händlers; siehe 6.4.

6.4 Weitere Empfänger, die keine Unterauftragsverarbeiter sind

Der Vollständigkeit halber, weil ein Datenfluss oder eine Beteiligung besteht:

Was tatsächlich fließt: Plattform: Bezug und Erneuerung der Zugangstoken über den Token-Endpunkt des Shops; fünfundzwanzig Aufrufe an die Admin-API des Shops (§ 3.4); das Übertragen des Produktbilds; das Setzen des Versandmerkers (§ 3.4); Zustellung der eingehenden Webhooks an Kartuu, darunter die bezahlten Bestellungen; Weiterleitung der Anfragen aus dem Shop an Kartuu (Kartenvorschau auf der Produktseite, Kartuu-Block auf Danke- und Bestellstatusseite); Verwaltung und Abrechnung der App-Tarife

Welche Daten: Zugangsdaten der App, Sitzungstoken bzw. Refresh-Token, Access-Token, Shop-Domain, der Gutscheincode, der Nennwert und gegebenenfalls das Ablaufdatum beim Anlegen einer Geschenkkarte, die Angaben des Gutscheinprodukts, das Produktbild und der Versandmerker (ob ein E-Mail-Versand eingerichtet ist, ja oder nein). Die Kundennummer des Käufers geht dabei nicht mit. Empfängername, Empfängeradresse und Grußtext gehen nicht an Shopify zurück; sie kommen von dort und bleiben verschlüsselt bei KYTH

Einordnung. Eine Unterauftragsverarbeitung setzt voraus, dass KYTH den Dienstleister beauftragt. Hier hat der Händler Shopify beauftragt — Shopify betreibt seinen Shop. Wenn Kartuu eine Geschenkkarte über die Admin-API anlegt, schreibt es Daten in den Shop des Händlers, und Shopify verarbeitet sie dort als dessen Auftragsverarbeiter, unter dessen eigenem Vertrag.

Belegt ist das an zwei Stellen:

Getrennt davon zu sehen ist die Abrechnung der App-Tarife. Dort ist KYTH selbst Kunde von Shopify; das ist eine eigene Vertragsbeziehung von KYTH und keine Verarbeitung im Auftrag des Händlers.

Anders liegt es bei der Unternehmenswebsite von KYTH unter kyth.systems und www.kyth.systems: Diese Namen laufen im Proxy-Modus, dort verarbeitet Cloudflare Verbindungsdaten. Das betrifft Kartuu nicht und ist Gegenstand der Datenschutzerklärung jener Website, nicht dieses Vertrages.

Eine Umstellung der App auf den Proxy-Modus machte Cloudflare zum Unterauftragsverarbeiter; sie erfolgt erst, nachdem die Liste unter 6.3 ergänzt und der Händler nach 6.6 informiert wurde. - GitHub, Inc. (San Francisco, USA; Tochter der Microsoft Corporation) — privates Quellcode-Repository und Bereitstellungsschlüssel. GitHub verarbeitet keine Händler-, Kunden- oder Gutscheindaten. Zugangsgeheimnisse liegen ausschließlich in der Bereitstellungsumgebung und sind von Repository und Container-Abbild ausgeschlossen. - cdn.shopify.com — die eingebettete Oberfläche lädt die Shopify-Bibliothek „App Bridge“ direkt vom Shopify-CDN. Dieser Aufruf erfolgt aus dem Browser des Händlers, nicht vom Server von KYTH. Übertragen werden dabei die Verbindungsdaten des Händler-Browsers (IP-Adresse, Browserkennung) und die Herkunftsangabe. Übertragen werden keine Kunden-, Bestell- oder Gutscheindaten und kein Token; das einzige mitgegebene Attribut ist die öffentliche Anwendungskennung. Die Herkunftsangabe ist durch die Richtlinie Referrer-Policy: strict-origin-when-cross-origin auf https://kartuu.kyth.systems beschränkt, der Parameter ?shop= wird also nicht mitübertragen. Empfänger ist Shopify — dieselbe Stelle, die die umgebende Adminoberfläche ausliefert. Ein zusätzlicher Empfängerkreis entsteht dadurch nicht.

6.5 Ausdrücklich nicht beteiligt

Gesucht und nicht vorhanden: kein Versanddienstleister für E-Mail, kein externer Schrift- oder Symboldienst, kein Analyse- oder Tag-Dienst, kein externer Fehlererfassungsdienst. Die einzige HTTP-Bibliothek im Anwendungscode wird an drei Stellen verwendet: Zwei sprechen den Händler-Shop an — den Token-Endpunkt und die Admin-API —, die dritte lädt das Produktbild an den Speicherort, den Shopify dafür benennt (§ 3.4). Daneben verbindet sich die Anwendung über SMTP mit dem Mailserver, den der Händler hinterlegt hat (§ 3.4, § 6.4).

Objektspeicher wird ausschließlich bei IONOS für die Datenbanksicherungen benutzt (6.3). Mit ihm spricht die Anwendung nicht; die Übertragung dorthin besorgt ein eigenes Sicherungsskript auf dem Server, das den Abzug verschlüsselt, bevor er den Server verlässt (§ 9.3 Nr. 2).

6.6 Änderungen und Widerspruchsrecht

KYTH informiert den Händler über die beabsichtigte Hinzuziehung eines weiteren oder den Austausch eines bestehenden Unterauftragsverarbeiters mindestens 30 Tage vorher in Textform an die vom Händler nach § 2a Nr. 4 hinterlegte Kontaktadresse. Ist diese Adresse unzustellbar geworden, erfolgt die Information zusätzlich durch Veröffentlichung unter https://kartuu.kyth.systems/rechtliches/auftragsverarbeitung; die Frist läuft dann ab der Veröffentlichung.

Der Händler kann der Änderung innerhalb von 30 Tagen ab Zugang der Mitteilung aus einem sachlichen, datenschutzbezogenen Grund in Textform widersprechen. Einigen sich die Parteien nicht, kann der Händler die Nutzung der App beenden, indem er sie deinstalliert; die Löschung richtet sich dann nach § 9. Widerspricht der Händler nicht, gilt die Änderung als genehmigt.

Erfordert eine Änderung wegen einer unmittelbaren Gefahr für die Sicherheit oder Verfügbarkeit ein sofortiges Handeln, informiert KYTH den Händler gleichzeitig mit der Maßnahme, spätestens innerhalb von 24 Stunden. Der Händler kann der Maßnahme innerhalb von 14 Tagen ab Zugang der Mitteilung widersprechen. Im Fall des Widerspruchs beendet KYTH die Einbindung des Unterauftragsverarbeiters unverzüglich, oder der Händler kann den Vertrag mit sofortiger Wirkung beenden; die Löschung richtet sich dann nach § 9. Das Einspruchsrecht nach Art. 28 Abs. 2 Satz 2 DSGVO bleibt damit erhalten.


§ 7 Unterstützung bei den Rechten betroffener Personen

7.1 Grundsatz

Anträge betroffener Personen richten sich an den Händler als Verantwortlichen. Wendet sich eine betroffene Person unmittelbar an KYTH, leitet KYTH den Antrag unverzüglich an den Händler weiter und beantwortet ihn nicht selbst.

KYTH unterstützt den Händler mit geeigneten technischen und organisatorischen Maßnahmen dabei, seiner Pflicht zur Beantwortung nachzukommen (Art. 12 bis 23 DSGVO), soweit dem Händler das nicht bereits über seinen eigenen Shopify-Zugang möglich ist.

7.2 Was technisch bereitsteht

Kartuu ist an die von Shopify vorgeschriebenen Datenschutz-Webhooks angebunden:

Webhook Wirkung heute
customers/data_request (Art. 15 DSGVO) Aus dem signaturgeprüften Inhalt werden zwei Angaben gelesen: die Kundenkennung und die E-Mail-Adresse. Die Auskunftsfunktion durchsucht damit die Gutscheintabelle — über die Kundenkennung den Käufer, über die Suchwerte der Adressen die beschenkte Person und einen Käufer ohne Kundennummer. Zusammengestellt werden Empfängername, Adresse, Absendername, Grußtext sowie Name und E-Mail-Adresse des Käufers, entschlüsselt. Nicht enthalten sind Gutscheincode und Abruf-Token, weil sie den Zugriff auf den Gutschein selbst eröffnen. Es wird ein Eintrag im Protokoll über Zugriffe auf geschützte Kundendaten erzeugt. Der Webhook stellt die Auskunft niemandem zu. In der App gibt es keine Seite, auf der der Händler sie abrufen könnte, und es geht keine Nachricht an seine Kontaktadresse. Festgehalten wird die Tatsache der Anfrage und die Anzahl der gefundenen Datensätze; der Inhalt wird mit dem Aufruf verworfen. Die Herausgabe erfolgt auf Anforderung des Händlers in Textform an datenschutz@kyth.systems und von Hand, aus denselben Zeilen und mit derselben Funktion (§ 7.1, § 7.4). Die Lücke steht in Anlage 2 Abschnitt 7.
customers/redact (Art. 17 DSGVO) Gleicher Suchweg. Die gefundenen Zeilen werden anonymisiert und nicht gelöscht: Empfängername, E-Mail-Adresse samt Suchwert, Absendername, Grußtext sowie Name und E-Mail-Adresse des Käufers samt Suchwert werden geleert, die Kundennummer nur dann, wenn sie zu der gesuchten Person gehört. Der Gutschein selbst bleibt — Code, Zustand, Wert und Vorlagenabbild —, weil er bezahlt ist und eingelöst werden kann. Ein Nachdruck trägt danach keinen Empfängernamen mehr.
shop/redact Löscht sämtliche Daten des Shops, siehe § 9.

Grenze bei beschenkten Personen. Shopifys customers/redact und customers/data_request tragen Kundenkennung und Adresse genau einer Person — der Person, die Shopify kennt. Eine beschenkte Person hat nicht bestellt und taucht dort nicht auf; ihre Zeilen werden über diese Webhooks nur dann getroffen, wenn ihre Adresse dieselbe ist. Der Suchweg über die Adresse ist gebaut, ein Auslöser für eine dritte Person nicht. Verlangt eine beschenkte Person Auskunft oder Löschung, führt KYTH sie auf Weisung des Händlers von Hand aus (§ 7.1). Das steht auch in Anlage 2 Abschnitt 7.

Kaufende Personen ohne Kundennummer. Bei einem Gastkauf fehlt die Kundennummer. Auch die Adresse der kaufenden Person trägt deshalb einen nicht umkehrbaren Suchwert, und die beiden Webhooks finden ihre Angaben darüber. Gutscheine, die vor dem 23.09.2026 angelegt wurden, bekommen diesen Suchwert vom täglichen Aufräumlauf nachgetragen, solange ihre Adresse noch gespeichert ist.

7.3 Berichtigung, Einschränkung, Übertragbarkeit

Zu den technischen Daten des Shops (Shop-Domain, Token, Zeitstempel) gibt es keine Angaben, die inhaltlich unrichtig sein könnten und die der Händler nicht selbst über Shopify korrigieren kann. Verlangt der Händler eine Einschränkung der Verarbeitung, setzt KYTH sie nach Absprache um; das praktisch wirksame Mittel ist die Deinstallation der App.

Anders liegt es bei den Angaben zu einer bestellten Karte. Empfängername, Empfängeradresse, Absendername und Grußtext können unrichtig sein — sie stammen aus einem Formular, das ein Kunde ausgefüllt hat. Der Händler kann sie in der App berichtigen, solange der Gutschein noch nicht ausgestellt ist. In der Bestellübersicht trägt jedes Stück im Zustand „vorbereitet" den Knopf „Angaben ändern"; fehlen die Angaben ganz, heißt derselbe Knopf „Angaben ergänzen". Er öffnet ein Formular über alle vier Felder, und gespeichert werden alle vier gemeinsam — auch das, das der Händler absichtlich geleert hat. Die Adresse wird dabei verschlüsselt abgelegt und ihr Suchwert neu geschrieben, damit ein späteres Löschverlangen die Zeile weiterhin findet.

Nach dem Ausstellen nicht mehr. Ist die Karte gerendert, gilt der Gutschein als geliefert und wird nicht mehr umgeschrieben. Verlangt jemand darüber hinaus eine Berichtigung, genügt eine Nachricht in Textform an datenschutz@kyth.systems; KYTH führt sie von Hand aus. Der Weg, der dem Händler dafür selbst offensteht, ist ein neu ausgestelltes Stück.

Die Zustelladresse ist davon ausgenommen. Sie steht nicht auf der Karte, sondern ist allein das Ziel des Versands. Sie lässt sich deshalb auch nach dem Ausstellen ändern — über „An andere Adresse senden" auf dem Bildschirm „Zustellung" —, ohne dass sich das Dokument um ein Zeichen ändert.

Ausnahme: die hochgeladenen Bildmotive. Für sie gibt es in der App keine Löschmöglichkeit — weder für ein einzelnes Bild noch für alle. Verlangt der Händler die Entfernung eines Motivs, etwa weil darauf eine Person zu sehen ist, die widersprochen hat, genügt eine Nachricht in Textform an datenschutz@kyth.systems; KYTH entfernt das Objekt und seine Zeile von Hand und bestätigt das. Bis eine Löschfunktion in der App besteht, ist das der einzige Weg.

7.4 Aufwand

Die Unterstützung nach diesem Paragraphen erbringt KYTH unentgeltlich, im Rahmen dessen, was Art. 28 Abs. 3 lit. e DSGVO verlangt. Eine Vergütung für darüber hinausgehenden Aufwand ist nicht vereinbart und wird nicht verlangt.


§ 8 Unterstützung bei Sicherheit, Datenpannen und Datenschutz-Folgenabschätzung

8.1 Sicherheit der Verarbeitung (Art. 32 DSGVO)

KYTH unterhält die in Anlage 2 beschriebenen Maßnahmen und überprüft sie anlassbezogen, insbesondere bei jeder Erweiterung des Funktionsumfangs.

8.2 Verletzungen des Schutzes personenbezogener Daten (Art. 33, 34 DSGVO)

KYTH meldet dem Händler jede Verletzung des Schutzes personenbezogener Daten, die Daten aus dessen Shop betrifft, unverzüglich nach Bekanntwerden in Textform an die vom Händler nach § 2a Nr. 4 hinterlegte Kontaktadresse. Die Meldung enthält, soweit bekannt:

Sind noch nicht alle Angaben verfügbar, meldet KYTH zunächst den bekannten Sachverhalt und liefert das Übrige unverzüglich nach. Die Meldung an die Aufsichtsbehörde und die Benachrichtigung betroffener Personen obliegen dem Händler (§ 2a Nr. 6); KYTH unterstützt ihn dabei mit den vorliegenden Informationen.

Grenze dieser Zusage. Der Kanal zum Händler steht, weil die Kontaktadresse beim Vertragsschluss erhoben wird (§ 0.2, § 2a Nr. 4). Er hängt aber daran, dass der Händler sie aktuell hält. Ist die hinterlegte Adresse unzustellbar geworden, kann KYTH ihn nicht mehr unmittelbar erreichen; KYTH veröffentlicht die Meldung dann unter https://kartuu.kyth.systems/rechtliches/auftragsverarbeitung und weist in der eingebetteten Oberfläche darauf hin. Das ersetzt eine unmittelbare Benachrichtigung nicht — die 72-Stunden-Frist des Händlers nach Art. 33 Abs. 1 DSGVO lässt sich auf diesem Weg nicht zuverlässig wahren.

KYTH unterhält einen dokumentierten Ablaufplan für Sicherheitsvorfälle mit Eskalationsstufen, benannten Zuständigkeiten, der 72-Stunden-Frist des Art. 33 DSGVO und der zuständigen Aufsichtsbehörde (Bayerisches Landesamt für Datenschutzaufsicht, BayLDA).

8.3 Datenschutz-Folgenabschätzung und vorherige Konsultation (Art. 35, 36 DSGVO)

Führt der Händler eine Datenschutz-Folgenabschätzung durch oder konsultiert er die Aufsichtsbehörde, stellt KYTH auf Anfrage die dafür erforderlichen Informationen über die Verarbeitung durch Kartuu zur Verfügung — insbesondere die Anlagen 1 und 2 dieses Vertrages sowie Auskunft über die eingesetzten Unterauftragsverarbeiter.


§ 9 Löschung oder Rückgabe nach Ende der Verarbeitung

9.1 Was wann geschieht

Ereignis Wirkung
Deinstallation der App (Webhook app/uninstalled) Access-Token und Refresh-Token werden sofort auf NULL gesetzt, der Zeitpunkt der Deinstallation wird vermerkt. Der Zugriff auf den Shop ist damit beendet. Die Datenzeile des Shops bleibt zunächst bestehen — samt Kontaktadresse und Zustimmungsnachweis, damit eine Neuinstallation innerhalb der Frist nach 9.3 Nr. 1 keine erneute Zustimmung erfordert.
Löschung des Shops (Webhook shop/redact, den Shopify regelmäßig 48 Stunden nach der Deinstallation sendet) Zuerst die hochgeladenen Bildmotive in der Bildablage, danach die Daten in der Datenbank. Letztere in einer Transaktion: zunächst alle Zeilen jeder Tabelle mit einer Shop-Zuordnung, danach die Datenzeile des Shops selbst — entweder verschwindet der Shop vollständig oder gar nicht. Die Reihenfolge ist zwingend, siehe 9.3 Nr. 6.
Ausbleiben von shop/redact Ein Aufräumlauf löscht die Shop-Zeile 30 Tage nach der Deinstallation über denselben Löschpfad — einschließlich der Bildmotive in der Bildablage und in derselben Reihenfolge: zuerst die Objekte, dann die Zeilen. Er läuft täglich, siehe § 9.3 Nr. 1.
Verbindung kam nie zustande (Zustimmung erteilt, Token-Abruf gescheitert — es gibt deshalb keinen Deinstallationszeitpunkt) Derselbe Aufräumlauf löscht die Shop-Zeile 90 Tage nach dem letzten Lebenszeichen, sofern weder Access- noch Refresh-Token hinterlegt sind. Siehe 9.3 Nr. 1.
Abgeschlossene Webhook-Kennungen werden 30 Tage nach Abschluss entfernt, unabhängig vom Shop. Siehe 9.3 Nr. 3.
Löschung einer einzelnen Person (Webhook customers/redact) Die Gutscheinzeilen dieser Person werden anonymisiert, nicht gelöscht: Empfängername, Absendername, Grußtext sowie Name und Adressen von Beschenktem und Käufer, jeweils samt Suchwert, werden geleert, die Kundennummer nur dann, wenn sie zu dieser Person gehört. Der bezahlte Gutschein bleibt bestehen. Einzelheiten in § 7.2.
Drei Jahre nach dem Anlegen eines Gutscheins Seine personenbezogenen Angaben werden geleert; Code, Zustand und Wert bleiben. Siehe § 9.3 Nr. 7.
Storno oder Erstattung einer Bestellung Die zugehörige Shopify-Geschenkkarte wird entwertet — nach einer Teilerstattung oder bei einer schon angebrochenen Karte erst auf Entscheidung des Händlers (§ 2.3). Die Gutscheinzeile bleibt bis zum Ablauf der Frist nach § 9.3 Nr. 7 oder bis zur Löschung des Shops.

Die zu leerenden Tabellen werden dabei nicht aus einer gepflegten Liste, sondern zur Laufzeit aus dem Datenbankkatalog ermittelt. Erfasst werden alle Tabellen im Schema public, die eine Spalte mit dem Namen shop_id tragen; der heutige Datenbestand fällt vollständig darunter. Der Aufräumlauf nach 9.3 Nr. 1 benutzt genau denselben Pfad. Fremdschlüssel zwischen diesen Tabellen werden erst am Ende der Transaktion geprüft, damit die Löschung in jeder Reihenfolge gelingt.

Die Bytes der hochgeladenen Bildmotive liegen nicht in der Datenbank, sondern in der Bildablage (§ 6.3); sie werden auf einem eigenen Weg gelöscht, siehe 9.3 Nr. 6.

9.2 Löschung oder Rückgabe — der Händler wählt

Nach Beendigung der Verarbeitung löscht KYTH sämtliche Daten des Händlers oder gibt sie nach Wahl des Händlers heraus (Art. 28 Abs. 3 lit. g DSGVO).

Die Wahl gehört vor die Deinstallation. Shopify fordert die Löschung in der Regel 48 Stunden nach der Deinstallation an, und KYTH führt sie dann aus (§ 9.1). Verlangt der Händler die Herausgabe, teilt er das deshalb vor der Deinstallation in Textform an datenschutz@kyth.systems mit und deinstalliert die App erst, nachdem er die Daten erhalten hat. Eine Mitteilung nach der Deinstallation kann KYTH nur erfüllen, solange die Daten noch nicht gelöscht sind. Ohne Mitteilung löscht KYTH.

Verlangt der Händler die Herausgabe, stellt KYTH die zu seinem Shop gespeicherten Daten innerhalb von 14 Tagen nach Zugang der Mitteilung in einem gängigen maschinenlesbaren Format (JSON) bereit. Eine automatische Ausleitung ist nicht umgesetzt; KYTH stellt die Daten in diesem Fall von Hand zusammen.

Zur Einordnung: Zu den technischen Daten des Shops — Shop-Domain, deren Hash, verschlüsselte Zugangstoken, verschlüsselte Kontaktadresse, Zustimmungsnachweis, zuletzt gelesener Abonnementstand, technische Zeitstempel und die Einträge des Protokolls über Zugriffe auf geschützte Kundendaten — gilt: Die Zugangstoken sind nach der Deinstallation ungültig. Die Wahl bleibt beim Händler.

Gutscheindaten. Verlangt der Händler die Herausgabe, gibt KYTH sie in JSON heraus, mit den verschlüsselten Feldern entschlüsselt. Der Gutscheincode gehört ausdrücklich dazu. Die Herausgabe geht ausschließlich an den Händler als Verantwortlichen und ausschließlich an die nach § 2a Nr. 4 hinterlegte Kontaktadresse.

Hochgeladene Bildmotive. Verlangt der Händler die Herausgabe, gibt KYTH sie als Dateien heraus — im hochgeladenen Format, also nicht in JSON verpackt. Eine Ausnahme gilt für SVG-Motive: Herausgegeben wird die bereinigte Fassung, denn nur die ist gespeichert (Anlage 2 Abschnitt 2.6). Die Ausgangsdatei liegt beim Händler und ist bei KYTH zu keinem Zeitpunkt aufbewahrt worden.

9.3 Vernichtung vorhandener Kopien — verbindliche Fristen

Art. 28 Abs. 3 lit. g DSGVO verlangt, dass KYTH nach Beendigung der Verarbeitung auch die vorhandenen Kopien vernichtet, soweit keine gesetzliche Aufbewahrungspflicht besteht. KYTH sagt dafür die folgenden Fristen zu.

Übersicht:

Was Frist Wodurch
Shop-Zeile samt allen Daten mit Shop-Zuordnung mit shop/redact, spätestens 30 Tage nach der Deinstallation Webhook, ersatzweise Aufräumlauf (Nr. 1)
Shop-Zeile ohne je zustande gekommene Verbindung (kein Deinstallationszeitpunkt, kein Token) 90 Tage nach dem letzten Lebenszeichen derselbe Aufräumlauf, zweite Regel (Nr. 1)
Personenbezogene Angaben eines Gutscheins (Empfänger, Absender, Grußtext, Käufer, Kundennummer) drei Jahre nach dem Anlegen des Gutscheins; spätestens mit dem Shop täglicher Aufräumlauf, sonst Löschpfad (Nr. 7)
Übrige Gutscheindaten samt Code mit dem Shop nach der ersten Zeile dieser Tabelle Löschpfad (Nr. 7)
Empfänger- und Absenderangaben einer einzelnen Person mit dem Eingang eines Löschverlangens nach Art. 17 Anonymisierung über customers/redact bzw. von Hand (Nr. 7, § 7.2)
Hochgeladene Bildmotive in der Bildablage mit shop/redact; bleibt der Webhook aus, mit dem Aufräumlauf nach Nr. 1, der täglich läuft eigener Löschschritt über den Namensraum des Shops, in beiden Fällen derselbe (Nr. 6)
Sicherung auf dem Server 30 Tage Aufräumschritt im Sicherungsskript (Nr. 2)
Sicherung im Objektspeicher 95 Tage (davon 90 Tage unlöschbar) Lebenszyklusregel im Eimer; das Sicherungsskript löscht dort nichts (Nr. 2)
Kennungen eingehender Webhooks 30 Tage nach Abschluss eigener Aufräumlauf (Nr. 3)
Anwendungs- und Containerprotokolle 14 Tage Einstellung im Betriebswerkzeug (Nr. 4)
  1. Wenn shop/redact ausbleibt: 30 Tage. Bleibt der Webhook aus — die Zustellung geht verloren, der Endpunkt ist vorübergehend nicht erreichbar, Shopify meldet ihn nie —, löscht ein Aufräumlauf die Shop-Zeile 30 Tage nach dem Deinstallationszeitpunkt vollständig, über denselben Löschpfad wie shop/redact. Wer die App versehentlich deinstalliert und bald neu installiert, behält so Zustimmung und Kontaktadresse. Zweiter Fall desselben Aufräumlaufs: nie zustande gekommene Verbindungen — 90 Tage. Scheitert nach der Zustimmung der Abruf des Zugangstokens bei Shopify, gibt es keinen Deinstallationszeitpunkt. Derselbe Aufräumlauf löscht deshalb über denselben Löschpfad einen Datensatz, der keinen Deinstallationszeitpunkt trägt, kein Zugangs- und kein Erneuerungstoken hat und dessen letztes Lebenszeichen länger als 90 Tage zurückliegt.

Schlüsselwechsel. Nach jedem Schlüsselwechsel werden die Suchhashes neu berechnet, damit eine Deinstallationsmeldung ihren Shop weiterhin findet.

Der Aufräumlauf startet mit der Anwendung und ruft beide Regeln alle 24 Stunden auf; denselben Lauf benutzen Nr. 3 und Nr. 7. 2. Sicherungen: 30 Tage auf dem Server, 95 Tage im Objektspeicher — davon 90 Tage unlöschbar. Es wird täglich nachts eine vollständige Sicherung der Datenbank erstellt und mit AES-256 verschlüsselt, bevor sie den Server verlässt. Sie liegt auf dem Server und im Objektspeicher der IONOS in Berlin, im Eimer kaspar-kyth-db-backup-worm.

Auf dem Server: 30 Tage. Das setzt das Sicherungsskript selbst durch, bei jedem Lauf.

Im Objektspeicher wirken zwei Mechanismen nacheinander. Zuerst ist die Sicherung durch Object Lock im COMPLIANCE-Modus 90 Tage lang für niemanden löschbar — auch nicht für KYTH selbst und auch nicht für jemanden, der den Server samt Zugangsdaten übernimmt. Danach löscht eine Lebenszyklusregel des Eimers (sicherungen-nach-95-tagen-loeschen, gesamter Eimer, 95 Tage nach Erstellung und ebenso 95 Tage für nicht mehr aktuelle Versionen) sie auf Speicherebene. Die fünf Tage Abstand sorgen dafür, dass die Löschung nicht auf eine noch gesperrte Sicherung trifft.

Das Sicherungsskript löscht im Objektspeicher nichts; aufgeräumt wird dort ausschließlich über die Lebenszyklusregel des Eimers.

Der Abzug ist verschlüsselt. Er wird symmetrisch mit AES-256 verschlüsselt, bevor er den Server verlässt; das Kennwort liegt auf dem Server und nicht im Objektspeicher. Die Übertragung zum Objektspeicher erfolgt mit TLS 1.3. Innerhalb der Sicherung liegen die schutzbedürftigen Felder zusätzlich feldweise mit AES-256-GCM verschlüsselt; der Schlüssel dafür steht allein in der Umgebung der Anwendung auf dem Server, nicht in der Sicherung und nicht im Objektspeicher. Die Wiederherstellbarkeit ist durch eine tatsächliche Wiederherstellung geprüft, und ein täglicher Prüflauf meldet ausgebliebene Sicherungen.

Gelöschte Daten in Sicherungen. Wird ein Shop gelöscht — durch shop/redact, durch den Aufräumlauf nach Nr. 1 oder auf Verlangen des Händlers —, bleiben seine Daten in bereits erstellten Sicherungen enthalten und verschwinden von dort erst mit dem Ablauf der genannten Fristen: spätestens 30 Tage später auf dem Server, spätestens 95 Tage später im Objektspeicher. Einzelne Datensätze werden aus vorhandenen Sicherungen nicht herausgeschnitten. Solange die Daten dort liegen, werden sie ausschließlich zur Wiederherstellung im Störungsfall verwendet. 3. Technische Webhook-Kennungen: 30 Tage nach Abschluss. Die Tabelle mit den Kennungen eingehender Webhooks (Duplikatschutz) trägt keine Shop-Zuordnung und wird vom Löschvorgang des Shops nicht erfasst. Ein eigener Aufräumlauf entfernt einen abgeschlossenen Eintrag 30 Tage nach seinem Abschluss. Inhaltlich sind das ausschließlich von Shopify vergebene technische Kennungen ohne Personenbezug. Einträge, deren Verarbeitung nie abgeschlossen wurde, bleiben stehen, damit derselbe Webhook nicht ein zweites Mal verarbeitet wird; auch sie haben keinen Personenbezug. 4. Anwendungs- und Containerprotokolle: 14 Tage. Sie enthalten die Shop-Domain, die interne Shop-Kennung, im Bestellablauf zusätzlich Bestell-, Positions- und Gutscheinkennung sowie den Fehlergrund als kurze eigene Kennung, und den Typ aufgetretener Ausnahmen — keine Token, keine Kontaktadresse, keinen Gutscheincode, keinen Empfänger- oder Absendernamen, keinen Grußtext und keine Kundenadresse. Nach 14 Tagen werden sie verworfen. Die Frist ist im Betriebswerkzeug eingestellt. 5. Protokoll über Zugriffe auf geschützte Kundendaten. Es trägt eine Shop-Zuordnung und verschwindet vollständig mit dem Shop — über shop/redact und über den Aufräumlauf nach Nr. 1. Eine eigene, kürzere Frist gibt es nicht, weil das Protokoll als Nachweis gegenüber Shopify dient. 6. Hochgeladene Bildmotive: mit shop/redact, und zwar vor allem anderen. Die Bildmotive haben keine eigene Frist. Sie werden aufbewahrt, solange der Händler die App benutzt, und mit dem Shop gelöscht.

Wie gelöscht wird. Jedes Objekt eines Shops liegt unter einem Schlüssel, der mit der Kennung dieses Shops beginnt. Gelöscht wird alles unter diesem Anfang — auch ein Objekt, dessen Upload abgebrochen ist, bevor seine Zeile geschrieben war. Die Objekte werden vor den Datenbankzeilen gelöscht; scheitert das, bleibt der Shop bestehen, und die Löschung wird wiederholt.

a) Der Aufräumlauf nach Nr. 1 geht denselben Weg, in derselben Reihenfolge: zuerst die Objekte, dann die Datenbankzeilen.

b) Nicht mehr genutzte Motive werden nicht aufgeräumt. Lädt ein Händler ein Motiv hoch und benutzt es nie oder nicht mehr, bleibt es liegen, solange sein Shop besteht. Eine Stelle in der App, an der ein Händler ein einzelnes Bild löschen kann, gibt es nicht. Wer das verlangt, wendet sich an datenschutz@kyth.systems (§ 7.3); die Löschung erfolgt dann von Hand. 7. Gutscheine: personenbezogene Angaben drei Jahre nach dem Anlegen. Drei Jahre nach dem Anlegen eines Gutscheins werden seine personenbezogenen Angaben geleert: Empfänger, dessen Adresse und deren Suchwert, Absender, Grußtext, Käufer, dessen Adresse samt Suchwert und die Kundennummer. Der Gutschein selbst bleibt bestehen — Code, Zustand und Wert —, denn er ist der Beleg über eine eingegangene Verpflichtung. Die Frist entspricht der Regelverjährung des Anspruchs aus dem Gutschein (§ 195 BGB); Buchungsbelege führt der Händler in seinem Shopify-Konto. Ausgeführt wird das täglich vom selben Aufräumlauf wie Nr. 1 und Nr. 3. Der Abruflink eines Gutscheins gilt nicht länger als diese Frist.

Die Zeilen tragen eine Shop-Zuordnung und verschwinden vollständig mit dem Shop, über shop/redact wie über den Aufräumlauf nach Nr. 1.

a) Die Löschung einer einzelnen Person löscht die Zeile nicht. Sie leert die personenbezogenen Felder und lässt Code, Zustand, Wert und Vorlagenabbild stehen (§ 7.2), weil der Gutschein bezahlt ist und eingelöst werden kann.

b) Für die beschenkte Person gibt es keinen Auslöser über Shopify. Verlangt sie die Löschung vor Ablauf der Frist, führt KYTH sie auf Weisung des Händlers von Hand aus (§ 7.2).

9.4 Gesetzliche Aufbewahrung

Besteht ausnahmsweise eine gesetzliche Pflicht zur weiteren Aufbewahrung, unterbleibt insoweit die Löschung; die Daten werden in ihrer Verarbeitung eingeschränkt und ausschließlich zu diesem Zweck verwendet. KYTH teilt dem Händler eine solche Aufbewahrung mit.


§ 10 Nachweise und Prüfrechte des Verantwortlichen

10.1 Nachweise

KYTH stellt dem Händler auf Anfrage an datenschutz@kyth.systems alle Informationen zur Verfügung, die zum Nachweis der Einhaltung der Pflichten aus Art. 28 DSGVO erforderlich sind. Regelmäßig genügen dafür:

10.2 Prüfungen

Reichen diese Nachweise im Einzelfall nicht aus, ermöglicht KYTH Überprüfungen einschließlich Inspektionen und trägt zu ihnen bei (Art. 28 Abs. 3 lit. h DSGVO). Der Händler kann die Prüfung selbst durchführen oder einen von ihm beauftragten Prüfer einsetzen, der nicht in Wettbewerb zu KYTH steht und zur Verschwiegenheit verpflichtet ist.

Prüfungen erfolgen nach Ankündigung mit angemessenem Vorlauf — in der Regel 30 Tage —, zu üblichen Geschäftszeiten, ohne Störung des Betriebsablaufs und höchstens einmal je Kalenderjahr; bei einem konkreten Anlass, insbesondere nach einer Verletzung des Schutzes personenbezogener Daten oder auf Verlangen einer Aufsichtsbehörde, auch darüber hinaus und kurzfristig.

10.3 Was eine Prüfung nicht umfassen kann

10.4 Behörden

KYTH unterstützt den Händler bei Prüfungen durch die zuständige Aufsichtsbehörde und erteilt dieser auf Verlangen unmittelbar Auskunft (Art. 31 DSGVO). KYTH informiert den Händler unverzüglich über behördliche Maßnahmen, die dessen Daten betreffen, soweit das rechtlich zulässig ist.


§ 11 Rangfolge und Schlussbestimmungen

  1. Dieser Vertrag geht den übrigen Vertragsbedingungen zwischen den Parteien vor, soweit es um die Verarbeitung personenbezogener Daten im Auftrag geht.
  2. Die Anlagen 1 und 2 sind Bestandteil dieses Vertrages.
  3. Änderungen und Ergänzungen bedürfen der Textform. Das gilt auch für die Aufhebung dieses Formerfordernisses.
  4. Ist eine Bestimmung unwirksam, bleibt der übrige Vertrag wirksam. Die Parteien ersetzen die unwirksame Bestimmung durch eine wirksame, die dem verfolgten Zweck am nächsten kommt.
  5. Es gilt deutsches Recht. Gerichtsstand ist, soweit gesetzlich zulässig, der Sitz von KYTH.
  6. Fortschreibungspflicht: Vertrag und Anlagen geben den im Kopf genannten Stand der Software wieder. Vor jeder Erweiterung, die den Kreis der verarbeiteten Daten verändert, werden Anlage 1 und Anlage 2 neu erhoben und der Vertrag nach § 0.3 in neuer Fassung vorgelegt.

§ 12 Was Sie als Händler tun müssen

Die Pflichten aus § 2a stehen dort im Vertragston. Hier stehen sie noch einmal kurz und im Klartext, damit Sie nach dem Lesen wissen, was Sie übernommen haben.

  1. Halten Sie Ihre Kontaktadresse aktuell. Die E-Mail-Adresse, die Sie beim Verbinden der App angegeben haben, ist unser einziger Weg zu Ihnen — bei einer Datenpanne, bei einer Vertragsänderung, bei einem Wechsel eines Unterauftragsverarbeiters. Ändert sie sich, schreiben Sie uns an datenschutz@kyth.systems. Wird sie unzustellbar, erreichen wir Sie nicht mehr, und die 72 Stunden aus Art. 33 Abs. 1 DSGVO laufen trotzdem (§ 2a Nr. 4, § 8.2).
  2. Sorgen Sie für die Rechtsgrundlage. Für die Verarbeitung der Daten Ihrer Kundschaft brauchen Sie eine Rechtsgrundlage nach Art. 6 DSGVO. Wir prüfen sie nicht und können sie nicht prüfen.
  3. Informieren Sie Ihre Kundschaft und die Beschenkten. Die Informationspflichten nach Art. 13 und Art. 14 DSGVO treffen Sie, nicht uns. Beschenkte geben ihre Daten nicht selbst — dafür gilt Art. 14 DSGVO. Nehmen Sie Kartuu in Ihre eigene Datenschutzerklärung auf.
  4. Beantworten Sie Anfragen betroffener Personen selbst. Wendet sich jemand an uns, leiten wir die Anfrage an Sie weiter und beantworten sie nicht (§ 7.1).
  5. Melden Sie Datenpannen selbst an Ihre Aufsichtsbehörde. Wir melden Ihnen den Vorfall; die Meldung nach Art. 33 DSGVO und die Benachrichtigung der Betroffenen nach Art. 34 DSGVO machen Sie (§ 8.2).
  6. Erteilen Sie Weisungen in Textform. Einzelweisungen gehen an datenschutz@kyth.systems. Was Sie mündlich sagen, bestätigen Sie uns bitte unverzüglich in Textform (§ 3.2).

Anlage 1 — Verarbeitungsübersicht

Gibt den im Kopf genannten Stand der Software wieder. Nachweise zu einzelnen Angaben erhält der Händler nach § 10 auf Anfrage an datenschutz@kyth.systems; einer Aufsichtsbehörde legt KYTH sie auf Verlangen vor (Art. 31 DSGVO).

Angaben nach Art. 30 Abs. 2 DSGVO

Angabe Inhalt
Auftragsverarbeiter KYTH. Systems UG (haftungsbeschränkt), Prof.-Mederer-Straße 4, 92348 Berg, datenschutz@kyth.systems
Verantwortliche, in deren Auftrag verarbeitet wird die Händler, die Kartuu verbunden haben — je Shop geführt über die myshopify-Domain (Name) und die beim Vertragsschluss hinterlegte E-Mail-Adresse (Kontaktdaten), Art. 30 Abs. 2 lit. a DSGVO
Kategorien der Verarbeitungen Installation und Betrieb der App, Erfüllung der Datenschutz-Webhooks, Nachweis über Zugriffe auf geschützte Kundendaten, Feststellung des Abonnementstands, Erzeugung der Gutscheinkarte aus Eingaben des Händlers, Aufbewahrung der vom Händler hochgeladenen Bildmotive, Einrichtung des Gutscheinprodukts, Abwicklung einer bezahlten Gutscheinbestellung, Kartenvorschau auf der Produktseite, Betriebsdiagnose (§ 1.3)
Kategorien betroffener Personen Händler und die für ihn handelnden Personen, Käuferinnen und Käufer, beschenkte Personen, schenkende Personen, Personen auf einem hochgeladenen Bildmotiv (§ 2.1)
Übermittlungen in Drittländer an Shopify-Stellen außerhalb des EWR, siehe § 3.4
Maßnahmen nach Art. 32 Abs. 1 DSGVO Anlage 2

Die vollständigen Firmendaten des Händlers (Firmierung, Anschrift, Vertretung) erhebt KYTH nicht; sie ergeben sich aus dem Shopify-Konto des Händlers und werden bei einer Anfrage nach Art. 31 DSGVO über die hinterlegte Kontaktadresse erfragt.

Garantien nach Art. 30 Abs. 2 lit. c DSGVO. Für Übermittlungen an Shopify-Stellen außerhalb des EWR: die EU-Standardvertragsklauseln nach Durchführungsbeschluss (EU) 2021/914, einbezogen über Shopifys Data Processing Addendum in der Fassung vom 07.07.2026. Für Kanada daneben der Angemessenheitsbeschluss 2002/2/EG. Einzelheiten stehen in § 3.4.

A. Tatsächlich gespeicherte Daten

Die genannten Daten liegen in der PostgreSQL-Datenbank auf dem Server in Berlin und gehen in die Sicherungen nach § 9.3 Nr. 2 ein — mit einer Ausnahme: Von den hochgeladenen Bildmotiven steht nur die Beschreibung in der Datenbank. Die Bytes liegen in der Bildablage (§ 6.3) und sind nicht Teil der Datenbanksicherung. Für sie gibt es keine Sicherung; geht die Ablage verloren, sind sie weg.

Datenkategorie Betroffene Personen Zweck Speicherform Dauer / Löschung
Shop-Domain im Klartext (z. B. beispielshop.myshopify.com) Händler (mittelbar) Zuordnung des Mandanten, Adressierung des Shopify-Token-Endpunkts, Zuordnung eingehender Webhooks Tabelle shops, unverschlüsselt Nicht bei Deinstallation. Mit shop/redact, spätestens 30 Tage nach Deinstallation — über den täglichen Aufräumlauf nach § 9.3 Nr. 1 auch dann, wenn Shopify den Webhook nicht zustellt
Shop-Domain als HMAC-Hash Händler (mittelbar) Suchindex: jede Abfrage im Produktivbetrieb läuft über den Hash statt über den Klartext Tabelle shops, nicht umkehrbar wie Shop-Domain
Shopify Access-Token (Zugangsdatum; kein Personendatum im engeren Sinn, aber Schlüssel zu personenbezogenen Daten im Shop) — Zugriff auf die Shopify Admin API im Namen des Händlers. Wird für alle fünfundzwanzig Aufrufe an die Admin-API verwendet (§ 3.4), darunter die Abfrage des Abonnementstands (§ 2.3; siehe die Zeile Abonnementstand des Shops) — nicht für den Abruf von Bestell- oder Kundendatenfeldern Tabelle shops, AES-256-GCM verschlüsselt Bei Deinstallation sofort auf NULL; Ablauf ohnehin nach 1 Stunde; endgültig mit der Zeile
Shopify Refresh-Token (Zugangsdatum) — Erneuerung des einstündigen Access-Tokens ohne erneute Anmeldung des Händlers Tabelle shops, AES-256-GCM verschlüsselt Bei Deinstallation auf NULL; bei Verwerfen durch Shopify sofort; regulärer Ablauf nach 90 Tagen; endgültig mit der Zeile
Auftritt des Shops: frei gewählter Anzeigename für die Gutscheinkarte und der Schlüssel des als Logo gewählten Bildes Händler (unmittelbar — er trägt beides selbst ein) Den Namen des Ladens statt der technischen Shop-Adresse auf die Karte setzen und sein Logo darauf zeigen. Ohne Eintrag steht dort weiterhin die aus der Shop-Adresse abgeleitete Bezeichnung, und die Karte trägt kein Logo Tabelle shops, unverschlüsselt — beides steht auf jeder gedruckten Karte, die der Händler selbst verteilt, und ist damit kein Geheimnis. Als Kategorie trotzdem benannt: Bei einem Einzelunternehmen kann der Anzeigename der Name einer Person sein. Datenbankseitig erzwungen: höchstens 60 Zeichen und nicht leer, und der Logoschlüssel muss im Namensraum genau dieses Shops liegen wie Shop-Domain
Abonnementstand des Shops: ob ein aktives Abonnement besteht, Tarifname, Kennzeichen „von Shopify ausgestelltes Testabonnement“, Zeitpunkt der letzten Abfrage Händler (mittelbar) Durchsetzung der Bezahlschranke an drei Stellen — dem Einrichten des Gutscheinprodukts, dem Korrekturabzug und der Zustellsperre, die ohne Tarif den automatischen Versand anhält — und Anzeige des Tarifs im Adminbereich. Die Erzeugung eines bezahlten Gutscheins ist ausdrücklich nicht verriegelt. Zwischengespeichert, damit nicht jede dieser Anfragen einen Aufruf bei Shopify auslöst Tabelle shops, unverschlüsselt. Datenbankseitig erzwungen: „aktiv“ nur mit Prüfzeitpunkt wie Shop-Domain
Eingelöster Aktionscode des Shops: der Code und der Zeitpunkt der Einlösung Händler Nachweis, dass und wann der Händler ein Aktionsangebot angenommen hat; KYTH trägt den Rabatt danach von Hand bei Shopify ein (Nutzungsvertrag § 5). Eine Meldung mit Shop-Domain, Code, Zeitpunkt, Abonnementstand und ob Kartuu installiert ist geht vom Server an KYTHs eigenes Postfach bei der INWX GmbH, Berlin (deploy/server/aktionscodes-melden.sh). Das ist KYTHs eigene Verarbeitung als Vertragspartner, keine im Auftrag des Händlers; Kundendaten enthält die Meldung nicht, INWX ist deshalb kein Unterauftragsverarbeiter dieses Vertrages Tabelle shops, unverschlüsselt. Datenbankseitig erzwungen: Code nur mit Zeitpunkt. Auf dem Server ein Vermerk über schon gemeldete Einlösungen (Domain und Zeitpunkt), der bei jedem stündlichen Lauf auf die Einlösungen in der Datenbank gekürzt wird wie Shop-Domain
Kontaktadresse des Händlers (E-Mail) Händler bzw. die von ihm benannte natürliche Person Mitteilungen nach § 0.3, § 6.6 und § 8.2; höchstens täglicher Hinweis auf Bestellungen, die Aufmerksamkeit brauchen, über den Mailzugang des Händlers (§ 2a Nr. 4); Weiterleitung von Anfragen betroffener Personen nach § 7.1; Angabe nach Art. 30 Abs. 2 lit. a DSGVO Tabelle shops, AES-256-GCM verschlüsselt. Ohne Suchhash — nach der Adresse sucht niemand, sie wird über die Shop-Domain gefunden wie Shop-Domain
Nachweis der Zustimmung: Zeitpunkt und Fassungskennung Händler (mittelbar) Nachweis des Vertragsschlusses nach § 0.2 Tabelle shops, unverschlüsselt. Datenbankseitig erzwungen: entweder alle drei Zustimmungsangaben oder keine wie Shop-Domain
Technische Metadaten des Shops: Ablauf- und Rotationszeitpunkte der Token, Token-Version, Zeitpunkt der Installation und der Deinstallation, Berechtigungsumfang (Scopes) Händler (mittelbar) Steuerung des Token-Lebenszyklus, Auflösen von Wettläufen bei gleichzeitigen Installationen, Erkennen verspäteter Deinstallations-Webhooks Tabelle shops, unverschlüsselt wie Shop-Domain
Einstellungen und Einrichtungsstand des Shops: gewählte Sprache der Gutscheine, ob und wann die Einrichtung abgeschlossen wurde, wann die Kartuu-Blöcke im Theme erstmals gesehen wurden, technische Zeitpunkte versandter Hinweise Händler (mittelbar) Karten, Mails und Abrufseite in der gewählten Sprache ausgeben; dem Händler anzeigen, welche Einrichtungsschritte erledigt sind Tabelle shops, unverschlüsselt wie Shop-Domain
Hausfarben des Shops: bis zu zwölf vom Händler gespeicherte Farbwerte (Hexcodes) Händler an jeder Farbwahl der Gestaltung zum Anklicken anbieten; gedruckt wird davon nichts, die Farben einer Karte stehen in ihrem Dokument Tabelle shops, unverschlüsselt. Datenbankseitig erzwungen: eine Liste mit höchstens zwölf Einträgen wie Shop-Domain
Stand der Bewertungsfrage: wann Kartuu Shopifys eigene Bitte um eine Bewertung aufgerufen hat und Shopifys Rückmeldung dazu (etwa „gerade nicht“ oder „schon bewertet“) Händler (mittelbar) nicht öfter fragen, als Shopify zulässt, und nicht mehr, wenn schon bewertet wurde. Den Text der Bitte und eine etwaige Bewertung sieht Kartuu nicht Tabelle shops, unverschlüsselt wie Shop-Domain
Zugangsdaten des Händlers für den Versandweg (SMTP): Mailserver und Port, Absenderadresse und Antwortadresse, wahlweise Benutzername und Passwort, dazu der Schalter für den automatischen Versand Händler bzw. die von ihm benannte natürliche Person Zustellung des fertigen Gutscheins im Auftrag des Händlers über seinen Mailzugang (§ 1.1). Ohne hinterlegten Zugang wird nichts zugestellt Tabelle shops. Benutzername und Passwort AES-256-GCM verschlüsselt — dieselbe Verschlüsselung wie die Zugangstoken; das Passwort wird nie wieder ausgeliefert. Mailserver, Port, Absenderadresse und Antwortadresse liegen im Klartext; sie stehen ohnehin in jedem Mailkopf, den der Händler verschickt. Ob ein Versandweg eingerichtet ist, hinterlegt Kartuu als Ja oder Nein an der App-Installation bei Shopify (§ 3.4). Datenbankseitig erzwungen: entweder kein Mailserver — oder Mailserver, Port, Absender und Antwortadresse; Benutzername und Passwort nur paarweise; als Port ausschließlich 465, 587 oder 2525 wie Shop-Domain
Gespeicherte Gestaltungen (Entwürfe): Name und das vollständige Gestaltungsdokument einer Kartenvorlage, bei einer im Reiter „Karte“ angelegten Gestaltung dazu die Einstellungen, aus denen sie entstand (Vorlage, Faltung, Farbwünsche, Lage der Motive), und die Zeitpunkte von Anlage und letzter Änderung Händler (unmittelbar — er gestaltet sie im Editor) Der Händler soll eine begonnene Gestaltung wiederfinden und weiterverwenden. Das Dokument beschreibt Ebenen, Texte, Platzhalter und das gewählte Motiv — keine Angaben zu einer Person; die Platzhalter werden erst beim Rendern gefüllt Tabelle entwuerfe mit Shop-Zuordnung, unverschlüsselt. Zeilenschutz auf Datenbankebene wie Shop-Domain
Motive eines Gutscheins: die Schlüssel der Bilder, die zu einem einzelnen Gutschein gehören Händler (mittelbar) Ein bereits ausgestellter Gutschein muss sich unverändert erneut zeichnen lassen, auch wenn der Händler seine Gestaltung inzwischen geändert hat Tabelle gutschein_assets mit Shop-Zuordnung, unverschlüsselt. Zeilenschutz auf Datenbankebene wie Shop-Domain
Vorfälle einer Bestellung: Bestell- und Positionskennung, ein Grund als kurze Kennung sowie die Zeitpunkte des Bemerkens und des Erledigens eigene Anwendung Dem Händler sichtbar machen, dass eine bezahlte Bestellung hängt — etwa weil Angaben fehlen. Kein Freitext und keine Personenangabe; der Grund stammt aus einem festen Vokabular Tabelle bestellvorfaelle mit Shop-Zuordnung, unverschlüsselt. Zeilenschutz auf Datenbankebene wie Shop-Domain
Fehlversuche des Gastnachweises: Bestellkennung und Zeitpunkt eines Versuchs im Kartuu-Block, bei dem die eingegebene E-Mail-Adresse nicht zur Bestellung passte Käuferin bzw. Käufer (mittelbar) Die Fehlversuche je Bestellung und je Shop begrenzen, damit sich Adressen nicht durchprobieren lassen. Ein Versuch mit passender Adresse zählt nicht Tabelle gastnachweis_fehlversuche mit Shop-Zuordnung, unverschlüsselt. Keine Adresse, auch kein Suchwert davon. Zeilenschutz auf Datenbankebene. Kein Änderungsrecht Nach einer Stunde beim nächsten Versuch im selben Shop gelöscht, sonst vom täglichen Aufräumlauf — spätestens nach einem Tag; mit dem Shop ohnehin
Webhook-Kennungen: die von Shopify vergebene Webhook-ID mit Status und den Zeitpunkten von Anspruch und Abschluss Kopfzeile der eingehenden Anfrage Duplikatschutz — dieselbe Meldung darf nicht zweimal verarbeitet werden. Kein Personenbezug, die Kennung beschreibt die Zustellung und nicht ihren Inhalt Tabelle webhook_claims, ohne Shop-Zuordnung und unverschlüsselt 30 Tage nach Abschluss (§ 9.3 Nr. 3)
Zustimmungen — der Verlauf: je erteilter Zustimmung die Shop-Zuordnung, die Fassungskennung und der Zeitpunkt Händler (mittelbar) Nachweis nach § 0.2 über die Zeit, auch für ältere Fassungen Tabelle zustimmungen mit Shop-Zuordnung, unverschlüsselt. Keine personenbezogene Angabe — die Kontaktadresse steht dort nicht wie Shop-Domain
Protokoll über Zugriffe auf geschützte Kundendaten: Shop-Zuordnung, Zeitpunkt, Akteur, Zweck, berührte Feldkategorien, Anzahl der Datensätze Händler (mittelbar) Auflage aus der Shopify-Freigabe für geschützte Kundendaten; Nachweis nach Art. 5 Abs. 2 DSGVO. Belegt, dass zugegriffen wurde, nicht welche Inhalte Eigene Tabelle, bewusst ohne jede Spalte, die einen Namen, eine Anschrift, eine E-Mail-Adresse oder eine Gutscheinnummer aufnehmen könnte Vollständig mit dem Shop — Fremdschlüssel mit Löschweitergabe und zusätzliches ausdrückliches Löschen. Siehe § 9.3 Nr. 5
Hochgeladene Bildmotive — die Bytes. Das Bild in der Form, in der es abgelegt wurde: bei Rastern (JPEG, PNG, WebP) auf höchstens 2000 Pixel Kantenlänge gerechnet, wenn das Bild größer war, dann neu kodiert; in jedem Fall ohne die eingebetteten Aufnahmedaten (EXIF, XMP, IPTC) bis auf die Ausrichtung; bei SVG die um alles Ausführbare bereinigte Fassung (Anlage 2 Abschnitt 2.6) Händler (mittelbar). Zusätzlich jede Person, die auf dem Bild zu sehen ist oder in dessen Aufnahmedaten steht — was das ist, bestimmt allein der Händler Zeichnen des Motivs auf der Gutscheinkarte, in der Vorschau und im PDF (§ 1.3 Nr. 6). KYTH sieht den Inhalt nicht durch und wertet ihn nicht aus Im laufenden Betrieb eine Dateiablage auf dem Server in Berlin, auf einem dauerhaften Datenträger (§ 6.3). Keine allgemein lesbare Adresse; ausgeliefert wird ein Motiv nach Prüfung der Sitzung des Händlers oder über eine signierte, nach ein bis zwei Stunden ungültige Adresse — auch an Besuchende der Produktseite, wenn es zur Gestaltung eines Gutscheinprodukts gehört (§ 2.2). Schlüssel <Shop-Kennung>/<Prüfsumme>.<Endung>, serverseitig aus der Kennung des hochladenden Shops gebildet und nie aus einer Angabe der Anfrage — der Anfang gehört damit genau einem Shop. Nicht in der Datenbanksicherung Mit shop/redact oder dem Aufräumlauf nach § 9.3 Nr. 1, über den Namensraum des Shops und vor den Zeilen. Nicht mehr genutzte Motive werden nicht aufgeräumt, und die App hat keine Löschfunktion für einzelne Bilder (§ 9.3 Nr. 6)
Hochgeladene Bildmotive — die Angaben darüber: Schlüssel, MIME-Typ, Größe in Byte, Breite und Höhe in Pixeln, Prüfsumme (SHA-256 der gespeicherten Bytes), Zeitpunkt des Hochladens. Größe und Prüfsumme beschreiben die Datei beim Hochladen; bei Bildern von vor dem 23.09.2026 also die Fassung, die noch Aufnahmedaten trug Händler (mittelbar) Auflisten der Bilder eines Shops und Anzeigen ihres Seitenverhältnisses, ohne jedes Bild dafür aus der Bildablage holen zu müssen Eigene Tabelle mit Shop-Zuordnung, unverschlüsselt. Zeilenschutz auf Datenbankebene. Datenbankseitig erzwungen: Schlüsselform, Prüfsummenform, ein festes Vokabular für den MIME-Typ, positive Maße, Eindeutigkeit je Shop und Schlüssel. Kein Änderungsrecht — ein Schlüssel beschreibt den Inhalt, unter dem er liegt wie Shop-Domain (Fremdschlüssel mit Löschweitergabe und ausdrückliches Löschen)
Gutschein — die Angaben zur beschenkten und zur schenkenden Person: Empfängername, E-Mail-Adresse des Beschenkten, Absendername, Grußtext Beschenkte (zugleich als betroffene Person und als Empfängerin des Gutscheins, § 2.1), schenkende Person Die Karte drucken; die Adresse für die vorgesehene Zustellung. Herkunft ist die bezahlte Bestellung, nicht die Eingabe des Händlers Tabelle gutscheine, jedes Feld einzeln AES-256-GCM verschlüsselt. Daneben ein nicht umkehrbarer Suchwert über die E-Mail-Adresse — der einzige Weg, eine beschenkte Person wiederzufinden, denn sie hat keine Kundennummer. Datenbankseitig erzwungen: Chiffratform je verschlüsselter Spalte, 64 Hexzeichen je Suchwert. Zeilenschutz auf Datenbankebene Mit dem Shop (§ 9.3 Nr. 7). Drei Jahre nach dem Anlegen werden diese Felder geleert (§ 9.3 Nr. 7). Auf ein Löschverlangen nach Art. 17 werden sie sofort geleert, die Zeile bleibt (§ 7.2)
Gutschein — die Angaben zum Käufer: Shopify-Kundennummer, dazu Name des Käufers und E-Mail-Adresse des Käufers Käuferin bzw. Käufer Die Kundennummer ist Suchschlüssel der beiden Datenschutz-Webhooks und zeigt im Kartuu-Block, ob die angemeldete Person die Gutscheine ihrer Bestellung sehen darf. Name und E-Mail-Adresse sieht der Händler in der Einzelansicht der Bestellung; die E-Mail-Adresse dient außerdem dem Abgleich, wenn eine Person ohne Kundenkonto im Kartuu-Block ihre Adresse eingibt (Abschnitt B) Tabelle gutscheine. Die Kundennummer im Klartext, damit eine Anfrage nach Art. 15 oder 17 sie findet; bei einem Gastkauf fehlt sie. Name und E-Mail-Adresse AES-256-GCM verschlüsselt, daneben ein nicht umkehrbarer Suchwert über die Adresse — über ihn findet eine Anfrage nach Art. 15 oder 17 auch einen Käufer ohne Kundennummer Drei Jahre nach dem Anlegen geleert (§ 9.3 Nr. 7), sonst mit dem Shop. Bei einer Löschung nach Art. 17 werden Name und Adresse samt Suchwert geleert, die Kundennummer nur dann, wenn sie zu der gesuchten Person gehört
Gutschein — der Code und der Abruf-Token kein unmittelbarer Personenbezug; beides sind Schlüssel zu einem Vermögenswert einer betroffenen Person Der Code steht auf der Karte und wird an der Kasse eingelöst; Shopify gibt ihn genau einmal heraus und danach nie wieder. Der Abruf-Token adressiert den späteren Abruf des PDF Tabelle gutscheine, beide AES-256-GCM verschlüsselt, daneben je ein nicht umkehrbarer Suchwert. Der Suchwert des Codes ist zugleich der Riegel dagegen, denselben Code zweimal zu vergeben. Datenbankseitig erzwungen: Chiffrat- und Hashform, Code und Suchwert nur paarweise, kein Änderungsrecht auf dem Abruf-Token — der Link kann bereits hinausgegangen sein: an die beschenkte Person mit der Zustellmail, sofern der Händler einen Versandweg hinterlegt hat, und an die kaufende Person im Kartuu-Block, sofern der Händler ihn platziert hat und die Prüfung nach Abschnitt B gelingt. Über die Bestellbestätigung von Shopify geht er nicht hinaus wie oben. Bei einer Löschung nach Art. 17 bleiben beide stehen (§ 7.2, § 9.3 Nr. 7 a)
Gutschein — die Angaben über die Bestellung und den Vorgang: Bestellkennung, Positionskennung, laufende Nummer des Stücks, Art, Nennwert und Währung, gedruckter Betrag als Text, Shopname, Gültigkeitsdatum, Kennung der Shopify-Geschenkkarte, Zustand, Zeitpunkt des letzten Zustandswechsels, Kennzeichen „Angaben unvollständig" und „nach Versand geändert", Fehlerzähler, Fehlergrund als kurze Kennung, eine offene Frage an den Händler nach einer Erstattung (welche Frage, bei einer Teilerstattung die Zahl der noch zu entscheidenden Stücke, seit wann), Kennung der gewählten Kartenvorlage, Zustellweg des Stücks, der Beginn der Abruffrist (der Zeitpunkt des letzten Versands; ohne Versand gilt der Zeitpunkt der Anlage), der gewünschte Versandtermin (die Angabe der kaufenden Person aus der Bestellposition — ohne Angabe geht der Gutschein hinaus, sobald er fertig ist; der Händler kann ihn mit „Jetzt senden“ aufheben), der Zeitpunkt der beanspruchten Zustellung (ein technischer Vermerk, der verhindert, dass mehrere Arbeitsprozesse dieselbe Karte gleichzeitig verschicken), die Sprache des Stücks (beim Ausstellen aus der Einstellung des Shops festgeschrieben und danach unveränderlich — Karte, Mail und Abrufseite richten sich danach) der Kopf der Bestellung: Bestellnummer, Zeitpunkt der Bestellung, Gesamtbetrag mit Währung, Zahlungsart und Verkaufskanal, sowie der Rabatt, mit dem das Stück gekauft wurde: Betrag mit Währung, Code oder Titel des Rabatts und ob er der ganzen Bestellung galt (nur zur Anzeige — die Karte behält ihren vollen Wert) Käuferin bzw. Käufer (mittelbar) Die Bestellung dem Gutschein zuordnen, den Ablauf steuern — einschliesslich des Tages, an dem der Gutschein hinausgehen soll; er bremst allein den Versand, nicht die Erzeugung — und die Karte ohne den Webhook-Körper fertigstellen können. Ein Guthabenstand steht hier nicht und bekommt keine Spalte — den führt allein Shopify Tabelle gutscheine, unverschlüsselt. Datenbankseitig erzwungen: ein festes Vokabular für Art und Zustand, positive Kennungen, laufende Nummer ab 1, Fehlergrund nur als [a-z0-9_]-Kennung — niemals eine durchgereichte Fremdmeldung, die Empfängername und Code zitieren könnte, Nennwert nur bei Wertgutscheinen und nur zusammen mit einer Währung, sowie Vollständigkeit ab dem Zustand „bereit" wie oben
Gutschein — das eingefrorene Abbild der Kartenvorlage kein Personenbezug Ein Nachdruck soll dieselbe Karte ergeben, auch wenn der Händler seine Vorlage geändert hat Tabelle gutscheine, JSONB. Es trägt Platzhalter statt Werten; die personenbezogenen Werte stehen daneben in eigenen, einzeln verschlüsselten Spalten wie oben
Zuordnung der Bildmotive zu einem Gutschein: Schlüssel des benutzten Bildes mittelbar über das Bild (siehe die Zeile zu den Bildmotiven) Ein Motiv, das ein ausgestellter Gutschein benutzt, darf nicht gelöscht werden — und der Händler soll erfahren, wie viele Gutscheine betroffen sind Eigene Tabelle mit Shop-Zuordnung, Zeilenschutz auf Datenbankebene, kein Änderungsrecht: Welche Bilder in einer ausgestellten Karte stecken, ist eine Tatsache über die Vergangenheit. Fremdschlüssel auf Gutschein und Bild, letzterer erst beim Abschluss der Transaktion geprüft wie oben
Gutscheinprodukt des Shops: Art, Shopify-Produktkennung, Handle, gewählte Kartenvorlage, Zeitpunkt des Anlegens kein Personenbezug — eine Produktkennung, ein Handle und zwei Kennungen aus eigenem Vokabular Zweimaliges Anlegen verhindern; den eingerichteten Stand anzeigen; eine Gutscheinposition auch dann erkennen, wenn ein Theme keine Zusatzangaben mitschickt Eigene Tabelle mit Shop-Zuordnung, unverschlüsselt, Zeilenschutz auf Datenbankebene. Je Shop beliebig viele Zeilen, jede Shopify-Produktkennung nur einmal. Kein Änderungsrecht auf den Angaben, die das Produkt beschreiben — Art, Produktkennung, Handle und gewählte Vorlage stehen fest, sobald angelegt ist. Änderbar sind allein die Felder, die den Stand des Produktbilds führen (Entwurf, Medienkennung, Stand, Fälligkeit, Versuche und Grund) — sie beschreiben einen laufenden Arbeitsschritt und nicht das Produkt wie Shop-Domain
Kennungen eingehender Webhooks: von Shopify vergebene Webhook-Kennung, Status, Zeitpunkte kein Personenbezug Duplikatschutz — verhindert, dass Wiederholungen von Shopify denselben Webhook mehrfach verarbeiten Eigene Tabelle ohne Shop-Zuordnung 30 Tage nach Abschluss, siehe § 9.3 Nr. 3
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 MIME-Typ des angenommenen Bildes bzw. der Grund einer Ablehnung (Format, Maße, Ergebnis der SVG-Bereinigung) — nie der Schlüssel, nie die Prüfsumme, nie ein Dateiname und nie ein Ausschnitt des Bildes —, sowie der Typ aufgetretener Ausnahmen Händler (mittelbar) Betriebsdiagnose (fehlgeschlagene Anlage eines Shops, fehlgeschlagener Token-Tausch, unbekannter Shop bei Webhooks, fehlgeschlagenes Schreiben des Zugriffsprotokolls, nicht abrufbarer Abonnementstand, gescheitertes Rendern, nicht erreichbarer Objektspeicher) Standardausgabe des Containers, eingesammelt auf dem Server. Nicht protokolliert werden Access-, Refresh- und Sitzungstoken sowie die Kontaktadresse — auch nicht gekürzt. Im Fehlerfall wird in der Regel nur der Ausnahmetyp geschrieben; die Fälle, in denen zusätzlich die Meldung im Protokoll steht, nennt Anlage 2 Abschnitt 1.4 14 Tage, siehe § 9.3 Nr. 4
Signierte Webhooks zu Shops ohne Zustimmung: Shop-Domain aus dem signierten Inhalt, von Shopify vergebene Webhook-Kennung Händler (mittelbar) Entgegennahme der von Shopify verpflichtend abonnierten Webhooks, bevor oder ohne dass der Händler dem Vertrag zugestimmt hat (§ 0.1). Rechtsgrundlage Art. 6 Abs. 1 lit. f, ergänzend lit. c DSGVO Kein Datensatz zum Shop. Die Webhook-Kennung in der Duplikatschutz-Tabelle; die Shop-Domain nur im Anwendungsprotokoll, wenn kein Shop zu ihr gehört Webhook-Kennung 30 Tage nach Abschluss (§ 9.3 Nr. 3), Protokollzeile 14 Tage (§ 9.3 Nr. 4)

B. Nur flüchtig berührte Daten — keine Speicherung

Datenkategorie Betroffene Personen Zweck Warum keine Speicherung
Shopify-Sitzungstoken des eingeloggten Händler-Nutzers (JWT) Händler und die für ihn handelnden Personen Authentifizierung des Aufrufs, Ermittlung der Shop-Domain, Weitergabe an den Shopify-Token-Tausch Nicht in der Datenbank, nicht im Protokoll, nicht im Browserspeicher, nicht in der Adresszeile. Der Fehlerpfad protokolliert ausdrücklich nur „Sitzungstoken abgelehnt“ ohne Grund und ohne Inhalt. Der Token selbst ist kurzlebig
Shopify-Kundenkennung und E-Mail-Adresse aus den Webhooks customers/data_request und customers/redact Endkundschaft des Händlers; über die Adresse mittelbar auch eine beschenkte Person Bearbeitung von Auskunfts- und Löschverlangen nach Art. 15 und Art. 17 DSGVO Der Webhook-Inhalt wird zur Signaturprüfung vollständig eingelesen und danach verworfen. Shopify sendet in diesen Webhooks weitere Kundendaten (unter anderem Telefonnummer und Anschrift); ausgelesen werden ausschließlich Kundenkennung und E-Mail-Adresse. Die Adresse wird nicht gespeichert, sondern nur zum Suchwert verrechnet — ohne sie fände die Anfrage keine Zeile einer beschenkten Person und keine eines Käufers ohne Kundennummer
Der Inhalt einer eingehenden Bestellung, soweit er nicht in eine Gutscheinzeile übernommen wird — insbesondere Positionen ohne Gutschein, Anschriften, Telefonnummern und Zahlungsangaben Endkundschaft des Händlers Erkennen, welche Positionen einer bezahlten Bestellung Gutscheine sind Der Körper wird zur Signaturprüfung vollständig eingelesen. Übernommen wird ausschließlich, was in Abschnitt A steht; alles Übrige wird nicht ausgewertet und im Arbeitsspeicher verworfen. Für keines davon gibt es eine Spalte
Das gerenderte PDF eines bestellten Gutscheins Beschenkte, schenkende Personen Prüfen, dass die Karte druckbar ist — „bereit" heißt „PDF gerendert" Es entsteht im Arbeitslauf und wird danach verworfen; eine Spalte dafür gibt es nicht. Das eingefrorene Vorlagenabbild und die gespeicherten Werte ergeben das Dokument jederzeit wieder
Probeangaben bei der Gestaltung: Empfängername, Absendername, Grußtext, Gutscheincode, Betrag, Shopname, Gültigkeitsdatum — sowie die daraus erzeugte HTML-Vorschau und das PDF Beschenkte, schenkende Personen (soweit der Händler solche Namen einträgt) Erzeugung der Gutscheinkarte als Vorschau und als PDF (§ 1.3 Nr. 5) Die Werte stammen aus dem Körper der Anfrage desselben Händlers, werden in die gewählte Vorlage gesetzt und mit der Antwort zurückgegeben. Es gibt keine Tabelle und keine Datei dafür; im Protokoll steht im Fehlerfall nur der Name des beanstandeten Feldes, nie sein Inhalt. Gesicherte Entwürfe stehen in Abschnitt A
Kartuu-Block auf Danke- und Bestellstatusseite: das von Shopify ausgestellte, kurzlebige Sitzungsmerkmal mit dem Bezug auf die Bestellung und — bei angemeldeten Kaufenden — der Shopify-Kundennummer; bei Kaufenden ohne Kundenkonto die von ihnen eingegebene E-Mail-Adresse; die IP-Adresse des Browsers Käuferin bzw. Käufer Der kaufenden Person den Stand ihrer Gutscheine zeigen und die Abruflinks nur herausgeben, wenn die Kundennummer zu jedem noch gültigen Gutschein der Bestellung gehört oder die eingegebene Adresse mit der in der Bestellung angegebenen übereinstimmt Das Merkmal wird geprüft und verworfen. Die eingegebene Adresse wird nur mit der gespeicherten verglichen und nicht gespeichert. Passt sie nicht, wird dieser Fehlversuch mit Bestellkennung und Zeitpunkt gezählt, um die Versuche je Bestellung und je Shop zu begrenzen (Abschnitt A, Zeile Fehlversuche des Gastnachweises). Die IP-Adresse wird von der Anwendung nicht gespeichert
Kartenvorschau auf der Produktseite: die Anfrage, die Shopify aus dem Shop an Kartuu weiterleitet, mit Signatur, Shop-Domain und — bei angemeldeten Kundinnen und Kunden — deren Shopify-Kundennummer Besuchende des Shops Eine Karte mit leeren Platzfeldern für die Vorschau ausliefern Die Angaben dienen nur der Prüfung der Signatur und werden nicht gespeichert. Was die besuchende Person in das Bestellformular tippt, setzt ihr Browser selbst in die Vorschau ein; es wird dafür nicht an Kartuu übertragen. Schriften und die Bilder der Gestaltung lädt der Browser unmittelbar vom Server von KYTH, die Bilder über signierte, nach ein bis zwei Stunden ungültige Adressen; dabei fällt die IP-Adresse des Browsers an, die die Anwendung nicht speichert. Die Bilddateien der Gestaltung kann die besuchende Person herunterladen — bei einem Bild bis 2000 Pixel Kantenlänge samt Aufnahmedaten (§ 2.2)

C. Nicht verarbeitet

Datenkategorie Stand
Anschriften, Telefonnummern und Zahlungsdaten der Kundschaft Sie kommen mit dem Bestellwebhook an und werden nach Abschnitt B verworfen. Über die Admin-API fragt Kartuu kein Kundendatenfeld ab.
Guthabenstand einer Shopify-Geschenkkarte Wird gelesen, aber nicht gespeichert. Fragt der Händler in der Bestellübersicht nach dem Einlösestand oder ruft er den Export auf, holt Kartuu ihn bei Shopify und reicht ihn durch; beim Storno liest Kartuu ihn vor dem Entwerten, um eine angebrochene Karte zu erkennen. Eine Spalte dafür gibt es nicht. Was auf einer Geschenkkarte verfügbar ist, führt allein Shopify.
Abruflink in der Bestellbestätigung Die Bestellbestätigung von Shopify enthält den Abruflink nicht. Bekannt wird er über die Zustellmail, die über den Mailzugang des Händlers hinausgeht, und über den Kartuu-Block auf der Danke- und der Bestellstatusseite.

Anlage 2 — Technische und organisatorische Maßnahmen (Art. 32 DSGVO)

Gibt den im Kopf genannten Stand der Software wieder. Aufgeführt sind ausschließlich umgesetzte Maßnahmen; Abschnitt 7 benennt die bekannten Lücken.

1. Vertraulichkeit

1.1 Verschlüsselung gespeicherter Daten

1.2 Trennung der Mandanten

1.3 Rechte auf das Nötigste beschränkt

Datenbankrechte sind spaltenweise statt tabellenweit vergeben:

Bei den Gutscheinen:

1.4 Keine Geheimnisse an falscher Stelle

1.5 Protokoll über Zugriffe auf geschützte Kundendaten

Das Protokoll ist inhaltsfrei: Die zulässigen Werte für Akteur und Feldkategorie sind doppelt abgesichert (Prüfung im Code und Prüfregel in der Datenbank). Ein Fehler beim Protokollieren bringt den fachlichen Aufruf nicht zu Fall.

Einträge entstehen unter anderem bei der Entgegennahme einer bezahlten Bestellung und bei den Datenschutz-Webhooks. Vermerkt werden nur die tatsächlich berührten Kategorien; eine Bestellung ohne jede Personenangabe schreibt keinen Eintrag. Der Eintrag zur Bestellung entsteht beim Entgegennehmen und nicht beim Rendern, sodass ein Wiederholungslauf keinen zweiten Eintrag über denselben Zugriff erzeugt.

2. Integrität

2.1 Prüfung eingehender Aufrufe

2.2 Absicherung der eingebetteten Oberfläche

Sicherheitskopfzeilen: Inhaltsrichtlinie (Content-Security-Policy) mit dynamischer Einbettungsbeschränkung, deren Shop-Parameter gegen ein vollständig verankertes Muster geprüft wird und bei mehrfacher Angabe abweisend reagiert; X-Content-Type-Options; Referrer-Policy: strict-origin-when-cross-origin.

2.3 Angriffsfläche klein halten

Schema-Beschreibung und interaktive Dokumentation der Schnittstelle sind im Produktivbetrieb abgeschaltet (die Routen existieren dort nicht).

2.4 Prüfung der Eingaben des Zustimmungsschritts

Die im Zustimmungsschritt eingegebene Kontaktadresse wird serverseitig gegen ein vollständig verankertes Muster geprüft (keine Zeilenumbrüche, keine Trennzeichen, kein spitzklammerartiger Anhang, Domäne mit Punkt, Längenbegrenzung), Randleerzeichen werden entfernt, die Groß- und Kleinschreibung bleibt erhalten. Die Zustimmung muss als echter Wahrheitswert übermittelt werden — Zeichenketten oder Zahlen gelten nicht als Zustimmung.

Begrenzung des Anfragekörpers. Der Körper dieser Anfrage darf 4 Kilobyte nicht überschreiten. Die Grenze wirkt an zwei Stellen: vorab gegen die vom Aufrufer angekündigte Länge und während des Einlesens selbst, das abgebrochen wird, sobald die Grenze überschritten ist — auch dann, wenn eine Anfrage ihre Länge verschweigt.

Derselbe Mechanismus an den übrigen Anfragen mit Körper, jeweils mit einem eigenen Deckel: 256 Kilobyte an den Renderaufrufen (Vorschau und PDF) und beim Sichern eines Entwurfs, weil der Körper dort das vollständige Gestaltungsdokument trägt; deutlich weniger an allen anderen. Alle Grenzen stammen aus einer gemeinsamen Umsetzung. Ein Körper über dem Deckel endet in einer Ablehnung und nicht in einer Antwort mit leeren Werten.

2.5 Prüfung der Eingaben des Gutschein-Editors

Texte und Gestaltungen aus dem Editor werden serverseitig geprüft, bevor daraus ein Dokument entsteht; auf eine Prüfung im Browser verlässt sich der Server dabei nicht.

2.6 Prüfung hochgeladener Bilder

Ein hochgeladenes Bild wird einmal beim Hochladen geprüft, bevor es gespeichert wird; was die Prüfung nicht besteht, wird nie gespeichert.

2.7 Maßnahmen des Bestellablaufs

2.8 Nachvollziehbarkeit von Änderungen

Das Datenbankschema wird ausschließlich über Migrationen und in einem eigenen Prozess vor dem Start der Anwendung geändert; kein Arbeitsprozess sieht ein halbfertiges Schema.

3. Verfügbarkeit und Belastbarkeit

4. Belastbarkeit der Konfiguration

Die Anwendung startet nicht ohne die erforderlichen Konfigurationswerte; der Verschlüsselungsschlüssel wird auf das korrekte Format geprüft. Fehlkonfiguration führt zum Abbruch, nicht zu stillem Weiterlaufen.

5. Trennung von Test und Produktion

Zwei getrennte Anwendungen mit je eigener Datenbank, eigenem Verschlüsselungsschlüssel, eigener Datenbankrolle mit eigenem Kennwort, eigener Domain und eigener Shopify-Anwendung. Auch die Adressen der Rechtstexte werden je Umgebung aus der jeweils eigenen Anwendungsadresse abgeleitet.

6. Verfahren zur Überprüfung und Bewertung

7. Bekannte Lücken

Diese Punkte sind nicht oder nicht vollständig erfüllt.

Lücke Stand
Die Auskunft nach Art. 15 erreicht den Händler nicht von selbst. Der Webhook customers/data_request stellt sie zusammen und schreibt einen Protokolleintrag mit der Anzahl der Datensätze; danach wird der Inhalt verworfen. Es gibt keine Seite in der App, auf der der Händler sie abrufen könnte, und keinen Versand an seine Kontaktadresse. Die Herausgabe erfolgt auf Anforderung in Textform und von Hand (§ 7.2), innerhalb der von Shopify verlangten 30 Tage offen, mit benanntem Ersatzweg
Kein externes Verfügbarkeitsmonitoring, keine externe Fehlererfassung angebunden. Der Prüflauf über die Sicherungen läuft auf demselben Server und deckt dessen Totalausfall nicht ab offen
Kein Zeilenschutz auf shops — die Tabelle mit den produktiven Händlerdaten trägt keine Richtlinie; die Anwendungsrolle kann sie vollständig lesen und löschen. Was heute darin steht: die Shop-Domain im Klartext und als Suchhash, die verschlüsselten Token samt ihrer Zeitpunkte, der Berechtigungsumfang, die verschlüsselte Kontaktadresse, der Zustimmungsnachweis, der zwischengespeicherte Abonnementstand mit Tarifnamen, ein eingelöster Aktionscode mit Zeitpunkt, der Versandweg des Händlers (Mailserver, Port, Absender- und Antwortadresse im Klartext, Benutzername und Passwort verschlüsselt), sein Auftritt auf der Karte (Anzeigename und die Schlüssel der beiden Logofassungen), seine Hausfarben (Hexcodes, die an jeder Farbwahl der Gestaltung zum Anklicken bereitstehen), die Ausgabesprache des Shops (in welcher Sprache Karten gedruckt und Mails verschickt werden), der Einrichtungsstand samt der von ihm bestätigten Schritte, der Stand der Bewertungsfrage (wann Shopifys Bitte um eine Bewertung gezeigt wurde und mit welchem Ergebnis) sowie die Zeitpunkte von Installation und Deinstallation, der Zeitpunkt der letzten täglichen Händlermeldung und die beiden Zeitpunkte, an denen die Themeblöcke erstmals benutzt wurden. Die Trennung wirkt dort nur über die Anwendung und über spaltenweise Rechte offen
Restfenster im Aufräumlauf für verwaiste Shops — zwischen der Prüfung unmittelbar vor dem Löschen und dem Löschen selbst kann derselbe Händler die App neu installieren. Das Fenster ist klein; trifft der seltene Fall ein, installiert der Händler die App erneut offen, mit überschaubarer Folge
Unabgeschlossene Webhook-Ansprüche werden nie entfernt. Kein Personenbezug, sie belegen nur Platz (§ 9.3 Nr. 3) bewusst offen
Nicht mehr genutzte Motive werden nicht aufgeräumt, und ein Händler kann kein einzelnes Bild löschen. Ein hochgeladenes und nie oder nicht mehr benutztes Motiv bleibt liegen, solange der Shop besteht; die Löschung auf Verlangen erfolgt von Hand (§ 7.3, § 9.3 Nr. 6 b) offen
Keine Sicherung der Bildmotive. Die tägliche Sicherung erfasst die Datenbank, nicht die Bildablage. Geht die Ablage verloren, sind die Motive weg (Abschnitt 3) offen
Kein Auslöser für die Löschung einer beschenkten Person. Sie hat keine Kundennummer und erscheint in Shopifys customers/redact nur, wenn ihre Adresse dieselbe ist. Der Suchweg über den Suchwert ihrer Adresse ist gebaut, ein Weg für den Händler, ihn auszulösen, nicht. Bis dahin führt KYTH die Löschung auf Weisung von Hand aus (§ 7.2, § 9.3 Nr. 7 b) offen
Eine Geschenkkarte kann verwaisen. Lehnt Shopify einen bereits gespeicherten Gutscheincode als vergeben ab, existiert die Karte, ihre Kennung ist aber unbekannt und sie lässt sich bei einem Storno nicht entwerten. Der Gutschein endet dafür in einem sichtbaren Fehlzustand statt in einer stillen zweiten Karte (2.7) bewusst offen