Skip to content

Legal

Privacy Policy

This policy explains what data we process when you use the Catch Feels store (account, orders, payments, shipping, security), how cookies work and how you can manage your consents.

Last updated: 8 October 2026

Data controller and contact

The controller of your personal data is Catch Feels — Adam Zimniak, ul. Bobrzeckiej 9/20, 31-216 Kraków (the “Store”).

Who this policy applies to

This policy applies to people who use the website, in particular:

  • visitors (for example browsing products),
  • account holders (signing in, managing account data),
  • buyers (orders, payments, delivery, returns),
  • people who contact us (for example by e-mail about an order).

What data we process

1) Account and sign-in

  • e-mail address,
  • profile details, if you save them in your account: first name, last name, company, phone and address,
  • password (if you set one) – stored as a secure hash, never as a plain-text password,
  • e-mail code sign-in: we send a short code and verify it (the code is not stored in plain form in the database),
  • session data (for example session tokens), kept by the Auth.js / NextAuth mechanism.

2) Orders and customer service

  • ordered products, variants, quantities, amounts, discounts, order status,
  • engraving text and technique, if you order an engraved product,
  • the chosen delivery method (for example DPD / InPost) and the pickup point/locker identifier (if applicable),
  • the e-mail address used to communicate about the order (also for a guest – it may be completed from the payment data),
  • details entered in the Stripe payment form: first name, last name, delivery address and phone number (the phone number is needed by the courier),
  • return requests: the returned products, the reason (if you give one) and the parcel number.

Product reviews

  • the rating, the text of the review and the name you enter in the form yourself (optional; without a name the review appears as “Customer”),
  • once approved, the review together with the name is published on the product page – we never publish your e-mail address; you can ask for a review to be removed by writing to the contact address.

3) Payments

  • payments are handled by an external provider (Stripe) – we do not store card numbers,
  • in our systems we may store transaction identifiers (for example the session/Payment Intent identifier) for settlement and order handling.

4) Technical data and security

  • IP address, browser and basic technical data of requests (for protection against abuse),
  • anti-spam / rate-limiting mechanisms (for example when sending sign-in codes or confirming payments),
  • logs/audit of administrative actions or error diagnostics (where they occur).

Purposes and legal bases

We process data only to the extent needed to run the store and fulfil orders. Legal bases:

  • Performance of a contract (Article 6(1)(b) GDPR) – accepting and fulfilling an order, payment, delivery, returns, account handling.
  • Legal obligation (Article 6(1)(c)) – for example keeping accounting documents/settlements (where applicable).
  • Legitimate interests (Article 6(1)(f)) – security, preventing abuse, establishing/defending legal claims, basic diagnostics, an aggregate page-view counter without an identifier, and publishing product reviews.
  • Consent (Article 6(1)(a)) – optional cookies/analytics and marketing identifiers (only if you accept them).

Providing the data needed to place an order (e-mail, delivery address, phone) is voluntary, but without it we cannot fulfil the order. You provide any other data, including cookie consents, only if you want to.

Who we may share data with

We use trusted service providers who process data on our behalf or as separate controllers (for example the payment provider). In practice these may be:

  • Stripe – payment provider and checkout form (payment data, e-mail, delivery address/phone depending on the checkout configuration).
  • Delivery providers (for example DPD, InPost) – to the extent necessary to ship the order (for example address/phone or a pickup point identifier).
  • E-mail delivery provider (Resend) – to send transactional messages (sign-in codes, password reset, confirmations).
  • Cloudinary – hosting of product photos and videos. Your browser downloads them directly from Cloudinary's servers, so your IP address reaches them when a page is displayed – regardless of your cookie consent, because this is simply loading an image, not tracking.
  • OpenStreetMap – map tiles for the InPost parcel locker map. When you open the map, your browser downloads them from OpenStreetMap's servers, so your IP address reaches them (the United Kingdom has a European Commission decision finding an adequate level of data protection).
  • Hosting/infrastructure (Hetzner, Cloudflare) – running the servers, logs, backups and the database.

We always try to minimise the data we share (only what is needed to provide the service).

Transfers of data outside the EEA

