← Zur Startseite

Stockify — Datenschutzerklärung / Privacy Notice

Letzte Aktualisierung: 2026-06-24

Diese Datenschutzerklärung gilt für die Shopify-App Stockify und beschreibt, welche personenbezogenen Daten verarbeitet werden, zu welchem Zweck, auf welcher Rechtsgrundlage, wie lange und an wen sie weitergegeben werden. Sie wird code-synchron gepflegt — Änderungen am Datenmodell oder am Sub-Processor-Stack ziehen eine Aktualisierung dieser Datei nach sich.

Zeitpunkt und Form der Information (Art. 13 DSGVO). Diese Erklärung wird dem Merchant gemäß Art. 13 Abs. 1 DSGVO zum Zeitpunkt der Datenerhebung, d.h. spätestens bei der Installation der App, zur Verfügung gestellt:

  1. Shopify App Store-Listing: Im öffentlichen App-Listing ist diese URL (https://stockify.amassimo.com/privacy) als "Privacy Policy" hinterlegt. Sie ist vor dem Install-Klick einsehbar.
  2. Install-Flow: Der Shopify-OAuth-Consent-Screen verweist auf die im App-Listing hinterlegte Privacy-URL, bevor der Merchant die App-Berechtigungen bestätigt.

Diese Erklärung ist darüber hinaus unter https://stockify.amassimo.com/privacy jederzeit öffentlich zugänglich. Spätere Aktualisierungen werden über die "Letzte Aktualisierung"-Zeile oben und über den Abschnitt 12. Änderungshistorie dokumentiert. Wesentliche Änderungen am Verarbeitungsumfang werden zusätzlich per E-Mail an die hinterlegte email_address des Shops kommuniziert.

1. Verantwortlicher

Verantwortlicher gemäß Art. 4 Nr. 7 DSGVO ist:

Antoine Massimo Grünebaumstraße 13 33098 Paderborn Deutschland

E-Mail: [email protected]

Stockify wird als Solo-Projekt betrieben. Ein Datenschutzbeauftragter ist nach Art. 37 DSGVO nicht erforderlich.

2. Welche Daten verarbeitet werden

Stockify speichert ausschließlich shop-bezogene Konfigurations- und Lagerkennzahlen in einer eigenen PostgreSQL-Datenbank auf dem Stockify-Server. Es werden keine identifizierenden Kundendaten (Customer-IDs, Namen, E-Mail-Adressen, Lieferadressen, Zahlungsdaten) der Endkunden des Shops gespeichert. Für die Nachbestell-Prognose liest Stockify mit dem Scope read_orders historische Bestellungen aus, persistiert daraus aber ausschließlich eine pro Variante und Kalendertag aggregierte Netto-Verkaufsmenge (verkaufte minus erstattete Stück) — keine Bestell-ID, kein Bestellwert, kein Käufer-Bezug. Diese Datenminimierung ist bewusst gewählt: die Aggregate sind keinem einzelnen Endkunden zuordenbar.

Tabelle / Feld Inhalt Personenbezug Rechtsgrundlage
shops.shop_domain Shopify-Shop-Domain (*.myshopify.com) indirekt (Shop-Inhaber:in) Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung)
shops.plan, subscription_id Abonnement-Status (Shopify Billing GID) nein Art. 6 Abs. 1 lit. b
shops.email_address Optionale E-Mail-Adresse für Reports/Alarme personenbezogen Art. 6 Abs. 1 lit. b
shops.smtp_host / smtp_port / smtp_user / smtp_secure SMTP-Konfiguration (Opt-in für eigenen Mailserver) technisch Art. 6 Abs. 1 lit. b
shops.smtp_pass SMTP-Passwort, AES-256-GCM-verschlüsselt technisch Art. 6 Abs. 1 lit. b
shops.discord_webhook_url / slack_webhook_url Optionale Webhook-URLs für Reports/Alarme technisch (kanal-gebundener Bearer-Secret) Art. 6 Abs. 1 lit. b
shops.discord_report_days / discord_alert_enabled / slack_report_days / slack_alert_enabled Pro-Kanal-Report-Zeitplan (Wochentage) + Sofort-Alarm-Toggle nein Art. 6 Abs. 1 lit. b
shops.min_stock_default, email_report_days, email_alert_enabled, last_report_sent Konfiguration und Status nein Art. 6 Abs. 1 lit. b
shops.locale, locale_override Sprachpräferenz (DE/EN) technisch Art. 6 Abs. 1 lit. b
shops.installed_at, uninstalled_at, pricing_feedback_dismissed_at, default_min_stock_set_at, onboarding_dismissed_at Zeitstempel zu App-Lifecycle und UI-Status nein Art. 6 Abs. 1 lit. b
sessions.* Shopify-OAuth-Session: id, shop, state, isOnline, accessToken, scope, expires (immer); zusätzlich userId, firstName, lastName, email, accountOwner, locale, collaborator, emailVerified — werden gespeichert, sofern Shopify diese Felder im OAuth-Response mitschickt (bei Online-Sessions regelmäßig, bei Offline-Sessions in der Regel nicht). Die Felder werden zur Authentifizierung gegenüber der Shopify-API verwendet, nicht ausgewertet, nicht angereichert. personenbezogen (Shop-Inhaber:in bzw. Mitarbeiter:in mit App-Zugriff) Art. 6 Abs. 1 lit. b
product_settings.* Mindestbestände pro Produkt-Variante nein Art. 6 Abs. 1 lit. b
alert_state.* Letzter bekannter Stock-Status pro Variante (ok/low/out) für Duplikat-Schutz bei Sofort-Alarmen nein Art. 6 Abs. 1 lit. b
pricing_feedback.* Optional vom Shop abgegebene Preis-Einschätzung: Zahlungsbereitschafts-Spanne (wtp_bucket) + wichtigster Wert-Treiber (value_driver) + Währung. Dazu ein serverseitig erfasster Shop-Snapshot: Produkt-, Varianten- und Standort-Anzahl, der effektive Tarif (plan) sowie ein Nutzungsprofil (features_used — welche Stockify-Funktionen der Shop aktiviert hat). Kein freier Preis-Betrag, keine Kundendaten. nein (shop-bezogene Konfigurations-/Nutzungsdaten, kein Endkunden-Bezug) Art. 6 Abs. 1 lit. a DSGVO (Einwilligung — Eingabe ist freiwillig, kein Pflichtfeld)
feature_requests.message Optional vom Shop abgegebener Wunsch-Freitext kann personenbezogen sein, wenn der Shop solche Daten in den Freitext schreibt — der UI-Hinweis weist explizit darauf hin, das zu unterlassen Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)
suppliers.name / notes Vom Merchant angelegte Lieferanten (Name, optionale Notizen) technisch; kann personenbezogen sein, wenn der Merchant eine natürliche Person als Lieferant einträgt Art. 6 Abs. 1 lit. b
suppliers.email / phone Optionale Kontaktdaten des Lieferanten personenbezogen (Kontaktdaten des Lieferanten/der Ansprechperson) Art. 6 Abs. 1 lit. b
purchase_orders.* Vom Merchant erstellte Bestellungen: Referenz, Notizen, Status, Währung, Zeitstempel, Lieferanten-Verknüpfung nein Art. 6 Abs. 1 lit. b
purchase_order_lines.* Bestellpositionen: Variant-ID + Snapshot von Produkttitel/Variantentitel/SKU, bestellte und erhaltene Mengen, optionaler Stückpreis nein Art. 6 Abs. 1 lit. b
purchase_order_receipts.* Idempotenz-Beleg je gebuchtem Wareneingang (Shop-Domain, Bestell-Verknüpfung, Idempotenz-Schlüssel, Zeitstempel) — verhindert Doppelbuchungen beim Empfangen nein Art. 6 Abs. 1 lit. b
forecast_sales_daily.* Pro Variante und Kalendertag aggregierte Netto-Verkaufsmenge (verkaufte minus erstattete Stück), abgeleitet aus read_orders. Keine Bestell-ID, kein Bestellwert, kein Käufer-Bezug nein (nicht einem Endkunden zuordenbar) Art. 6 Abs. 1 lit. b
forecast_inventory_snapshots.* Täglicher Stand des verfügbaren Bestands pro Variante (für die Stockout-Bereinigung der Prognose) nein Art. 6 Abs. 1 lit. b
forecasts.* Errechnete Prognose-Kennzahlen pro Variante (Tagesabsatz, Streuung, Methode, Verlässlichkeit, Lieferzeit, Sicherheitsbestand, Meldebestand) nein Art. 6 Abs. 1 lit. b
forecast_seasonality.* Shop-weiter, über alle Varianten gepoolter monatlicher Saison-Index nein Art. 6 Abs. 1 lit. b
suppliers.lead_time_days Optionale Lieferzeit (Tage) je Lieferant, fließt in den Meldebestand der Prognose ein nein Art. 6 Abs. 1 lit. b
product_settings.forecast_excluded Flag, ob eine Variante aus der Prognose ausgeschlossen ist nein Art. 6 Abs. 1 lit. b
shops.forecast_lead_time_days / forecast_service_level / forecast_orders_synced_through / forecast_orders_access Prognose-Standardwerte des Shops + Sync-Cursor (bis wann Bestellungen aggregiert wurden) + Status der read_orders-Freigabe (granted/pending, steuert den Hinweis-Banner auf der Prognose-Seite) nein Art. 6 Abs. 1 lit. b
shops.multi_location_enabled Schalter, ob der Shop den Multi-Standort-Modus aktiviert hat nein Art. 6 Abs. 1 lit. b
location_settings.* Mindestbestand-Override je (Variante, Shopify-Standort) nein Art. 6 Abs. 1 lit. b
purchase_orders.location_id / location_name Optionaler Ziel-Standort einer Bestellung (Shopify-Standort-ID + Anzeigename) nein Art. 6 Abs. 1 lit. b
stock_transfers.* Protokoll von Umlagerungen zwischen Standorten: Quell-/Ziel-Standort (ID + Name), Status, Notiz, Zeitstempel nein Art. 6 Abs. 1 lit. b
stock_transfer_lines.* Umlagerungs-Positionen: Variant-ID + Snapshot von Produkttitel/Variantentitel/SKU, Menge nein Art. 6 Abs. 1 lit. b

