Kartuu KYTH. Systems UG (haftungsbeschränkt)

Privacy Policy for Kartuu

Kartuu is a Shopify app of KYTH. Systems UG (haftungsbeschränkt). It turns paid Shopify orders into personalised gift vouchers as PDFs. This policy describes which personal data Kartuu processes in doing so.

This is an English translation. The legally binding version is the German one, the Datenschutzerklärung. This translation is provided for your convenience; where the two differ, the German version prevails.

Version 1.21
Date 6 October 2026
Consent record ID 1.27-2026-10-06
State of the software described 28 September 2026

1. At a glance


2. Controller

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

Represented by its managing directors Stefan Grasse and Stephan Wittmann
Register court: Local Court (Amtsgericht) Nürnberg, HRB 46313

Contact for data protection matters: datenschutz@kyth.systems
General contact: hello@kyth.systems
Phone: +49 1575 1603446

Data protection officer: No data protection officer has been appointed; under section 38 of the German Federal Data Protection Act (BDSG) there is no obligation to do so at the company's current size. The address above is responsible for all matters.


3. Three roles

This policy is addressed to three groups, and something different applies to each.

You are a merchant and install Kartuu in your shop You act for a merchant in the Shopify admin You bought something in a shop that uses Kartuu – or you received a voucher as a gift
Our role Controller under Art. 4(7) GDPR Controller under Art. 4(7) GDPR Processor under Art. 4(8), Art. 28 GDPR
The controller is KYTH. Systems UG (haftungsbeschränkt) KYTH. Systems UG (haftungsbeschränkt) the shop you ordered from
We act on our own legal basis, see section 5 on our own legal basis, see section 5.6 exclusively on the shop's instructions
Address your rights to us, see section 10.1 us, see section 10.1 the shop first, see section 10.2
Relevant section 5 5.6 6
What you must do yourself see § 12 of the data processing agreement — —

The third column covers two people: the person who bought the voucher and the person it is meant for. Of the recipient, Kartuu stores the name, email address and the greeting addressed to them, even though they ordered nothing themselves. For them, too, we are the processor; the controller is the shop (6.1, 10.2).

It is not we but the shop who decides on the purposes and means of processing a shop's customer data. The basis is a data processing agreement under Art. 28(3) GDPR, which the merchant concludes with us.

How the contract is concluded. When the app is connected in the Shopify admin, we show you three documents – this policy, the data processing agreement and the terms of service – and ask for your consent. Without consent, the app is not connected: no record of your shop is created, and no access tokens are obtained from Shopify. What we store as a record is set out in 5.3.

If the content of one of the three texts changes, it receives a new identifier, and you are asked for your consent again the next time you open the app. All three documents can be retrieved without logging in at https://kartuu.kyth.systems/rechtliches/; on request to datenschutz@kyth.systems we will also send them to you.


4. What Kartuu does

4.1 Overview

4.2 What Kartuu does not do

4.3 Permissions granted

On installation, Kartuu requests four permissions as well as access to the protected customer data fields “Name” and “Email address”. Shopify shows you this on installation, and you grant it by installing.