Some services (for example the Stripe payment provider, the Resend e-mail provider or Cloudinary photo/video hosting) may process data on infrastructure located outside the European Economic Area, including in the USA. In such cases appropriate safeguards are used (for example standard contractual clauses or the provider's participation in the Data Privacy Framework), as described in the given provider's documentation. The parcel locker map (OpenStreetMap) is served from the United Kingdom, for which the European Commission has found an adequate level of data protection.

How long we keep data

  • Account: until the account is deleted at your request (write to the contact address) or the data is no longer useful, subject to legal requirements.
  • Paid orders: for the period needed for settlements, handling complaints/returns and as required by tax and accounting rules – as a rule 5 years from the end of the year in which the sale took place.
  • Cancelled and unpaid orders (no payment, refund or complaint): 180 days from cancellation, then deleted automatically.
  • Sign-in and registration codes: we delete them one day after the code expires at the latest. Password reset links: 7 days after expiry at the latest (they are valid for one hour).
  • Attempt-limit counters (rate limiting): 7 days.
  • Security event log (sign-ins, administrative actions, errors; with IP address and browser): 180 days.
  • Analytics events, with consent (page views, add-to-cart, purchases – linked to the visitor identifier cf_aid): 90 days from being saved, then deleted automatically. Withdrawing consent deletes them immediately, without waiting for that period.
  • Aggregate page-view counter (without an identifier – see the section “The only thing we count without consent” below): 730 days. Longer than the consent-based analytics data, because this counter contains nothing that could be linked to a person.
  • The record of your cookie decision: we record only the decision itself (which categories you chose, when and how) – without an IP address, browser or e-mail address, even if you were signed in. We keep this entry for 180 days.

Age

The Store is not directed at children and does not knowingly collect data of people under 16. Where the basis for processing is consent (for example to analytics or marketing cookies) and the person giving consent is under 16, the consent should be given or confirmed by a parent or legal guardian.

Creating an account and placing an order is the conclusion of a contract, not consent within the meaning of the GDPR – the rules on age and legal capacity when concluding a contract are in the Terms & Conditions.

Your rights

Within the limits of the law you can exercise your rights regarding personal data (including access to data, rectification, erasure, restriction of processing, objection and data portability). Where we process data on the basis of consent, you can withdraw it at any time (withdrawal does not affect the lawfulness of processing before the withdrawal).

Write to us at: [email protected].

If you believe the processing infringes the law, you can also lodge a complaint with the supervisory authority in your country of residence (in Poland: the President of the Personal Data Protection Office, PUODO).

Cookies and similar technologies

The website uses cookies and similar mechanisms (for example localStorage) to make the store work. Some of them are necessary, and some are optional and start only after you consent.

Necessary (always active)

  • session and security cookies related to signing in (Auth.js / NextAuth) – the account does not work properly without them,
  • security settings and protection against abuse,
  • the record of your cookie choice – the cf_consent cookie (valid for 180 days). It is necessary: it remembers that you did not consent and lets us respect that choice on the server side too,
  • local helper data, for example for resuming a payment (such as an order identifier saved in the browser's storage).

Optional (after your consent)

  • Analytics – help us understand how the site is used (for example page views, basic events). Visitor identifier: cf_aid. In addition, cf_ses marks a single visit and expires by itself after 30 minutes of inactivity – it tells us how many pages were viewed in one go, without tying that to you as a person.
  • Marketing – save where you came from (UTM parameters, referring page, ad click identifier) in the cf_mkt cookie. If you place an order, we save that source together with the order – it stays there as transactional data, so we know which ad paid off. Without marketing consent we do not save it either in the browser or with the order.

Without your consent these identifiers are not created at all, and our server rejects saving any analytics data. When you withdraw consent, we delete not only the cookies in your browser but also the data previously collected under your identifier.

The only thing we count without consent – and why we are allowed to

We keep an aggregate page-view counter: for each day we record how many times a given subpage was displayed and whether this happened on a phone, tablet or computer. That is all – one number per row.

There is no identifier in it: no visit number, no IP address and no information about your browser. We also do not save anything on your device. From such a counter it is impossible to reconstruct that two page views came from the same person – which is why it does not require consent. We need it to know how much traffic we really have, not only as much as we see thanks to people who agreed to analytics.

We determine the device type on the server from the browser header (user-agent). The header itself is not stored – only one word goes into the database: “phone”, “tablet” or “computer”. This also applies to analytics data collected with consent.

Everything we save in your browser

Below is everything – every single item. The list is generated directly from the site's code, so it cannot drift away from reality.

NameTypeCategoryLifetimePurpose
authjs.session-tokennot accessible to page scriptscookieNecessary30 days from your last visitKeeps you signed in. On HTTPS it carries the __Secure- prefix. The period counts from your last visit: every visit to the site extends it by another 30 days. The account does not work without it.
authjs.csrf-tokennot accessible to page scriptscookieNecessaryuntil you close the browserProtects the sign-in forms from being impersonated by another site (CSRF). On HTTPS it is named __Host-authjs.csrf-token.
authjs.callback-urlnot accessible to page scriptscookieNecessaryuntil you close the browserRemembers which page to return to after you sign in. On HTTPS it carries the __Secure- prefix.
cf_guest_ordersnot accessible to page scriptscookieNecessary30 daysA signed proof that this browser placed an order without an account — it lets you return to the payment, see the confirmation and report a return. You can also recover it on a new device with a code sent by e-mail (/orders/lookup).
NEXT_LOCALEcookieNecessary180 daysRemembers the site language (Polish/English). It is created when you click the PL/ENG switcher in the menu, and also automatically when your browser reports a language other than Polish or you open an address with the /en prefix directly.
cf_consentcookieNecessary180 daysRemembers your cookie decision. Necessary: it is what remembers that you said “no” and lets us respect that on the server side too.
catchfeels-cartbrowser storageNecessaryuntil the cart is clearedThe cart of a signed-out visitor. After you sign in it is merged into the cart on your account and deleted.
catchfeels-cart-bundlesbrowser storageNecessaryuntil the cart is clearedBundles in the cart of a signed-out visitor. After you sign in they are merged into the cart on your account and deleted.
cf_pending_checkout_guest_v1browser storageNecessary24 hours (removed on your next visit to the cart)The number of an order you started but have not paid yet — it lets you return to the payment.
cf_pending_checkout_user_v1_<e-mail address>browser storageNecessary24 hours (removed on your next visit to the cart)The same for a signed-in user. The address in the key name keeps the orders of two accounts using the same browser apart.
catchfeels-pickupbrowser storageNecessaryuntil you clear the browser dataThe InPost parcel locker and DPD Pickup point you chose last (the point's code and address), so you do not have to choose it again for your next order. It stays only in your browser.
cf_breathe_hide_untilbrowser storageNecessaryuntil the stored date passesRemembers that you hid the breathing widget, and until when it should stay hidden.
cf_breathe_neverbrowser storageNecessaryindefinitelyRemembers your “don't show again” choice for the breathing widget.
cf_breathe_sessionbrowser storageNecessaryup to 30 minutes of inactivityCounts the time you spend browsing the store, so the breathing widget appears only after 20 minutes. Purely an interface adjustment — it creates no identifier and sends nothing to the server.
cf_pending_checkoutbrowser storageNecessary24 hours (removed on your next visit to the cart)An older version of the started-order key, from before it was split into guest and signed-in account. Still read for returning visitors and migrated to the proper key at the next opportunity, then deleted.
cf_aidcookieAnalytics365 daysA random visitor identifier that lets us tell a returning visit from a new one. It is created only after you consent to analytics; when you withdraw consent we delete it together with the data collected under it.
cf_sescookieAnalytics30 minutes from last activityA random number for a single visit, renewed on every page view. It lets us count how many pages were viewed during one visit without tying that to you as a person. It is created only after you consent to analytics and deletes itself after 30 minutes of inactivity.
cf_mktcookieMarketing30 days from your last visit coming from an ad or external linkRemembers where you came to the site from (UTM parameters, referring page, ad click identifier). Every further visit from an ad or external link renews it for 30 days. When you place an order we save this source together with the order, so we know which ad paid off.

The “do not track me” signal from your browser (GPC / DNT)

If your browser sends the Global Privacy Control or Do Not Track signal, we treat it as an answer of “necessary only”: we do not show the banner and do not start anything optional.

In that case we do not save even the cookie decision on your device – you have not made one, so there is nothing to remember. If, despite the signal, you want to enable some of the optional cookies, you can do so in “Cookie settings” in the footer; such a conscious choice outweighs the signal and we will then remember it.

How to change your cookie settings

You can change your decision at any time: click “Cookie settings” in the footer of the page and save a new choice.

If you prefer to withdraw consent completely instead of choosing “necessary only”, click “Withdraw consent” in the “Cookie settings” window – we will delete the saved decision entirely, and the banner will appear again the next time you visit the site.

You can also manage cookies in your browser settings (remember, however, that blocking necessary cookies may make it impossible to sign in or place an order).

Changes to this policy

We may update the privacy policy when the store's features or the way data is processed change (for example when analytics tools are added). We always publish the current version on this page together with the date of the update.

This policy is available in Polish and English. Both versions are equally binding; in the event of any discrepancy, the version more favourable to you applies.