2.1 Was nicht gespeichert wird

2.2 Einwilligung für freiwillige Eingaben (Art. 6 Abs. 1 lit. a)

Die in der obigen Tabelle mit lit. a markierten Daten (pricing_feedback.*, feature_requests.message) werden ausschließlich auf Grundlage einer freiwilligen Einwilligung des Merchants verarbeitet:

2.3 Datenfluss

3. Speicherdauer

Daten Aufbewahrung Trigger zur Löschung
sessions.* Sofort gelöscht bei app/uninstalled-Webhook Webhook (durch Shopify ausgelöst, sobald die App im Shop deinstalliert wird)
shops.*, product_settings.*, alert_state.*, pricing_feedback.*, feature_requests.*, suppliers.*, purchase_orders.*, purchase_order_lines.*, purchase_order_receipts.*, forecast_sales_daily.*, forecast_inventory_snapshots.*, forecasts.*, forecast_seasonality.*, location_settings.*, stock_transfers.*, stock_transfer_lines.* Bis shop/redact-Webhook (regulär 48 h nach Deinstallation durch Shopify ausgelöst); fallback: 90 Tage ab uninstalled_at via Defense-in-Depth-Cleanup-Job shop/redact-Webhook, oder täglicher Cleanup-Job
forecast_sales_daily.*, forecast_inventory_snapshots.* (laufender Betrieb) Rollierendes Fenster von max. 400 Tagen; ältere Aggregate/Snapshots werden bei jedem nächtlichen Lauf automatisch gelöscht Nächtlicher Prognose-Job
Backups (Snapshots der Postgres-DB) 30 Tage rollierend, lokal und als verschlüsselte Off-Site-Kopie bei Cloudflare R2; anschließend automatisch überschrieben Rotationsskript
Server-Logs (pino, strukturiert) 30 Tage rollierend, anschließend rotiert Logrotate