Permission What for Is it used?
read_orders to recognise voucher orders and read the details entered in the order form Yes, through the webhook, not through a query to Shopify
write_gift_cards to create the Shopify gift card behind a value voucher, with a code Kartuu generates itself Yes, when creating each value voucher and when deactivating after a cancellation or refund (after a partial refund, or for a partly used card, at the merchant's decision); when deactivating, only the card's identifier is transmitted
write_products to create the voucher product in your shop – product, option, one variant per amount, the metafields and the product image Yes, only on your click
write_merchant_managed_fulfillment_orders to report the voucher line item of a paid order as fulfilled as soon as the voucher has been released Yes, on every release. The identifier of the fulfillment order and the lines with quantities are transmitted; Kartuu does not trigger a notification to your customers
Field “Name” (protected customer data) to print the recipient's name and the giver's name on the voucher Yes, from the details of the order line item
Field “Email address” (protected customer data) to deliver the voucher and recognise the buyer on retrieval Yes, stored encrypted

read_all_orders is not requested: Kartuu only needs orders from installation onwards. Nor is write_publications – whether your voucher product becomes visible in your online store is for you to decide.


5. Data of merchants (we are the controller)

There is no processing for our own purposes – in particular for advertising, profiling, resale, training models or evaluations across merchants. The exceptions are the reason you give when uninstalling – we read it to improve Kartuu (5.3) – and the state of Shopify's request for a review, so that we do not ask more often than Shopify allows (5.1).

5.1 What is stored

A personal reference usually arises only indirectly here: the shop domain identifies a business, and in the case of sole traders there is a natural person behind it. We therefore treat this data like personal data.

Data category Source Purpose Legal basis Retention
Shop domain (e.g. beispielshop.myshopify.com) from the signature-checked Shopify session token or from the signed webhook message assigning your shop and incoming webhooks, addressing the Shopify token endpoint Art. 6(1)(b) GDPR (terms of service) until the shop/redact webhook, at the latest 30 days after uninstallation (9.2, 9.3)
Search hash of the shop domain (non-reversible check value, HMAC-SHA256) computed from the shop domain search index, so that queries do not run over the plain text Art. 6(1)(b), (f) GDPR – legitimate interest: to use the plain text as rarely as possible and to limit the damage if the database is compromised as above
Shopify access token of your shop, encrypted response of the Shopify token endpoint access to your shop's Admin API on your behalf, for the twenty-seven calls listed in section 7. Orders and customer data fields are not queried with it Art. 6(1)(b) GDPR deleted immediately on uninstallation; validity ends after 1 hour regardless
Shopify refresh token of your shop, encrypted response of the same endpoint renewing the access token without logging in again Art. 6(1)(b) GDPR deleted immediately on uninstallation; validity ends after 90 days regardless
Technical metadata: expiry and renewal times of the tokens, time of installation and uninstallation, permissions granted generated on the server or from Shopify's response controlling the token life cycle, resolving simultaneous installations, recognising late webhooks Art. 6(1)(b), (f) GDPR – legitimate interest: trouble-free operation as shop domain
Subscription status of your shop: whether an active subscription exists, the plan name, whether it is a test subscription issued by Shopify, and when it was last checked Shopify Admin API enforcing the paywall at three points – when setting up the voucher product, for the proof, and through the delivery lock, which stops automatic sending without a plan – and displaying your plan. The generation of a voucher that has already been paid for is not locked Art. 6(1)(b) GDPR (terms of service) as shop domain
Redeemed promo code: the code and the time of redemption your entry under Settings so that we can enter the promised discount for your shop at Shopify (5.3) Art. 6(1)(b) GDPR (terms of service, § 5) as shop domain
Your contact address (email), encrypted your entry in the consent step (mandatory field) notices to you: notification of a data breach, change of the data processing agreement, change of a sub-processor, forwarding of requests from data subjects. If you have set up a mail account, also at most once a day through that account a note when orders need your attention – only with counts and a link into the app; so that it stays at once a day, we record when the last note was sent. Once after installation, the setup email through our own mailbox: the steps still missing before the first voucher sale – only with a chosen plan and if one is still missing (5.3) Art. 6(1)(b) GDPR (terms of service and data processing agreement); additionally Art. 6(1)(c) GDPR for notifications under Art. 33(2) GDPR as shop domain
Record of your consent: time and identifier of each version agreed to generated on the server in the consent step proof that, and to which version, the contracts were concluded (Art. 28(3), Art. 5(2) GDPR) Art. 6(1)(b) GDPR; additionally Art. 6(1)(c) GDPR as shop domain
Language of your Kartuu interface when consenting: German or English the language in which Kartuu shows you the consent step; it follows the language setting of your Shopify account writing the setup email and the announcement under § 0.3 of the data processing agreement in your language Art. 6(1)(b) GDPR (terms of service) as shop domain
Your shop's appearance: name for the voucher card, chosen logos and the language of the vouchers your entry in the admin; the language preset at your first consent from the country of your shop (5.2) name, logo and language on the card Art. 6(1)(b) GDPR (terms of service) as shop domain
Your house colours: up to twelve colour values (hex codes) you have saved your entry in the admin offering them for a click at every colour choice in the design; none of it is printed Art. 6(1)(b) GDPR (terms of service) as shop domain
Setup state: when you completed the setup, which items on the list up to the first sale you ticked off yourself, and when the two Kartuu blocks in your theme were first demonstrably displayed your entry in the admin or the first display of a block showing you on the start overview what is still to be done Art. 6(1)(b) GDPR (terms of service) as shop domain
State of the setup email: whether it was sent, was not needed or is being sent, and since when on the server when sending sending the setup email only once (5.3) Art. 6(1)(b) GDPR (terms of service) as shop domain
State of the announcement: which version of the legal texts we last announced to you under § 0.3 of the data processing agreement, and when on the server when sending showing from when a new version applies, and announcing each change only once (5.3) Art. 6(1)(b) GDPR (data processing agreement) as shop domain
State of the review request: when Kartuu called Shopify's own request for a review and Shopify's response to it (such as “not right now” or “already reviewed”). We do not see the text of the request or any review Shopify, through App Bridge in your browser not asking more often than Shopify allows, and no longer once you have reviewed Art. 6(1)(f) GDPR – legitimate interest: to ask for reviews without pressing you as shop domain
Reason for an uninstallation: the reason you select in Shopify's uninstall dialog, your free text on it, the time and the shop domain. What the free text says is up to you; if you name a person in it, we learn that too Shopify, through the Partner API Shopify provides to app developers understanding why merchants remove Kartuu again, and improving Kartuu. The reason reaches us as an email to our own mailbox (5.3) Art. 6(1)(f) GDPR – legitimate interest: to learn where Kartuu falls short and to improve the app. You can object (Art. 21 GDPR, 10.1) 30 days; not in our database (5.3)
Credentials for your email sending: mail server, port, sender and reply-to address, optionally user name and password, the switch for automatic sending. User name and password encrypted (AES-256-GCM); the password is never shown again your entry in the admin delivering the vouchers through your mail account Art. 6(1)(b) GDPR (terms of service) as shop domain
Uploaded pictures – the image content. For JPEG, PNG and WebP, the file scaled to at most 2000 pixels edge length if the picture was larger, then re-encoded; in every case without embedded capture data (EXIF and similar) except for the orientation; for SVG, the version cleaned of everything executable your upload in the admin drawing the picture on the voucher card, in the preview and in the PDF, and – if it belongs to the design of a voucher product – in its product image and in the card preview on the product page (6.6) Art. 6(1)(b) GDPR (terms of service). For people who can be seen in a picture or appear in its capture data, you provide the legal basis as long as your shop exists (9.2)
Uploaded pictures – details about them: key, file type, size, width and height, checksum (SHA-256), time of upload determined when the picture is checked listing your pictures and showing their aspect ratio Art. 6(1)(b) GDPR as shop domain
Your voucher products, per product: type, Shopify product ID, handle, chosen template or chosen draft, state of the product image, time of creation recorded on creation preventing duplicate creation, showing the state, recognising voucher line items in the order process Art. 6(1)(b) GDPR (terms of service) as shop domain
Saved drafts of your card design your entry in the admin reusing drafts and assigning them to a voucher product Art. 6(1)(b) GDPR (terms of service) as shop domain
Webhook identifiers with status and timestamps header of the incoming webhook request duplicate protection: repeats of the same webhook are not processed more than once Art. 6(1)(f) GDPR – legitimate interest: to prevent multiple processing 30 days after completion (9.4)
Access log for protected customer data: shop identifier, time, actor, purpose, affected field category, number of records own application a condition of Shopify's approval for protected customer data and accountability under Art. 5(2) GDPR: it proves that data was accessed, not which data. Seven purposes are recorded: an access request under Art. 15, an erasure under Art. 17, creating vouchers from a paid order, viewing the order overview, completing the details of an ordered item, downloading the voucher as a PDF and changing the delivery address Art. 6(1)(f) GDPR – legitimate interest: to meet the evidence requirements of the Shopify Partner Program Agreement; additionally Art. 6(1)(b) GDPR as shop domain
Application logs: shop domain, internal shop identifier, actor and purpose in the access log, subscription status, for rejected entries only the name of the field, for uploads the image type or the reason for rejection, in the order process the order, line item and voucher identifiers, count and state reached as well as a short error reason, the type of an exception and, in the cases named in 5.2, its message. Never a voucher code, a claim token, a name, a greeting or a customer email address own application operational diagnostics Art. 6(1)(f) GDPR – legitimate interest: to detect faults and attacks 14 days (9.7)
Shop domain and webhook identifier from webhooks for shops without consent – Shopify also sends certain webhooks (such as app/uninstalled or orders/paid) before you have consented to the app from the signed webhook message receipt and signature check. No record of your shop and no vouchers are created; the content is discarded after the check Art. 6(1)(f) GDPR – legitimate interest: to properly receive webhooks we are obliged to subscribe to; additionally Art. 6(1)(c) GDPR for the data protection webhooks webhook identifier 30 days (9.4), log line 14 days (9.7)

The access log has no column that could hold a name, an address, an email address or a voucher number. There is no choice regarding this log; it is a condition of Shopify's approval.

Necessity. Providing the shop domain and the Shopify access tokens is neither required by law nor by contract, but it is necessary for using Kartuu. This data arises automatically when you connect the app. Your contact address is a mandatory field: without it and without your consent, the app is not connected, and no contract is concluded (Art. 13(2)(e) GDPR).

Where the pictures are stored. All other details in this table are stored in the database on our server in Berlin, except for the reason for an uninstallation (5.3). The image content of the pictures is stored as a file on the same server, on a persistent storage medium. It is not part of the database backup (9.6).

Who can retrieve a picture. There is no address under which the storage would be generally readable. In the admin, you receive your pictures after your session has been checked. Outside of it, a picture is delivered only through a signed address that becomes invalid after one to two hours: in the preview in the admin and – if the picture or logo belongs to the design of a voucher product – to any person who opens that product page with the card preview (6.6). That person can download the image file as it is stored.

What an uploaded picture contains is up to you. We check it for format, dimensions and harmlessness (11.2) and do not look through its content. A photo from a mobile phone can carry the time of capture, the device and the location. We remove this capture data from every picture on upload; only the orientation is kept, so that a photo taken upright does not lie on its side. If the longer edge measures more than 2000 pixels, the picture is also scaled down and re-encoded; a smaller picture is not re-encoded. Pictures uploaded before 23 September 2026 have been cleaned in the same way.

5.2 What is not stored

In the consent step, we ask for an email address at which we can reach you. Together with your consent, we store:

Item Form
who – your contact address encrypted (AES-256-GCM)
when – time of consent timestamp
which version – the identifier of the text you agreed to plain text, e.g. 1.12-2026-09-17
in which language – German or English, as Kartuu showed you the consent step plain text

The version identifier is set exclusively by the server; a value sent along by the browser is not accepted. Every consent given is recorded individually.

What we do with it. We write to you at this address in the event of a personal data breach, a change of the data processing agreement, a change of a sub-processor, or to forward a request that a data subject has addressed to us instead of you. We announce a change of the data processing agreement to you at least 30 days in advance (§ 0.3 there) – automatically, from our own mailbox at INWX GmbH (section 7), in the language in which you saw Kartuu when consenting (in German if we do not know it); we record which version we announced to you and when. Before sending, we receive a preview with your shop domain and the text, afterwards a short report; we delete both after 30 days. If you have set up a mail account, Kartuu also sends a note to this address through that account at most once a day when orders need your attention – only with counts and a link into the app.

We also write to you once with the setup email: on the morning after installation, and only if you have chosen a plan and a step is still missing before the first voucher sale – such as the voucher product or a Kartuu block in your theme. If you choose the plan later, it comes on the morning after, at most one week after installation; without a plan we do not write to you. It names the missing steps and how to do them, in the language in which you saw Kartuu when consenting, and comes from our own mailbox at INWX GmbH (section 7). We send no further emails of this kind, not even a reminder. The setup email contains no advertising: no price, no promo code, no request for a review and no call to book a plan. The legal basis is Art. 6(1)(b) GDPR (terms of service).

It addresses you by the first name Shopify holds as the owner of your shop; we read it only when sending and do not store it (5.2). If there is no usable first name, we greet you without a name. The legal basis for this salutation is Art. 6(1)(f) GDPR – legitimate interest: to address you personally. You can object (Art. 21 GDPR, 10.1); we will then greet you without a name.

We do not send marketing. The address is not passed on to third parties and not analysed.

If you write to us, we process your message and your sender address in order to answer it. The legal basis is Art. 6(1)(b) GDPR insofar as the terms of service are concerned, otherwise Art. 6(1)(f) GDPR – legitimate interest: to answer requests addressed to us.

Changing the address. Write to datenschutz@kyth.systems. With every new version of these texts, the consent step also shows you the stored address for editing.

Billing. Kartuu uses the app plans managed by Shopify: selection and payment take place at Shopify. We ask Shopify whether your subscription is active, what the plan is called, whether it is a test subscription and until when the current billing period runs; the latter is only displayed and not stored. We do not process payment data; it remains with Shopify.

On the plan “Kartuu Free”, we report to Shopify, for billing, the value of each voucher issued in US dollars, together with the identifier of your shop and the time, and store these reports until your shop is deleted. For the conversion we retrieve the reference rates of the European Central Bank; no details about you or your customers are transmitted in doing so. This applies only to shops that have consented from consent record ID 1.27-2026-10-06 on.

Promo code. If you redeem a promo code under Settings, we store the code and the time with your shop. The discount is not granted by Kartuu itself: we enter it manually at Shopify (terms of service § 5). So that we learn of it, our server sends a message to our own mailbox at INWX GmbH (section 7) – with your shop domain, the code, the time, your plan status and whether Kartuu is still installed; it contains no other details. As soon as you have booked a plan, a second message of the same kind follows. So that none comes twice, the server records which redemptions it has already reported (shop domain and time); if your shop disappears from our database (9.2), the record disappears with the next run, at the latest after one hour. We delete the messages from the mailbox as soon as the discount has been entered or it is certain that it will not be entered. The legal basis is Art. 6(1)(b) GDPR.

If you uninstall Kartuu. When you uninstall, Shopify asks for a reason and offers a free-text field for it. Shopify provides both to us as the app's developer through its Partner API, together with the shop domain and the time. Our server queries this information every hour and sends it as an email to our own mailbox at INWX GmbH (section 7) – supplemented by the date of installation, your plan and whether the setup was completed, as long as this information is still in our database (9.2). The email contains no data of your customers. We read it to understand why merchants remove Kartuu again and to improve the app; we do not send you a survey about it. We delete the email after 30 days. So that no uninstallation is reported twice, the server records the shop domain and time of every reported uninstallation; the record is cut back to the last 30 days on every run. The legal basis is Art. 6(1)(f) GDPR – legitimate interest: to learn where Kartuu falls short and to improve the app. You can object to this at any time (Art. 21 GDPR, 10.1).

5.4 App Bridge from the Shopify CDN

Kartuu's embedded interface loads the “App Bridge” library directly from cdn.shopify.com. This request comes from your browser. Shopify receives the usual connection data (IP address, browser identifier) and the origin https://kartuu.kyth.systems, but no customer, order or voucher data and no token. The recipient is Shopify, i.e. the same party that delivers the Shopify admin to you.

5.5 No cookies of our own, no tracking in the app

Kartuu sets no cookies of its own and does not use sessionStorage. No analytics, statistics, advertising or tag services are integrated in the app, and no external font or icon services are called. If Kartuu reads the cookie kyth_klick of our website, it does so solely for the attribution in 5.7 and only if you consented to it on kyth.systems.

Two entries in browser storage. Kartuu stores at most two notes in your browser's localStorage, each only on your click:

The notes contain no information about you or your shop and are not transmitted to us. You remove them by deleting the site data of kartuu.kyth.systems in your browser; the notes then appear again.

Consent under section 25 of the German Telecommunications Digital Services Data Protection Act (TDDDG) is not required: the notes are strictly necessary so that the function you have expressly requested – keeping the respective note hidden – can be provided (section 25(2) no. 2 TDDDG).

5.6 If you act for a merchant in the Shopify admin

This information applies to people who open Kartuu for a merchant without being the merchant themselves – such as employees, agencies or technical service providers. Art. 14 GDPR applies.

5.7 Attributing your installation to an ad

This information applies only if you came to Kartuu through our website kyth.systems and consented to the Meta pixel in its banner. The website then sets the cookie kyth_klick for kyth.systems and its subdomains (website privacy policy, section 9).


6. Data of a shop's customers (we are the processor)

6.1 Who is affected and what is stored

Person What is processed about them Source
The buyer name and email address (encrypted, plus a search value of the address) and the Shopify customer number (missing for a guest purchase) from the paid order
The recipient name, email address and the greeting addressed to them from the details in the order form
The giver, insofar as they enter themselves as sender the sender's name from the details in the order form

The recipient's email address is stored so that the voucher can be delivered to them: the email goes out through the merchant's mail account and contains the voucher as a PDF and a claim link. If the merchant has not set up a mail account, no email is sent. With the card, the recipient also learns the giver's name and the greeting. As the recipient did not provide their data themselves, Art. 14 GDPR applies to informing them; this is the shop's responsibility (6.3).

One record is created per item purchased:

Item Form Purpose
Name and email address of the buyer encrypted (AES-256-GCM) assigning the order, retrieval through the Kartuu block (6.5)
Recipient's name, recipient's email address, sender's name, greeting encrypted (AES-256-GCM) printing on the card; the address for delivery
Search values of the email addresses of the recipient and of the buyer non-reversible check values (HMAC-SHA256) so that an access or erasure request can find the recipient and a buyer without a customer number
Shopify customer number of the buyer plain text search key of the data protection webhooks
Voucher code encrypted, plus a non-reversible search value Shopify releases the code only once; the search value prevents duplicate codes and allows a presented voucher to be found again
Claim token of the voucher encrypted, plus a non-reversible search value address of the claim page on which the voucher can be retrieved as a PDF
Order and line item identifier, running number of the item plain text protection against a repeatedly delivered webhook creating second vouchers
Order header: order number, time, total amount with currency, payment method, sales channel plain text making the order recognisable in the merchant's overview
Discount with which a voucher was bought: amount with currency, code or title of the discount, whether it applied to the whole order plain text showing you in the order overview and export that a voucher was bought with a discount – the card keeps its full value
Face value, currency, printed amount, shop name, language of the card, expiry date (only if you have set an expiry period for gift cards in Shopify) plain text being able to generate the card without the order message
Preferred date plain text (point in time) sending the email only from the day chosen in the order form; “Send now” overrides it
Status, time of the last status change, time the delivery was reserved for sending, error counter, short error reason plain text process and error handling; a delivery is carried out only once
Open question after a refund: which question, for a partial refund the number of items still to be decided, since when plain text showing you where to decide, after a partial refund or for a card already partly used, whether the voucher becomes invalid
Identifier of the Shopify gift card plain text assigning the card. No balance is stored
Copy of the card template with placeholders instead of values JSON so that a reprint produces the same card; the personal values are not contained in it
Keys of the pictures in this card plain text so that a picture in use cannot be deleted

Not stored: the customers' postal address and phone number, payment data, the order content outside the voucher line items and the order header, and the generated PDF.

Processed only briefly:

Uploaded pictures. What can be seen in a picture is decided by the merchant alone; Kartuu does not check it. If a picture shows people, their data is stored for as long as the shop exists (5.1). The upload is an instruction from the merchant (§ 3.2 no. 3 of the data processing agreement).

6.2 How long this data is stored

Event Effect
Erasure of an individual person (customers/redact or a request to us) names, email addresses, their search values and the greeting are deleted; the customer number, if it belongs to the person. The voucher itself remains with code, status, value and template copy, so that it can still be redeemed
Three years after the voucher was created the personal details are emptied; the voucher itself remains (9.5a)
Deletion of the shop (shop/redact, or failing that after 30 days, 9.3) all voucher records are deleted completely together with the shop (9.2)

Shopify does not transmit the erasure of a recipient who has never bought anything in the shop themselves. It is carried out manually on request to datenschutz@kyth.systems (10.2).

6.3 On whose instructions we act

The processing of order, customer and recipient data takes place exclusively on the shop's instructions. The legal basis towards the data subject is provided by the shop – as a rule Art. 6(1)(b) GDPR for the performance of the purchase contract. The duty to inform recipients under Art. 14 GDPR lies with the shop.

6.4 Shopify's three data protection webhooks

Webhook What Kartuu does with it
customers/data_request access request from an individual person. Using the customer number and the email address – of the recipient as well as of the buyer – Kartuu searches for the associated records and compiles, decrypted, the recipient's name and email address, the sender's name, the greeting and the buyer's name and email address; the voucher code and the claim token are not included. It is recorded that the request came in and how many records there are. Kartuu hands the content over to the shop in text form on request (10.2)
customers/redact erasure request for an individual person. Kartuu anonymises the records found (6.2)
shop/redact 48 hours after uninstallation, Shopify reports that all of the shop's data is to be deleted. Kartuu deletes it (9.2)

Only the customer number and the email address are evaluated from these webhooks; other details sent along, such as phone number and postal address, are discarded. Every webhook is checked against its signature before processing (HMAC-SHA256). Our role is that of the processor; the shop's legal basis is as a rule Art. 6(1)(c) GDPR. What remains is an entry in the access log without a name, address or customer identifier.

Even without a customer account. A person is found through their customer number or through their email address – as recipient as well as buyer, even if they bought without a customer account. For vouchers from before 23 September 2026, we add the search value of the buyer's address needed for this, as long as the address is stored.

6.5 The Kartuu block on the thank-you and order status page

The merchant can place a Kartuu block on the thank-you page and on the order status page of their shop. The buyer's browser then calls our server.

What is sent a short-lived session token issued by Shopify and the reference to the order; for logged-in buyers, the token contains the Shopify customer number. Anyone who bought without a customer account can additionally enter the email address given with the order
What arises in the process the browser's IP address, as with every page request. It is not stored (9.8)
What goes back as a rule only a status and the shop's display name, such as “being created” or “the shop is delivering”
When the claim links go back when the customer number from the session token belongs to every still valid voucher of this order or when the email address entered matches the one given in the order. The response then contains the claim links to the vouchers of this order
The email address entered is only compared with the stored address and not stored. If it does not match, Kartuu records this failed attempt with order identifier and time – without the address – to limit the attempts per order and per shop
Our role processor – the block belongs to the shop
Retention the request itself is not stored; a failed attempt with order identifier and time at most one day

6.6 The card preview on the product page

If the merchant places the Kartuu block on their product page, it shows a preview of the voucher card there. The visitor's browser loads this preview through an address of the shop (/apps/kartuu/…); Shopify forwards the request to our server with a signature, adding the shop domain and, for logged-in customers, their customer number. Kartuu uses this information only to check the signature and returns a card with empty placeholder fields. What the visitor types into the order form is inserted into the preview by their browser alone; it is not transmitted to us for this.

The card shows the design of the voucher product with the shop's name, logo and picture. The browser loads the fonts and pictures of this card directly from kartuu.kyth.systems, the pictures through signed addresses that become invalid after one to two hours. The browser's IP address arises in the process; it is not stored (9.8). An uploaded image file that belongs to the design can be downloaded by the visitor as it is stored (5.1).

Nothing is stored. Our role is that of the processor.


7. Recipients and sub-processors

Recipient Registered office Role What flows there
Shopify International Ltd. (for merchants in the EEA), affiliated with Shopify Inc., Canada Ireland or Canada the platform on which Kartuu runs – your own processor, not ours (§ 6.4 of the data processing agreement) (a) calls to your shop's token endpoint with our app identifier, our app secret and the session or refresh token. (b) Calls to your shop's Admin API with the access token – twenty-seven different ones: the query of the subscription status; the query of the shop name; at your first consent the query of your shop's country code – only the code from the billing address, for example “US”; from it we set the language and paper of your cards, and only this setting is stored (5.2); the query of the owner's name, i.e. the name Shopify holds as the owner of your shop – only the first name goes from it into the salutation of the setup email, and it is not stored (5.2); the query of the expiry period you have set in Shopify for gift cards; creating a gift card, in which the voucher code, face value with the currency of the purchase, the expiry date where applicable, and a note without personal data are transmitted – not the buyer's customer number; deactivating a gift card on cancellation, in which only its identifier is transmitted; the query of the balance of a card – for the export under “Export” of all value vouchers of your shop; the query of the state of the order and fulfilling the order on release, with order and line item identifiers and quantities; the query of the cancellation and payment status of an order immediately before a voucher is issued, with the order identifier; around your voucher products ten more – checking whether the product handle already exists, whether a stored product ID still exists, title, status and main image of a voucher product for the list in the admin together with whether tax is charged on sale, reading the variant identifiers and switching the tax liability on sale at the push of your button, creating the voucher product and updating the inventory fields of a variant, for a value voucher reading its variants and the price lists of your markets, setting fixed prices in them and renaming its option values –, without personal data; and around its product image another four – requesting an upload target, attaching the product image, querying the media status and detaching surplus images; plus the query of the identifier of the app installation and setting the delivery flag on it – only a yes or no as to whether you have set up email sending, so that the Kartuu block in the shop only asks for the recipient address and preferred date in that case. (c) Transferring the product image to the storage location Shopify names for it: a PNG of the whole voucher card with made-up sample details (sample name, sample amount, a code beginning with “MUSTER”, sample greeting), with your shop's display name, logo and picture – no details of a real person and no valid code. (d) Webhooks from Shopify to us, including orders/paid with the content of a paid order. (e) The App Bridge library your browser loads (5.4). (f) The Partner API, which Shopify provides to app developers: our server uses our own access there to query which shops have uninstalled Kartuu. Only this access goes there; back come the shop domain, time, the reason chosen and the free text (5.3). Kartuu does not query customer data fields through the Admin API
IONOS SE Montabaur, Germany; data centre Berlin hosting: virtual server with application and database all data named in sections 5 and 6. No third-country reference
IONOS Cloud GmbH (object storage) Montabaur, Germany; data centre Berlin storage of the daily, encrypted database backups the complete database backup (9.6). No third-country reference
The merchant's mail server, i.e. the one you enter (only if you have set up email sending) wherever your mail provider operates it your own mail account – your processor, not ours the login with the user name and password you entered. When a voucher is sent, the email to the recipient: their email address, recipient's and sender's names, the shop name, the claim link with its validity date and the voucher as a PDF with greeting, amount and voucher code. On your click, a test email to your reply-to address. At most once a day the note to your contact address (5.3). The mail server delivers the emails onwards
INWX GmbH Berlin, Germany; mail servers in Berlin provider of our business mailboxes under kyth.systems emails you write to us. The setup email to your contact address (5.3): the address itself, your shop's name and, if Shopify holds a usable one, your first name, the date of installation, what has already been done, the steps still missing and a link into your Shopify admin; if it does not arrive, also the bounce (5.2). The message about a redeemed promo code (5.3): shop domain, code, time, plan status and whether Kartuu is installed. The message about an uninstallation (5.3): shop domain, time, reason and free text, plus the date of installation, plan and setup state. The announcement of a change to the data processing agreement to your contact address (5.3): the address, what changes and from when; plus a preview and report to us with your shop domain, deleted after 30 days. No data of your customers. No third-country reference
Meta Platforms Ireland Ltd. Dublin, Ireland joint controller with us for attributing an installation (5.7), solely responsible for further processing only with an attribution under 5.7: the event "StartTrial" with the time of the installation, the address of the website page, _fbc, _fbp, the hashed random identifier, IP address and browser identifier. No shop domain, no contact address, no data of your customers
GitHub, Inc. San Francisco, USA private source code repository no merchant or customer data, only source code

The uploaded pictures are stored on our server and not in the object storage.

Cloudflare runs the DNS zone kyth.systems. For Kartuu, Cloudflare only answers which IP address belongs to kartuu.kyth.systems; the data traffic between your browser and Kartuu does not run through Cloudflare. Cloudflare is therefore not a processor for Kartuu.

Your mail provider is your own processor: Kartuu merely hands in voucher emails through the account you set up. Whether a third country is involved depends on your mail provider and is outside our influence. There is no service engaged by us for sending voucher emails, nor any analytics, tag or error-tracking service in the app; only the attribution from 5.7 goes to an advertising service. Our own mailboxes are with INWX GmbH (above); our notices to you from 5.3, including the setup email, also go out through them.

Addresses of the recipients:

Recipient Address Register
Shopify International Limited The Sidings, 4th Floor, Grand Canal Quay, Dublin D02 E7K8, Ireland —
Shopify Inc. 151 O'Connor Street, Ground floor, Ottawa, Ontario K2P 2L8, Canada —
IONOS SE Elgendorfer Straße 57, 56410 Montabaur, Germany Local Court Montabaur, HRB 24498
IONOS Cloud GmbH Elgendorfer Straße 57, 56410 Montabaur, Germany Local Court Montabaur, HRB 31110
INWX GmbH Prinzessinnenstr. 30, 10969 Berlin, Germany Local Court Berlin-Charlottenburg, HRB 237141 B
Meta Platforms Ireland Ltd. Merrion Road, Dublin 4, D04 X2K5, Ireland —

8. Transfers to third countries

Server, database and backups are located in Berlin. A third-country reference arises through Shopify and, with the attribution from 5.7, through Meta. As for Shopify: the contracting party for merchants in the EEA is Shopify International Limited in Ireland; the group has companies in Canada and the USA, among other places. We cannot determine where Shopify processes the data sent to the token endpoint and the Admin API.


9. Retention and deletion

9.1 When the app is uninstalled

When Kartuu receives the app/uninstalled webhook, both access tokens are deleted immediately and the time of uninstallation is recorded. The other data remains for the time being, so that late webhooks can still be assigned and you do not have to consent again if you reinstall Kartuu before the final deletion under 9.2 – as a rule, that is, within 48 hours. The longer period under 9.3 applies only if the deletion webhook does not arrive.

9.2 Final deletion

Shopify usually sends the shop/redact webhook 48 hours after uninstallation. Kartuu then first deletes your uploaded pictures and then, in a single transaction, all of your shop's data from the database, including all voucher records.

The vouchers' claim page disappears together with the data. A PDF that has already been delivered remains with the recipient; the gift card in the merchant's shop remains valid.

You cannot delete individual uploaded pictures in the app; they remain for as long as your shop exists. On request to datenschutz@kyth.systems, we will remove a specific picture and confirm this.

9.3 If the deletion webhook does not arrive

If shop/redact does not arrive, a daily clean-up run deletes all of the shop's data 30 days after uninstallation in the same way as in 9.2, including the pictures.

If a shop record was created without the connection being established (no access and no refresh token stored), the same run deletes it after 90 days.

9.4 Webhook identifiers: 30 days

The webhook identifiers used for duplicate protection are technical identifiers without personal reference. The clean-up run removes them 30 days after processing has been completed.

9.4a Origin of an installation

We delete the IP address and browser identifier from the attribution (5.7) as soon as the event has been sent to Meta or it is certain that it will not be sent, at the latest eight days after the installation. We delete the other details together with your shop (9.2).

9.5 Erasure of individual persons

Through customers/redact or on request, a person's personal details in the voucher records are deleted; the voucher itself remains (6.2).

9.5a Voucher data once the purpose has ceased

The personal details of a voucher – recipient's name and email address, sender's name, greeting, the buyer's details and their customer number – are deleted three years after the voucher was created. The voucher itself remains with code, status, value and template copy. The decisive factor is the regular limitation period for the claim arising from the voucher (section 195 of the German Civil Code, BGB). The claim link is valid for at most the same period.

9.6 Backups

The database is backed up daily. Each backup is encrypted with AES-256 before it leaves the server, stored on the server and in IONOS's object storage in Berlin, and transmitted over TLS. The password is not stored in the object storage. The fields requiring special protection (access tokens, contact addresses, customer data) are additionally encrypted individually within the backup; this key is stored neither in the backup nor in the object storage, but only in the application's environment on the server.

Storage location Retention
on the server 30 days
in IONOS's object storage 95 days, of which the first 90 days cannot be deleted

That a backup can be restored has been verified by an actual restoration. A daily check run reports missing backups.

Uploaded pictures are not part of the backup. If they are lost, the pictures are missing; all other data is unaffected.

Effect on deletions: Deleted data is still contained in backups already made and disappears from them when the periods above expire – at the latest after 30 days on the server and after 95 days in the object storage. As long as it remains there, it is used exclusively for restoration in the event of a fault.

9.7 Application logs: 14 days

Application and container logs are kept for 14 days and then deleted. Their content is described in 5.1. The same applies to the logs of the scripts on the server that send the setup email, the message about an uninstallation and the message about a redeemed promo code (5.3): per run they record the shop domain and the result, never a contact address, a name or the content of an email, and are deleted after 14 days.

9.8 The upstream proxy

A reverse proxy running on the same server in Berlin sits in front of the application container. Its access logging is switched off; it stores no IP addresses, no browser identifiers and no query parameters. Only for the vouchers' claim page (addresses under /gutschein) does it count requests per IP address in order to slow down mass retrieval: for this, the address is held only in memory and discarded two seconds after its last request, without being logged or written to a storage medium. Its own operating log contains only start-up messages and certificate errors with domain names, no details of visitors. The legal basis is Art. 6(1)(f) GDPR – legitimate interest in secure operation.


10. Your rights

10.1 If you are a merchant

You have the following rights towards us:

To exercise them, write to datenschutz@kyth.systems. We respond free of charge and within one month (Art. 12(3) GDPR). The quickest way to have all of your data erased is to uninstall the app (9.2).

10.2 If you bought something in a shop or received a voucher as a gift

Please contact the shop from which the order was placed. The shop is the controller for your data; we act only on its behalf.

If you received a voucher as a gift: As a rule, Shopify does not know you as the recipient (6.4). Write to datenschutz@kyth.systems; we will forward your request to the shop and carry out an erasure on its instructions.

If you cannot reach the shop, you can also contact datenschutz@kyth.systems. We will forward your request to the shop and inform you about it. The shop decides on the substance regarding your data.

10.3 Complaint to the supervisory authority

You can lodge a complaint with a data protection supervisory authority at any time (Art. 77 GDPR), in particular in the member state of your habitual residence, your place of work or the place of the alleged infringement. The authority responsible for us is:

Bayerisches Landesamt für Datenschutzaufsicht (BayLDA) (Bavarian Data Protection Authority)
Promenade 18, 91522 Ansbach, Germany
poststelle@lda.bayern.de

10.4 No automated decision-making

There is no automated decision-making, including profiling, within the meaning of Art. 22 GDPR.


11. Technical and organisational measures

In brief: access tokens and customer data are stored in the database only in encrypted form, the data of different shops is kept separate, incoming messages are checked for authenticity, and credentials do not get into logs. There is no certification under Art. 42 GDPR or under ISO. The complete description is in Annex 2 of the data processing agreement.

11.1 Confidentiality

11.2 Integrity

11.3 Availability

11.4 Handling incidents

There is a procedure for data protection incidents with escalation levels, the 72-hour notification period under Art. 33 GDPR, the competent supervisory authority, and a reference to the duty to inform recipients under Art. 14 GDPR.


12. Changes to this policy

If the scope of processing changes, we change this policy beforehand and assign a new identifier. Whoever installs Kartuu afterwards agrees to the new version. If you agreed to an earlier version, we ask you for your consent again when you open the app, before new processing affects your data. The version currently in force is available at https://kartuu.kyth.systems/rechtliches/datenschutz (English: https://kartuu.kyth.systems/rechtliches/datenschutz?locale=en).

Processing for another purpose. If we intend to process your data for a purpose other than the one for which it was originally collected, we will inform you in advance in text form at your contact address about that purpose and all other information under Art. 13(2) GDPR (Art. 13(3) GDPR).