Stand: 21. Mai 2026 | Version: 3.5 | Anbieter: KYTH. Systems UG (haftungsbeschränkt) i. Gr.
KYTH. Systems UG (haftungsbeschränkt) i. Gr.
Geschäftsführer: Stefan Grasse (CTO), Stephan Wittmann (CMO)
Prof.-Mederer-Str. 4, 92348 Berg, Deutschland
Notariell errichtet am 19.05.2026 (UR-Nr. 0674/2026, Notarin Dr. Christine Oberhofer, Altdorf b. Nürnberg)
Eintragung im Handelsregister beim Amtsgericht Nürnberg beantragt
E-Mail: datenschutz@kyth.systems
Web: www.kyth.systems
Diese Datenschutzerklärung informiert über die Verarbeitung personenbezogener Daten bei Nutzung der Shopify-App „KYTH.Karl — Shipping Intelligence" (nachfolgend „KARL"). KARL ist eine Multi-Carrier-Versandlösung für Shopify-Shops und wird als Shopify Embedded App betrieben.
Die App richtet sich ausschließlich an gewerbliche Nutzer (B2B). Die Verarbeitung personenbezogener Daten von Endkunden (Empfänger) erfolgt ausschließlich im Auftrag des jeweiligen Shopify-Händlers (Art. 28 DSGVO — Auftragsverarbeitung).
Quelle der Empfängerdaten: Shopify Order GraphQL API (ausschließlich lesend). KARL verarbeitet nur Daten, die für den Versandprozess zwingend erforderlich sind (Datenminimierung, Art. 5 Abs. 1 lit. c DSGVO).
| Kategorie | Daten | Schutz | Aufbewahrung |
|---|---|---|---|
| Shop-Daten | Shop-Domain, OAuth-Token, Plan, Scopes, Installations-Zeitpunkt | Access-Token AES-256-GCM verschlüsselt | Bis Deinstallation |
| Empfängerdaten | Name, Firma, Straße, PLZ, Stadt, Land, Bundesland, Telefon, E-Mail | Name, Firma, Straße, Adresszusatz, Telefon, E-Mail AES-256-GCM (PLZ/Stadt/Land/Bundesland Klartext für Versand-Routing); Multi-Tenant-Isolation (shop_id) | 90 Tage |
| Versanddaten | Bestell-Nr., Carrier, Service, Tracking-Nr., Gewicht, Maße, Incoterm, EAS/ODA-Flags, Kosten | Multi-Tenant-Isolation | 90 Tage |
| Tracking-Events | Status, Zeitstempel, Ort, Roh-Event-JSON des Carriers | Multi-Tenant-Isolation; bei customers/redact werden Ort + Roh-JSON auf NULL gesetzt | 90 Tage |
| Label-PDFs | Versandetiketten als Base64 (enthalten Empfänger-Adresse) | AES-256-GCM verschlüsselt (label_archive) | 30 Tage |
| Carrier-API-Zugangsdaten | API-Keys, Kundennummern, OAuth-Tokens (inkl. BYOAK — Bring Your Own API Keys) | AES-256-GCM verschlüsselt | Bis Deinstallation |
| Portokasse-Tokens | OAuth Access/Refresh Tokens (Deutsche Post Internetmarke) | AES-256-GCM verschlüsselt | Bis Deinstallation |
| Shop-Einstellungen / Absender-PII | Firmenadresse, Kontaktperson, Telefon, USt-IdNr., EORI des Händlers | settings_json AES-256-GCM verschlüsselt | Bis Deinstallation |
| Admin-Zugangsdaten | E-Mail, Name, Rolle | E-Mail + Name AES-256-GCM; Lookup per HMAC-SHA256-Hash; Passwort: PBKDF2-SHA256 (310.000 Iter.) | Bis Deinstallation |
| Audit-Trail (API-Logs) | Carrier API-Request/Response-JSON (können Adressen enthalten) | api_request_json + api_response_json AES-256-GCM verschlüsselt | 90 Tage; bei DSGVO-Anfrage: sofort NULL |
| Audit-Log (DSGVO) | Zeitstempel, Aktion (shop_redact / customer_redact / data_request), Shop-Domain, verarbeitete IDs | Multi-Tenant-Isolation (Art. 30 DSGVO — Verzeichnis von Verarbeitungstätigkeiten) | 365 Tage |
| Retouren | Kundenname, E-Mail, Bestell-Nr., Grund, Status | Multi-Tenant-Isolation | 90 Tage |
| Retouren-Portal-Tokens | Einmal-Token für Self-Service-Retourenportal, Kunden-E-Mail, Ablaufzeit | Token + E-Mail verschlüsselt; Multi-Tenant-Isolation | Bis Ablauf/Verbrauch; spätestens 90 Tage |
| Druckwarteschlange | Label-PDF, Bestell-Nr. | Multi-Tenant-Isolation | 30 Tage nach Druck |
| E-Mail-Benachrichtigungen | Empfänger-E-Mail, Bestell-Nr., Tracking-Nr., Carrier, Versandstatus (Log) | Multi-Tenant-Isolation | 180 Tage (Versandhistorie) |
| Mobile-Scanner-Events | Gescannte Bestell-Nr., Zeitstempel, Shop-Zuordnung (Handy→PC SSE-Relay) | Multi-Tenant-Isolation; append-only Event-Log | 24 Stunden (täglich 03:50 UTC) |
| Mobile-Scanner-SSE-Tickets | Kurzlebige Auth-Tickets für Handy-Browser-Verbindung | Multi-Tenant-Isolation | Bis Ablauf (kurzlebig, min. einmal täglich bereinigt) |
| Branded-Tracking-Konfiguration | Logo, Brand-Farben, Text-Bausteine, Social-Links des Händlers | Multi-Tenant-Isolation (keine End-Kunden-PII) | Bis Deinstallation |
| OAuth-Nonces | Kurzlebige State-Token für Shopify OAuth-Flow | Server-seitig nur, nicht im Browser | Unmittelbar nach Callback (max. wenige Minuten) |
| Legal-Akzeptanzen | Shop-ID, Dokumententyp (AGB/AVV/Privacy), Version, Akzept-Zeitstempel, pseudonymisierte IP (/24 bzw. /64), User-Agent | IP wird vor Speicherung auf /24 (IPv4) bzw. /64 (IPv6) gekürzt — keine direkt re-identifizierbare Adresse. Multi-Tenant-Isolation. Rechtsgrundlage: Art. 7 Abs. 1 DSGVO + § 14 BGB Nachweispflicht. | 10 Jahre (§ 147 AO Aufbewahrungspflicht für Vertragsunterlagen) |
Alle Daten werden ausschließlich zur Erbringung des Versanddienstes verarbeitet:
Es erfolgt keine Verarbeitung zu Werbezwecken, kein Profiling, keine automatisierte Entscheidungsfindung im Sinne von Art. 22 DSGVO.
Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung): Die Verarbeitung ist zur Erfüllung des Vertrages zwischen dem Händler und KYTH. Systems erforderlich. Der Händler beauftragt KARL mit der Label-Erstellung — hierfür ist die Verarbeitung von Empfängerdaten zwingend notwendig.
Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse): Für die Optimierung des Versandprozesses (Zuschlagsprüfung, Carrier-Routing, Adress-Autocomplete, Analytics) besteht ein berechtigtes Interesse des Händlers an effizientem Versandmanagement.
Art. 28 DSGVO (Auftragsverarbeitung): In Bezug auf Endkunden-Daten (Empfänger) handelt KARL als Auftragsverarbeiter im Auftrag des Shopify-Händlers. Der Händler bleibt Verantwortlicher für die Daten seiner Kunden. Der Auftragsverarbeitungsvertrag (AVV) wird mit Installation der App und Akzeptanz im Onboarding-Prozess (Klick-through) rechtsverbindlich abgeschlossen. Der vollständige Vertragstext mit allen 10 Pflichtinhalten gemäß Art. 28 Abs. 3 DSGVO ist unter karl.kyth.systems/avv einsehbar; die zugehörigen technisch-organisatorischen Maßnahmen (TOMs) gemäß Art. 32 DSGVO unter karl.kyth.systems/toms.
Versandadressen werden ausschließlich an die vom Händler aktiv konfigurierten Carrier weitergegeben — und nur im Moment der Label-Erstellung bzw. der Abholungs-Buchung:
| Carrier | Unternehmen / Sitz | Rechtsgrundlage Transfer |
|---|---|---|
| DHL Paket | Deutsche Post DHL Group, Bonn (EU) | Kein Drittlandtransfer |
| DHL Express | DHL Express, Bonn (EU) | Kein Drittlandtransfer |
| FedEx | FedEx Corporation, Memphis (USA) | EU-US Data Privacy Framework + Standardvertragsklauseln (SCCs) |
| UPS | United Parcel Service, Atlanta (USA) | EU-US Data Privacy Framework + Standardvertragsklauseln (SCCs) |
| DPD | DPD Deutschland GmbH, Aschaffenburg (EU) | Kein Drittlandtransfer |
| Österreichische Post | Österreichische Post AG, Wien (EU) | Kein Drittlandtransfer |
| Deutsche Post / Internetmarke | Deutsche Post AG, Bonn (EU) | Kein Drittlandtransfer |
Drittlandtransfer durch eingesetzte Infrastruktur-Dienste: Über die Carrier hinaus findet im Rahmen des Betriebs ein Drittlandtransfer bei folgenden Diensten statt (vollständige Sub-Processor-Liste siehe Abschnitt 7):
| Dienst | Land | Garantie für den Transfer |
|---|---|---|
| Shopify Inc. (Bestelldatenquelle, Embedded-App-Hosting, Webhook-Zustellung) | Kanada / global | Angemessenheitsbeschluss der EU-Kommission für Kanada (kommerzielle Organisationen) + Shopify DPA |
Cloudflare, Inc. (DNS-Auflösung für kyth.systems) | USA | EU-Standardvertragsklauseln (SCCs) / Cloudflare DPA |
Third-Party-Billing (optional): Wenn der Händler im Carrier-Setup die Option „Versandkosten-Billing auf anderes Konto" aktiviert, wird zusätzlich zur Empfänger-Adresse die Kundennummer / PLZ / Länderkennung des Rechnungsempfängers an den Carrier übermittelt. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.
Es erfolgt keine Weitergabe an sonstige Dritte, keine Datenweitergabe zu Werbezwecken, kein Cross-Site-Tracking, keine Analyse durch Drittanbieter, keine Cookies.
| Dienstleister | Zweck | Standort | DPA / AVV |
|---|---|---|---|
| IONOS SE | Application Hosting (VPS, Coolify/Docker), PostgreSQL-Datenbank, verschlüsselter Backup-Storage (Object Storage) | Berlin, Deutschland (EU) | Ja (AVV) |
| Shopify Inc. | E-Commerce-Plattform (Datenquelle der Bestellungen, Embedded-App-Hosting, Webhook-Zustellung) | Kanada / Global (Shopify ist eigenständiger Verantwortlicher für Shop-Daten) | Ja (Shopify DPA) |
| Cloudflare, Inc. | DNS-Auflösung für die Domain kyth.systems (nur DNS, kein Reverse-Proxy, keine TLS-Terminierung durch Cloudflare) | USA (Anycast, EU-Edge-Server) | Ja (Cloudflare DPA / SCCs) |
| Geoapify GmbH | Adress-Autocomplete und Geocoding für Versandlabels (aktiv seit v0.0.281) | Wien, Österreich (EU) | Ja |
| INWX GmbH & Co. KG | Versand transaktionaler KARL-System-E-Mails (Passwort-Reset, App-Uninstall-Feedback, Waitlist-Eingang). Versandbestätigungen und Retouren-Einladungen an Endkunden werden über den vom Händler konfigurierten eigenen SMTP-Server verschickt — nicht über INWX. | Berlin, Deutschland (EU) — Mail-Server smtp.webspace.bz | Ja (AVV) |
Shopify stellt Bestelldaten über die GraphQL API bereit. KARL liest diese ausschließlich lesend. Shopify ist eigenständiger Verantwortlicher für die Shop-Daten im Sinne der DSGVO.
Geoapify GmbH, Wien, Österreich — Adress-Autocomplete und Geocoding. Übermittelt werden ausschließlich eingegebene Adress-Fragmente (Straße, PLZ, Stadt, Land). Keine Weitergabe von Kundennummern, Shop-Daten oder personenbezogenen Identifikatoren. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO. Datenschutzerklärung: geoapify.com/privacy-policy
INWX GmbH & Co. KG — Transaktionaler E-Mail-Versand der KARL-eigenen
System-Mails (Passwort-Reset, App-Uninstall-Feedback, Waitlist-Eingang) seit rc.166.
Sitz Berlin, Deutschland (EU). Mail-Server smtp.webspace.bz. Übermittelt werden
Empfänger-E-Mail-Adresse, Absender-Domain, Betreff und Inhalt der E-Mail. Keine Drittland-
Übermittlung. AVV abgeschlossen. Rechtsgrundlage: Art. 6 Abs. 1 lit. b / f DSGVO.
Datenschutzerklärung: inwx.de/de/datenschutz
Hinweis: E-Mails an Endkunden des Händlers (Versandbestätigungen, Retouren- Einladungen) werden NICHT über INWX verschickt, sondern über den vom Händler in der App hinterlegten eigenen SMTP-Server — eigene Verantwortung des Händlers.
Nicht als Sub-Processor zu werten: Coolify (self-hosted auf IONOS-VPS, nur internes Deployment-Tool,
keine Weitergabe von Kundendaten), wal-g + IONOS Object Storage (verschlüsseltes Backup-Target,
Zugriff auf Klartext technisch ausgeschlossen, siehe Abschnitt 8).
Hinweis zu internen Admin-Benachrichtigungen (seit v0.0.609): Der Betreiber verwendet einen Telegram-Bot ausschließlich für interne Push-Benachrichtigungen über neue Bug-Reports und Support-Chat-Nachrichten, die im Intranet eingehen. Übertragen werden ausschließlich technische Identifikatoren (Ticket-ID, Shop-Domain-Kurzform, interner Deep-Link sowie der vom Shop-Inhaber selbst eingegebene Bug-Titel, gekürzt auf 80 Zeichen). Keine Endkunden-Daten, keine Nachrichten-Inhalte, keine E-Mail-Adressen, keine Adressdaten und keine personenbezogenen Identifikatoren von Shop-Kunden werden über diesen Kanal übertragen. Telegram fungiert hier als Telekommunikationskanal des Verantwortlichen (vergleichbar mit SMS oder Push-Benachrichtigung) und ist kein Auftragsverarbeiter im Sinne der DSGVO Art. 28. Der Empfänger der Benachrichtigung ist der Verantwortliche selbst (Selbst-Benachrichtigung). Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.
shop_id auf allen relevanten Tabellen, Foreign Key + ON DELETE CASCADE.max-age=63072000; includeSubDomains).Die folgenden Felder werden in PostgreSQL verschlüsselt gespeichert. Der Schlüssel liegt als ENV-Variable am Application-Server und ist in Backups nicht enthalten:
shops.access_token_encrypted — Shopify OAuth-Tokencarrier_credentials.credential_value_encrypted — Carrier API-Keys / BYOAK-Credentialscarrier_accounts.password_encrypted — Carrier Account-Passwörterportokasse_accounts.access_token_encrypted + refresh_token_encryptedshipments.recipient_name + recipient_company — Empfänger-PIIshipments.api_request_json + api_response_json — Carrier API-Logs (enthalten Adressen)shop_settings.settings_json — Absender-PII, SMTP-Zugangsdaten, Branding-Datenlabel_archive.label_base64 — Label-PDF mit Empfänger-Adresseadmin_users.email + name — verschlüsselt; zusätzlich HMAC-SHA256-Lookup-Hash für SQL-Suchereturn_portal_tokens.token + customer_emailBewusst im Klartext (für Routing, Filter, Performance erforderlich):
shipments.recipient_zip, _city, _country, tracking_number,
carrier, service. Stammdaten wie routing_rules, surcharge_zones,
carrier_*-Tabellen enthalten keine PII.
hmac.compare_digest).X-Shopify-Hmac-Sha256).rate_limit_log) auf kritischen Endpunkten (Login, Password-Reset, Carrier-API-Calls).frame-ancestors beschränkt auf Shopify-Admin), X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy: camera=(), microphone=(), geolocation=().pg_dump: pg_dump | gzip | gpg --symmetric --cipher-algo AES256 → IONOS Object Storage (Deutschland). Der GPG-Schlüssel ist nicht im Objektspeicher enthalten.wal-g): client-seitige libsodium-AES-256-Verschlüsselung + lz4-Kompression → IONOS S3. Point-in-Time Recovery im Sekundenbereich. Tägliches Base-Backup um 03:00 UTC, Retention 7 Tage.pg_dump-Backup-Funktion ist bewusst deaktiviert.Nach einem Löschersuchen (shop/redact, customers/redact oder manueller Deinstallation)
werden die Produktionsdaten sofort gelöscht. Backups werden bewusst nicht spontan nachbearbeitet
(das würde die Integrität zerstören und ist nach WP29/EDPB-Leitlinien auch nicht gefordert). Stattdessen
greift die rollierende Retention: stündliche pg_dump-Backups und
wal-g-Base-Backups werden nach spätestens 7 Tagen automatisch überschrieben
bzw. gelöscht (wal-g delete retain FULL 7). Sollten in dieser Frist Daten aus einem Backup
wiederhergestellt werden müssen (Notfall-Restore), würden die betroffenen Löschersuchen im Anschluss erneut
ausgeführt. Die 7-Tage-Frist ist die kürzestmögliche ohne Datenverlust-Risiko im Incident-Fall und
entspricht gängiger Praxis für Art. 17 DSGVO bei verschlüsselten Backups.
KARL lädt keine externen Ressourcen. Alle Schriftarten (u. a. Bricolage Grotesque, Plus Jakarta Sans, IBM Plex Mono, Fraunces, Playfair — je nach Branding-Stil) sind vom KARL-Server selbst ausgeliefert (self-hosted). Dadurch entfällt jeder Transfer von Nutzer-IP-Adressen an Google Fonts, Adobe Fonts oder ein CDN. Es werden keine Tracking-Pixel, Analytics-Dienste oder Werbenetzwerke eingebunden.
KARL bietet dem Händler vier Branding-Stile (modern, classic, minimal, boutique), die auf mehrere kundenseitige Oberflächen wirken. Der Datenumfang ändert sich dadurch nicht — lediglich Layout, Fonts und Farbgebung. Betroffene Oberflächen:
Der Mobile Scanner erlaubt es Mitarbeitern des Händlers, im gleichen Netzwerk mit einem Handy Paket-Barcodes zu scannen und an den Desktop-Browser derselben KARL-Installation zu übertragen (SSE-Relay via PostgreSQL LISTEN/NOTIFY):
/mobile-scan/<token>).Im Bereich „Manuelles Label" können Sie nach erfolgreicher Label-Erstellung auf „Im Adressbuch speichern" klicken, um die Empfänger-Daten für spätere Sendungen wiederzuverwenden. Diese Speicherung ist rein optional und erfolgt nur durch Ihren expliziten Klick — KARL legt niemals automatisch Adressbuch-Einträge an.
shop/redact-
Webhook gelöscht (ON DELETE CASCADE auf der shops-Tabelle).customers/redact-Webhook), löscht KARL
alle Adressbuch-Einträge mit übereinstimmender E-Mail-Adresse (Lookup über
einen pseudonymisierten HMAC-Hash, ohne den Klartext zu kennen).shop_id-Filter in
jeder Query). Kein Cross-Shop-Zugriff möglich.Auf www.kyth.systems können sich Interessenten freiwillig für unseren Newsletter (Produkt-Updates, Versand-Tipps, Branchen-News) anmelden:
/24 pseudonymisiert).KARL speichert im Browser nur betriebsnotwendige Daten — keine Empfänger-Adressdaten und keine Tracking-/Marketing-Profile:
Die Authentifizierung gegenüber Shopify erfolgt ausschließlich über Shopify Session-Tokens (kurzlebige JWTs, nicht persistent im Browser gespeichert).
| Datenkategorie | Aufbewahrung | Löschmechanismus |
|---|---|---|
| Versandprotokolle (shipments) | 90 Tage | Cleanup-Job + Start-Up |
| Tracking-Events | 90 Tage | Cleanup-Job |
| Abholungen (pickups) | 90 Tage | Cleanup-Job |
| Retouren | 90 Tage | Cleanup-Job |
| Label-PDFs (label_archive) | 30 Tage | Cleanup-Job |
| Druckwarteschlange (print_queue) | 30 Tage | Cleanup-Job |
| E-Mail-Versandhistorie (notifications) | 180 Tage | Cleanup-Job |
| Audit-Log (DSGVO-Aktionen) | 365 Tage | Cleanup-Job |
| Mobile-Scan-Events | 24 Stunden | Cleanup-Job 03:50 UTC |
| Mobile-Scan-SSE-Tickets | Bis Ablauf, max. 1 Tag | Cleanup-Job 03:50 UTC |
| OAuth-Nonces | Unmittelbar nach Callback (wenige Minuten) | Cleanup + Expiry |
| Shop-Daten, Credentials, Settings | Bis Deinstallation | shop/redact-Webhook (bzw. 7-Tage-Fallback) |
| Endkunden-PII (auf Anfrage) | Sofort | customers/redact-Webhook |
| Alle Daten (auf Anfrage) | Sofort | E-Mail an datenschutz@kyth.systems |
Als betroffene Person haben Sie folgende Rechte:
Kontakt: datenschutz@kyth.systems
Zuständige Aufsichtsbehörde: Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach, www.lda.bayern.de
KARL implementiert alle 3 Pflicht-Webhooks gemäß Shopify App Store Anforderungen. Alle Webhooks werden per HMAC-SHA256 verifiziert:
customers/data_request (Art. 15): Exportiert alle gespeicherten Daten eines Kunden als JSON — unter anderem aus shipments, returns, notifications, tracking_events, label_archive.customers/redact (Art. 17): Anonymisiert sämtliche PII-Felder des betroffenen Kunden (Name, Adresse, E-Mail, API-Logs, Label-PDFs, Tracking-Event-Location + Roh-JSON) in allen relevanten Tabellen.shop/redact (Deinstallation): Löscht alle Shop-Daten vollständig — inklusive Admin-Users, Credentials, Carrier-Accounts, Settings, Shipments, Labels, Retouren, Retouren-Portal-Tokens, Pick-Listen, Tracking-Events, Mobile-Scan-Events, Routing-Modi sowie aller weiteren shop-gebundenen Tabellen.Fallback bei ausbleibendem Shopify-Webhook: Falls nach einer Deinstallation kein
shop/redact-Webhook innerhalb von 7 Tagen eintrifft, werden die Shop-Daten durch einen internen
Cleanup-Prozess automatisch gelöscht.
Jeder Shopify-Shop hat in KARL eine eigene, strikt isolierte Datenpartition. Alle Datenbank-Tabellen mit
PII sind über shop_id mit Foreign-Key-Constraint auf die shops-Tabelle gebunden
(ON DELETE CASCADE). Ein Shop kann technisch ausschließlich auf seine eigenen Daten zugreifen
— die Isolation wird server-seitig aus dem authentifizierten Shopify Session-Token abgeleitet und auf
jedem API-Call neu verifiziert.
Wir behalten uns vor, diese Datenschutzerklärung bei Bedarf anzupassen — beispielsweise bei Änderungen der App-Funktionalität oder der Rechtslage. Die aktuelle Version ist immer unter /privacy abrufbar. Wesentliche Änderungen werden dem Händler mit angemessener Vorlaufzeit über die App-Oberfläche oder per E-Mail angekündigt.