GDPR-Webhook-Bodies und inventory_levels/update-Payloads werden grundsätzlich nicht in Logs geschrieben (siehe Abschnitt 6).

3.1 Residuelle Daten in Backups und Logs

Nach einer Löschung der Live-Datenbank über shop/redact oder den Defense-in-Depth-Cleanup-Job können shop-bezogene Daten technisch bedingt noch für die jeweilige Rotationsdauer in Backups und Logs vorhanden sein:

Diese residuelle Vorhaltung ist technisch zur Sicherstellung der Wiederherstellbarkeit und zur Fehlerdiagnose erforderlich (Art. 32 DSGVO — Integrität und Verfügbarkeit als Aspekt der Sicherheit der Verarbeitung) und wird ohne weiteres Zutun durch die genannten Rotationen automatisch beendet. Eine selektive Löschung einzelner Shop-Daten aus Backup-Snapshots ist technisch nicht praktikabel; eine gezielte Wiederherstellung gelöschter Daten aus Backups findet nicht statt.

Auf ein begründetes Auskunftsverlangen nach Art. 15 DSGVO wird die Existenz solcher residueller Backup-/Log-Inhalte transparent benannt; der konkrete Löschzeitpunkt ergibt sich aus der jeweiligen Rotationsdauer.

4. GDPR-Webhooks (Shopify-Pflichtimplementierung)

