Privacy Policy
Last updated: 22 October 2026
1. Who we are
Cordi is operated by Morodo Limited (trading as "Cordi"), a company registered in England and Wales under company number 11925189, with its registered office at Demsa Accounts, 565 Green Lanes, Haringey, London, England, N8 0RL.
For the purposes of the UK General Data Protection Regulation ("UK GDPR") and the Data Protection Act 2018, Morodo Limited is the data controller for the personal data described in this Policy. We are registered with the UK Information Commissioner's Office (ICO) under registration number ZC281474.
If you have any questions about this Policy or how we handle your personal data, contact us at:
Email: [email protected]
2. Scope
This Policy applies to:
- The Cordi mobile app, used by end customers ("Customers") to collect loyalty stamps and rewards at participating shops;
- The Cordi business portal (web dashboard), including its "Join now" sign-up, used by shop owners ("Shop Owners") to sign up and manage their loyalty program; and
- The Cordi marketing website, including its contact form and account-deletion page.
We refer to these collectively as the "Service."
3. What personal data we collect
3.1 If you are a Customer
| Data | When collected | Purpose |
|---|---|---|
| Email address and password | Account sign-up (via Supabase Auth) | Creating and securing your account. We send a 6-digit code to your email address to confirm it belongs to you |
| Birthday (optional) | Sign-up, if you choose to provide it | Lets participating shops offer you a birthday gift (see Section 4.2). Once set, your birthday cannot be changed in the app; contact us to correct a mistake or remove it. We use your birthday only for the birthday gift. |
| Precise location (GPS) at stamp collection | At the moment you collect a stamp (QR or NFC) | To verify you are within approximately 200 meters of the shop, so stamps can only be collected in person. Checked, then discarded: not saved |
| Precise location (GPS) at reward redemption or birthday-gift claim | At the moment you confirm a reward redemption at the counter, or claim a birthday gift by tapping or scanning the shop's code | To verify you are within approximately 200 meters of the shop. Checked, then discarded: not saved |
| Approximate/precise location on the Discover map | When you open the Discover screen or tap "locate me", if you have granted location permission | To show participating shops near you. Sent to our server to filter nearby shops; not saved to our database and not written to our server's own logs (see Section 11) |
| Stamp and redemption activity | Each time you collect a stamp or redeem a reward | Operating your loyalty cards and each shop's reward program |
| Birthday-gift claims | When you claim a birthday gift | Records which business's gift you claimed, for which birthday year, and when, so each business's gift can be claimed only once per birthday |
| Promotion targeting records | When a shop you have a card with publishes a promotion | A record of which customers a promotion was sent to (including whether it was targeted at "overdue" customers), so the offer stays visible to you and the shop can measure results. It is kept for as long as the promotion exists, and deleted if the shop deletes the promotion |
| Technical and log data | Each time you sign in or use the app | IP address, device/browser information and sign-in times, recorded automatically by our authentication and hosting providers, for security, fraud prevention and troubleshooting |
We do not collect your name (Cordi has no name field anywhere in the system), and we do not track your location in the background. Location is requested only while the app is open: on the Discover map, and at the moment you collect a stamp, redeem a reward or claim a birthday gift.
3.2 If you are a Shop Owner
| Data | When collected | Purpose |
|---|---|---|
| Email address and password | Account sign-up | Creating and securing your account. We send a 6-digit code to your email address to confirm it belongs to you |
| Your first name, last name and mobile phone number | Sign-up ("Join now") | Contacting you to arrange and carry out your shop's setup visit, giving you support, and telling you about problems with the Service that affect your shop. We do not use your phone number for marketing, and it is never shown in the app or to Customers |
| Setup-visit details: preferred days and time of day, the name and phone number of the person to meet at the shop (if not you), and any notes you add | Sign-up ("Join now") | Arranging the setup visit at which we install your Cordi NFC tag and approve your shop. If you give us someone else's details as the on-site contact, please let them know and point them to this Policy |
| Record of accepting our terms | Sign-up ("Join now") | Which version of the Business Terms and this Policy you accepted, and when, so we can show what was agreed |
| Business name, address, category, website, opening hours, description, logo | Sign-up and profile setup | Displaying your shop to Customers and operating your loyalty program. This information is public inside the app, and the logo is stored as a publicly accessible image file. If you trade as an individual (e.g. a sole trader), some of this may be your personal data. |
| Loyalty program and birthday-gift settings, promotions | When you set up your program, turn on the birthday gift, or publish a promotion | Operating your loyalty program and showing your rewards and offers to your customers |
| Billing details: your subscription (monthly or annual, status, renewal date), invoices and payment history, and the billing name, address and tax details you give | When you add a payment card or subscribe, and at each payment | Charging for your subscription and keeping the accounting records the law requires. Your card details are entered on Stripe's secure page and held by Stripe — we never see or store your full card number; we only see the card type, last four digits and expiry date |
| Technical and log data | Each time you sign in or use the dashboard | IP address, device/browser information and sign-in times, for security and troubleshooting |
| Business address and map location | Profile setup, if provided | The address is sent to a third-party geocoding service (see Section 5) to convert it into map coordinates, which you can adjust by moving the pin on the map. The coordinates are used for the Customer location checks above and to show your shop on the Discover map |
| Your customers' masked email addresses and stamp/visit history | Ongoing, as your customers interact with your shop | Shown to you so you can manage your own loyalty program — see Section 4 for detail on this specific case |
3.3 If you use our contact form (marketing website)
Name, shop name (if applicable), email address, phone number, and any message you write, submitted only if you choose to use the contact form.
3.4 If you email or message us
If you email us or message us on WhatsApp — for example for support, to ask for your account to be deleted, or to exercise one of your rights in Section 14 — we receive your email address (or, on WhatsApp, your phone number and WhatsApp profile name), your message and anything you attach, and we keep the correspondence so we can answer you and show that we handled your request.
4. What Shop Owners can see
4.1 Customer activity
A Shop Owner can see, only for their own customers (people who have collected at least one stamp at their shop):
- The customer's email address in masked form (for example
o***@gmail.com) — never the full address and never a name (Cordi has no name field). Masking is applied on our server, so the full address never reaches the shop's dashboard or its data exports; - Their stamp and visit history at that shop, and derived statistics such as their last visit date, how frequently they typically visit, whether they currently appear "overdue" relative to their own past visiting pattern, and which group they fall into in the shop's overview (new, active, overdue or lapsed).
Shop Owners cannot search for a customer by email address, and cannot see a Customer's birthday or location. Because they only see masked emails, they cannot contact you outside Cordi.
This is descriptive information about a shop's own customers, generated only from that shop's own visit records. No shop can see another shop's customers or data, and Cordi does not share, pool, sell, or broker this data across shops or to any third party such as an advertiser or data broker.
Shop Owners may publish promotions to their own customers — either to all of their customers, or targeted at customers who appear "overdue." Promotions are shown inside the Cordi app only; they are not sent to you by email. This targeting is descriptive analytics about a shop's own historical visit data; it does not involve automated decision-making that produces legal or similarly significant effects on you, and no decision is made about you that a human is not ultimately responsible for (the Shop Owner chooses whether and what to publish). When a promotion is published, we keep a record of which customers it was sent to, until the shop deletes the promotion (see Section 3.1).
4.2 Birthday gift
A Shop Owner can choose to offer a birthday gift (for example a free drink). If you have given us your birthday, you can claim one gift per business per birthday, in store, from 7 days before to 7 days after your birthday, provided your birthday has been on file for at least 30 days and you have visited that business before.
A shop offering the gift sees only a "Gift given" mark next to a customer for 30 days after that shop gave them its gift, plus a count of gifts claimed. It never sees your date or year of birth, or whether your birthday is coming up. A shop that does not offer the gift sees nothing at all about your birthday. Shops cannot see whether you claimed a gift at another business.
Morodo Limited is the controller of this customer data. A Shop Owner who views it in the business portal becomes a separate controller for their own limited use of it, which our Business Terms (Section 9) restrict to running their loyalty program on Cordi.
5. Who we share data with
5.1 Service providers
We use the following service providers ("sub-processors") to operate Cordi. Each processes personal data only as necessary to provide their service to us:
| Sub-processor | Purpose | Data involved |
|---|---|---|
| Supabase | Database hosting, authentication, file storage and backups for the entire Service | All account, activity, technical and shop data described above. Hosting region: Frankfurt, Germany (EU). |
| Railway | Hosts our application server (API), through which all app and dashboard requests pass | All data sent to or from the Service while it is being processed. Our server's own request logs record the request type, path and result, but not your IP address or location. For requests made without signing in, your IP address is also used briefly, in our server's memory only, to limit how many requests can be made in a short time; it is not stored. Region: European Union (Netherlands). Railway is a US company, and its own platform logs may be stored in the United States |
| Vercel | Hosts the business dashboard | Shop Owner session data and the customer information shown in the dashboard. Region: United States (Washington, D.C.) |
| Resend | Sends account emails (email confirmation codes and password reset codes) | Email address and the email content. Resend is a US company |
| Cloudflare | Domain name service and hosting of the marketing website | IP addresses and technical request data |
| OpenStreetMap (Nominatim geocoding and map tiles) | Converts a Shop Owner's business address into map coordinates, and supplies the map shown in the Business Portal where Shop Owners place their shop's pin | Nominatim receives the business address text and a contact-email identifying header from our server. Map tiles are requested directly by the Shop Owner's browser, which reveals its IP address and the map area being viewed. Run by the OpenStreetMap Foundation, a UK nonprofit; no API key or account is used |
| Google Maps (Android) / Apple Maps (iOS) | Displays the map view in the Discover screen | Map requests from your device, which reveal the map area being viewed; subject to Google's and Apple's own privacy policies |
| FormSubmit (formsubmit.co) and Google (Gmail) | FormSubmit relays marketing-site contact-form submissions to our Gmail inbox; Gmail is also where emails you send us arrive | Name, shop name, email, phone number, and message you submit via the contact form, and any email you send us. Both are US-based. We recommend reviewing FormSubmit's own privacy practices, which we do not control, before relying on this Policy as a complete description of that specific data flow. |
| WhatsApp (Meta) | If you contact us through the "Need help?" WhatsApp button during sign-up, or message us on WhatsApp | Your phone number, WhatsApp profile name and the messages you send. Subject to WhatsApp's own privacy policy; may be processed in the United States |
| Stripe | Processes Shop Owners' subscription payments, stores their payment cards, and sends invoices and receipts | Shop Owner name, email address, billing details, card details and payment history. Stripe processes data in the UK, the EU and the United States |
| Expo / EAS | Mobile app build and update infrastructure | Technical app-build data; not personal data about you as a user |
| Apple App Store / Google Play | App distribution | Subject to Apple's and Google's own privacy policies for app-store account and download data |
5.2 Other disclosures
We may also disclose personal data:
- When the law requires it — to a court, regulator, law-enforcement or other public authority, where we are legally required to, or where it is necessary to establish, exercise or defend legal claims;
- To protect the Service and its users — where necessary to investigate or prevent fraud (for example stamp fraud), security incidents or abuse of the Service; and
- If our business changes hands — if Cordi, or substantially all of its assets, is sold, merged or transferred, personal data may be transferred to the buyer or successor, who must continue to use it in line with this Policy. We will tell you before your data becomes subject to a different privacy policy.
We do not sell your personal data to any third party, and we do not use advertising networks or advertising-tracking cookies or SDKs.
6. International data transfers
Morodo Limited is based in the UK, and your data is accessed from the UK. Our main database (Frankfurt, Germany) and our application server (Netherlands) are hosted in the European Union, which the UK recognises as adequate. Some providers are based in, or process data in, the United States: Railway (a US company; its platform logs), Vercel (the business dashboard), Resend, Cloudflare, Google (Gmail and Google Maps), Apple Maps, WhatsApp, Stripe and FormSubmit.
Where personal data is transferred from the UK to a country that the UK has not recognised as adequate, we rely on one of these safeguards:
- The UK Extension to the EU–US Data Privacy Framework, for providers certified under it (Google, Apple, Cloudflare, Stripe and Meta, which runs WhatsApp); or
- The UK International Data Transfer Addendum to the European Commission's Standard Contractual Clauses, included in the provider's data processing agreement with us (Railway, Vercel and Resend).
Transfers to the European Union (including our database in Frankfurt and our application server in the Netherlands) need no additional safeguard, because the UK recognises the EU as adequate. Contact-form submissions relayed by FormSubmit are transferred to the United States only because you choose to send us a message through the form. You can ask us for more information about these safeguards using the contact details in Section 17. For users in Turkey, transfers out of Turkey are covered separately in the KVKK Disclosure Notice (KVKK Article 9).
7. Emails and notifications
We send you only service emails that are needed to run your account, such as email confirmation codes and password reset codes. We do not send marketing emails or newsletters, and shops cannot email you through Cordi. If we ever introduce marketing emails, we will only send them if you have explicitly opted in, every email will include a way to unsubscribe, and saying no will not affect your use of Cordi.
Cordi does not currently send push notifications. This feature is not active in the Service.
If you are a Shop Owner, we may also call you or message you about your setup visit, support, or a problem with the Service that affects your shop. We do not make marketing calls or send marketing messages.
8. Payments
Customers never pay anything through Cordi. Shop Owners pay for their subscription by card through our payment provider, Stripe. You enter your card details on Stripe's secure payment page, and Stripe stores them; we never see or store your full card number. Stripe also processes payment data for its own purposes, such as fraud prevention and meeting its legal obligations, as described in Stripe's own privacy policy.
9. Cookies and tracking
Our marketing website does not set advertising or analytics cookies, and neither the app nor the dashboard uses third-party analytics or advertising SDKs. The app and the dashboard store only what they need to work, such as keeping you signed in and remembering your language. The contact form is processed by FormSubmit (see Section 5); we recommend checking FormSubmit's own cookie and privacy practices, which are outside our control, if this matters to you.
10. Legal basis for processing (UK GDPR)
| Purpose | Legal basis |
|---|---|
| Creating and operating your account, collecting stamps, redeeming rewards | Necessary for the performance of our contract with you (the Terms of Service, or for Shop Owners the Business Terms) |
| Verifying your location at the moment of stamp collection, reward redemption or birthday-gift claim | Necessary for the performance of our contract with you |
| Shop Owner name, phone number and setup-visit details | Necessary for the performance of our contract with you (the Business Terms) — arranging your setup visit and supporting your shop |
| Details of an on-site contact given to us by a Shop Owner | Our legitimate interest in arranging the setup visit with the right person |
| Record of accepting our terms | Our legitimate interest in being able to show what was agreed, and when |
| Showing nearby shops on the Discover map | Our legitimate interest in showing you relevant shops; you control this with your device's location permission and can still browse the map without it |
| Technical and log data | Our legitimate interest in keeping the Service secure and working |
| Shop Owner analytics about their own customers, and targeting promotions at "overdue" customers | Our legitimate interest, and that of Shop Owners, in operating a functioning loyalty program — balanced against your interests, as described throughout this Policy. You can object at any time (Section 14). |
| Birthday and birthday-gift claims | Your consent, given by voluntarily providing your birthday; you may withdraw it at any time by contacting us, and we will remove your birthday |
| Emails you send us and contact-form submissions | Our legitimate interest in answering you; and, where you are exercising a right under Section 14, our legal obligation to respond |
| Shop Owner subscription payments and billing details | Necessary for the performance of our contract with you (the Business Terms); keeping invoices and payment records is a legal obligation |
| Disclosures required by law (Section 5.2) | Compliance with a legal obligation |
11. How long we keep your data
| Data | How long |
|---|---|
| Account, stamps, redemptions, birthday, birthday-gift claims, promotion targeting records; for Shop Owners also your name, phone number, setup-visit details and terms-acceptance record | Until you delete your account (or the shop account is closed). Promotion targeting records are also deleted when the shop deletes the promotion. If a Customer account has not been signed in to and has not collected a stamp for 24 months, we will email you, and delete the account 30 days later unless you sign in. |
| Shop Owner invoices and payment records | 6 years after the end of the financial year they relate to, as UK tax and company law requires — also after the shop account is closed. Stripe keeps its own records as described in its privacy policy |
| Backups | Deleted data remains in our database provider's daily backups for about 7 days, then is overwritten |
| Server request logs (request type, path and result; no IP address, location or query details) | Up to 90 days |
| Authentication logs (IP address, device, sign-in times) | 7 days |
| Emails, WhatsApp messages and contact-form messages you send us | Up to 2 years after our last exchange with you, so we can answer follow-up questions and show how we handled a request about your rights |
12. Deleting your account
Customers can delete their account at any time in the app: Profile → Delete account. The account is deleted immediately and permanently. If you cannot use the app, email [email protected] from the email address registered with Cordi, with the subject "Account deletion"; we will carry out your request within 30 days at the latest and confirm by email.
Deleting your account deletes everything linked to it: your loyalty cards, every stamp, rewards you were working towards or had not yet redeemed, redemptions, your birthday, birthday-gift claims and promotion targeting records. This cannot be undone; if you sign up again later, you start from zero. The only copies left are those in our provider's backups, which are overwritten within about 7 days (Section 11).
Shop Owners cannot yet delete their account in the dashboard, because doing so would also remove their shop and their customers' loyalty-card history. Email us at the address above and we will close the shop listing, delete its logo and other uploaded files, your name, phone number and setup-visit details, and delete the account. We keep invoices and payment records for as long as the law requires (Section 11).
13. Children and minimum age
Cordi is not directed at children. You must be at least 16 years old to create a Cordi account. If we learn that we hold personal data about someone below this age, we will delete the account and its data.
14. Your rights
Under UK GDPR, you have the right to:
- Access the personal data we hold about you;
- Rectify inaccurate or incomplete data (for example a mistake in your birthday);
- Erase your data ("right to be forgotten") — see Section 12;
- Restrict how we process your data;
- Object to our processing, in certain circumstances — including to your visit history being used for "overdue" promotion targeting;
- Port your data to another service, where technically feasible;
- Not be subject to decisions based solely on automated processing that produce legal or similarly significant effects on you (Cordi does not make such decisions — see Section 4.1);
- Withdraw consent at any time, for any processing based on consent (this does not affect the lawfulness of processing before withdrawal).
To exercise any of these rights, contact us at [email protected]. We may ask you to confirm the request from your registered email address so we know it is really you. We will respond within one month, as required by UK GDPR.
If you are unsatisfied with our response, you have the right to complain to the UK Information Commissioner's Office (ICO) at ico.org.uk. Users in Turkey also have the rights described in our KVKK Disclosure Notice.
15. Security
We take reasonable technical and organizational measures to protect your personal data, including encryption of data in transit, access controls restricting who can access personal data within our systems, and server-side masking of customer emails before they are shown to shops. No method of transmission or storage is completely secure, and we cannot guarantee absolute security.
16. Changes to this Policy
We may update this Policy from time to time, for example when we add a feature that uses personal data in a new way. If we make material changes, we will tell you before they take effect, such as with an in-app notice, and update the "Last updated" date above. Where a change needs your consent, we will ask for it.
17. Contact us
Morodo Limited (trading as Cordi)
Email: [email protected]
Registered office: Demsa Accounts, 565 Green Lanes, Haringey, London, England, N8 0RL