Stockify implementiert alle drei von Shopify geforderten GDPR-Webhooks:

Zusätzlich:

5. Verschlüsselung

6. Logs

Logs (strukturiert via pino) enthalten keine personenbezogenen Daten:

7. Cookies und clientseitiger Speicher (TTDSG § 25)

Stockify setzt keine Cookies. Die App-Oberfläche läuft eingebettet im Shopify-Admin und verwendet ausschließlich sessionStorage für die Dauer der jeweiligen Browser-Session:

Key Inhalt Zweck Lebensdauer
sessionStorage.shopify_host Von Shopify durchgereichter host-Parameter (Base64-codiert) Notwendig für App-Bridge zur Kommunikation mit dem Shopify-Admin Bis Schließen des Tabs
sessionStorage.shopify_shop Aktuelle Shop-Domain Notwendig für authentifizierte API-Aufrufe an den Stockify-Server Bis Schließen des Tabs
sessionStorage.shopify_locale Sprachcode (de / en) Notwendig für korrekte UI-Sprache nach Re-Mounts Bis Schließen des Tabs

Diese Speichervorgänge sind technisch unbedingt erforderlich für den Betrieb der App im Shopify-Admin und unterliegen daher der Ausnahmeregelung nach § 25 Abs. 2 Nr. 2 TTDSG — eine Einwilligung ist nicht erforderlich. Es findet kein Tracking, keine Profilbildung und keine Weitergabe an Dritte statt.

localStorage wird nicht verwendet.

8. Auftragsverarbeiter und Drittland-Transfer

Stockify nutzt folgende externe Dienstleister als Auftragsverarbeiter nach Art. 28 DSGVO:

Dienstleister Zweck Standort Verarbeitete Daten Rechtsgrundlage Drittland-Transfer Vertrag
Shopify International Ltd. Plattform (App-Hosting-Kontext, OAuth, Webhooks, Billing) Irland (EU) / Kanada OAuth-Token, Shop-Domain, Shop-Owner-Metadaten Konzern-DPA gemäß SCC für Kanada-Anteil Shopify Partner Program DPA
Brevo (Sendinblue SAS) Transaktionaler Mail-Versand der Reports/Alarme via Managed SMTP Frankreich (EU) Empfänger-Adresse (email_address), Mail-Inhalt (Liste kritischer Produkte) EU-intern, kein Drittland-Transfer Brevo Standard-DPA
Cloudflare, Inc. Ingress (TLS-Termination + Named Tunnel zum Origin-Server), optional Email-Routing für *@stockify.amassimo.com und verschlüsselte Off-Site-Backup-Ablage (Cloudflare R2) USA (EU-Adequacy-Maßnahmen) TLS-terminierter Klartext-Verkehr zwischen Edge und Origin (kurzlebig); E-Mail-Forwarding (privacy@); clientseitig verschlüsselte Datenbank-Backups (für Cloudflare nicht lesbar) Art. 45 DSGVO i.V.m. EU-US Data Privacy Framework + SCC Cloudflare DPA

8.1 Hinweise zu den Auftragsverarbeitern

8.2 Vom Merchant benannte Empfänger (Discord / Slack)

Wenn ein Shop in den Stockify-Einstellungen einen Discord- oder Slack-Webhook hinterlegt, übermittelt Stockify die Berichts- und Alarm-Inhalte (Shop-Domain, Produkttitel, SKU, Bestände) an den von diesem Shop ausgewählten Webhook-Endpunkt.

Diese Übermittlung erfolgt nicht im Wege einer Auftragsverarbeitung durch Stockify: Der Empfänger und der Kanal werden ausschließlich vom Merchant selbst bestimmt und konfiguriert; Discord bzw. Slack handeln insoweit als vom Merchant benannte Drittempfänger seines eigenen Kommunikationsdienstes. Stockify ist hier reines Übertragungswerkzeug nach Weisung des Merchants. Verantwortlicher i.S.d. Art. 4 Nr. 7 DSGVO für diese Datenflüsse ist der jeweilige Merchant, nicht Stockify; der Merchant trägt insbesondere die Verantwortung für etwaige eigene Auftragsverarbeitungsverträge mit Discord (USA, EU-US Data Privacy Framework) bzw. Salesforce/Slack (USA, EU-US Data Privacy Framework).

Die Empfänger-URL wird in der Stockify-Datenbank als technische Konfiguration des Shops gespeichert (siehe Tabelle in Abschnitt 2) und ausschließlich zum Versand der vom Merchant aktivierten Reports und Alarme verwendet.

8.3 Owner-Trigger-Pings an Discord (intern, ohne Personenbezug)

Bei einem neuen Eintrag in Wishlist/Feature-Requests sendet Stockify einen inhaltsfreien Trigger-Ping an einen privaten Discord-Webhook des Verantwortlichen. Der Payload ist ein hartkodierter konstanter Text:

Es werden keine Shop-Identifikatoren, keine Freitextinhalte, keine Empfänger-Mails und keine sonstigen personenbezogenen Daten an Discord übertragen. Den eigentlichen Inhalt der Wishlist-Einträge liest der Verantwortliche manuell in der lokalen Stockify-Datenbank nach.

Da bei diesen Pings keine personenbezogenen Daten verarbeitet werden, liegt insoweit kein Anwendungsfall des Art. 28 DSGVO vor; Discord ist hier kein Auftragsverarbeiter, sondern ein technischer Kommunikationskanal für die interne Betriebsorganisation des Verantwortlichen.

9. Rechte der Betroffenen

Sie haben jederzeit das Recht auf:

Anfragen zu Ihren Rechten richten Sie bitte formlos an [email protected]. Für Shop-Daten ist außerdem der Shopify-eigene customers/data_request- / customers/redact- / shop/redact-Mechanismus verfügbar (siehe Abschnitt 4).

10. Datenübermittlung in Drittländer

Eine Übermittlung in Drittländer findet im Verantwortungsbereich von Stockify ausschließlich gegenüber den in Abschnitt 8 genannten Auftragsverarbeitern statt. Konkret:

Brevo verarbeitet ausschließlich EU-intern. Eine Liste der zertifizierten US-Empfänger ist abrufbar unter https://www.dataprivacyframework.gov/.

Werden zusätzlich vom Merchant eigene Empfänger in den USA benannt (Discord-Webhook, Slack-Webhook — siehe Abschnitt 8.2), erfolgt die Übermittlung dorthin im Rahmen der Verantwortlichkeit des Merchants. Stockify führt diese Übermittlung lediglich technisch nach Weisung des Merchants aus.

11. Beschwerde- und Verletzungsmeldung

Sollte trotz aller technischen und organisatorischen Maßnahmen eine Datenpanne (Art. 33 DSGVO) eintreten, wird diese innerhalb von 72 Stunden nach Kenntnisnahme an die LDI NRW gemeldet. Betroffene Shops werden — sofern hohes Risiko vorliegt (Art. 34 DSGVO) — über die hinterlegte email_address benachrichtigt.

12. Änderungshistorie

Datum Änderung
2026-06-24 Drift-Korrektur nach Datenschutz-Audit: pricing_feedback (§2) auf das größen-basierte Modell aus Migration 006 aktualisiert (Zahlungsbereitschafts-Bucket + Wert-Treiber + serverseitiger Shop-Snapshot inkl. plan und features_used/Nutzungsprofil) — die alte „freier Preis-Betrag"-Beschreibung war überholt. shops.forecast_orders_access (Migration 007) und purchase_order_receipts (Migration 005) in §2 ergänzt sowie in Speicherdauer (§3) und shop/redact-Löschumfang (§4) nachgezogen. §5 um die At-Rest-Einordnung der read_orders-Aggregate erweitert (nicht personenbezogen, Erwägungsgrund 26).
2026-06-22 Feature „Mehrere Standorte & Umlagerung" (opt-in): neue Tabellen location_settings, stock_transfers, stock_transfer_lines sowie Spalten shops.multi_location_enabled und purchase_orders.location_id/location_name in Abschnitt 2 ergänzt — ausschließlich Standort-Infrastruktur (Standort-IDs/-Namen) und Variant/Mengen, keinerlei Kundendaten/PII. Speicherdauer (Abschnitt 3) und shop/redact-Löschumfang (Abschnitt 4) entsprechend erweitert (strukturelle Kaskadenlöschung). Keine neuen Shopify-Scopes — read_locations war bereits erteilt, Umlagerungen nutzen das bestehende write_inventory.
2026-06-17 Feature „Nachbestell-Prognose" (Forecasting): Scope read_orders (Protected Customer Data) ergänzt — es werden ausschließlich aggregierte Netto-Stückzahlen je Variante/Tag sowie Bestands-Snapshots gespeichert (Tabellen forecast_sales_daily, forecast_inventory_snapshots, forecasts, forecast_seasonality), keinerlei Kundendaten/PII; Abschnitte 2, 3 und 4 entsprechend erweitert, GDPR-Webhooks (Abschnitt 4) zur PII-Freiheit der Aggregate klargestellt. Backup-Angaben auf den realen Stand gebracht: 30-Tage-Retention sowie verschlüsselte Off-Site-Kopie bei Cloudflare R2 (Abschnitte 3, 3.1, 8, 8.1, 10).
2026-06-17 Feature „Bestellungen & Lieferanten": neue Tabellen suppliers, purchase_orders, purchase_order_lines in Abschnitt 2 ergänzt (Lieferanten-email/phone als personenbezogene Kontaktdaten); Speicherdauer (Abschnitt 3) und shop/redact-Löschumfang (Abschnitt 4) entsprechend erweitert inkl. Hinweis auf strukturelle Kaskadenlöschung.
2026-06-07 Preismodell-Anpassung (Free + Basic): obsoleten „Pro-Currency-Request"-Trigger-Ping und „Pro"-Tarif-Bezüge entfernt (Abschnitte 2.3 und 8.3). Anrede-Korrektur zur Sie-Form in Abschnitt 2.2.
2026-05-29 Klarstellung: Discord/Slack-Webhooks der Merchants sind keine Auftragsverarbeitung durch Stockify, sondern vom Merchant benannte Drittempfänger (neuer Abschnitt 8.2). Owner-Trigger-Pings an Discord werden als PII-freie interne Kommunikation klargestellt (neuer Abschnitt 8.3). Abschnitt 10 (Drittland-Transfer) entsprechend reduziert.
2026-05-27 Erstfassung mit vollständiger Art. 13 DSGVO-Umsetzung: Verantwortlicher, Rechtsgrundlagen, Speicherdauer, Cookies/sessionStorage-Hinweis, Discord/Slack/Cloudflare als zusätzliche Sub-Processors, Betroffenenrechte, Aufsichtsbehörde, Drittland-Transfer mit DPF + SCC

Diese Datenschutzerklärung wird code-synchron gepflegt: Änderungen am Datenmodell oder am Sub-Processor-Stack ziehen eine unmittelbare Aktualisierung dieser Datei nach sich. Der Stand der jeweils letzten Änderung ist oben unter "Letzte Aktualisierung" vermerkt.