Data processing agreement
This data processing agreement (the “DPA”) forms part of the terms of service between the Shopify merchant that installs BookSlot (the “Controller”, “you”) and Fenloft FZE (the “Processor”, “we”). It sets out how we process personal data on your behalf, as Article 28 of the GDPR and the UK GDPR and equivalent laws require. It is concluded when you install BookSlot and needs no signature. You can print or save this page for your records; we will countersign a copy on request.
1. Parties, scope and precedence
- The Processor is Fenloft FZE, a free zone establishment incorporated in the United Arab Emirates and licensed by the Sharjah Publishing City Free Zone Authority (licence no. 4431620.01), registered at Business Centre, Sharjah Publishing City Free Zone, Sharjah, United Arab Emirates, contact support@fenloft.com. The Controller is the legal entity that operates the Shopify store on which BookSlot is installed, identified by that store’s domain and contact details in Shopify.
- This DPA applies to all personal data that the Processor processes on the Controller’s behalf in providing the Service (“Customer Data”). It does not apply to data the Processor processes as a controller (the Controller’s account, billing and support records), which the privacy policy covers.
- If this DPA conflicts with the terms of service, this DPA prevails for Customer Data. If the Standard Contractual Clauses incorporated in section 13 conflict with this DPA, the Clauses prevail for the transfers they govern.
2. Definitions
- “Data Protection Law”: the EU General Data Protection Regulation 2016/679 (“GDPR”), the UK GDPR and Data Protection Act 2018, the Swiss Federal Act on Data Protection, and any other law that applies to the processing of Customer Data, including US state privacy laws.
- “Personal data”, “data subject”, “processing”, “controller”, “processor”, “personal data breach” and “supervisory authority” have the meanings given in the GDPR.
- “Standard Contractual Clauses” or “SCCs”: the clauses annexed to Commission Implementing Decision (EU) 2021/914 of 4 June 2021, available at https://eur-lex.europa.eu/eli/dec_impl/2021/914/oj.
- “UK Addendum”: the International Data Transfer Addendum to the EU Commission Standard Contractual Clauses (version B1.0, in force 21 March 2022) issued by the UK Information Commissioner under section 119A of the Data Protection Act 2018, available at ico.org.uk.
- “Sub-processor”: a third party engaged by the Processor to process Customer Data.
- “Service”: BookSlot as defined in the terms of service.
3. Roles of the parties
- The Controller determines the purposes and means of processing Customer Data: which services it offers, what it asks customers, which features it turns on, who on its team may see bookings, and how long it keeps its store. The Controller warrants that it has a lawful basis for the processing it instructs, that it has given data subjects the information Data Protection Law requires, and that its instructions comply with Data Protection Law.
- The Processor processes Customer Data only on the Controller’s behalf, as this DPA describes. Where a US state law applies, the Processor is a “service provider” or “processor” and certifies that it understands and will comply with the restrictions in section 4.
- Shopify is an independent processor (or, for its own purposes, controller) engaged by the Controller under the Controller’s agreement with Shopify. Data that the Service writes to the Controller’s Shopify store (customer records, tags, consent, orders) is thereafter processed under that agreement.
4. Processing on documented instructions
- The Processor processes Customer Data only on the Controller’s documented instructions, including with regard to transfers to a third country, unless required to do otherwise by law to which the Processor is subject; in that case the Processor informs the Controller of the legal requirement before processing, unless the law prohibits it on important grounds of public interest.
- The Controller’s instructions are: this DPA, the terms of service, the settings and features the Controller chooses in the Service, the actions its users take in the Service, and the privacy webhooks Shopify sends on the Controller’s behalf. Additional instructions must be in writing (email suffices) and may be subject to a reasonable fee if they go beyond the Service’s functionality.
- The Processor will inform the Controller without delay if, in its opinion, an instruction infringes Data Protection Law. The Processor may then suspend the instruction until the Controller confirms or changes it.
- The Processor does not sell Customer Data, does not share it for cross-context behavioural advertising, does not retain, use or disclose it outside the direct business relationship with the Controller or for any purpose other than providing the Service, and does not combine it with personal data it receives from or on behalf of others, except as Data Protection Law expressly permits (for example to detect security incidents or to improve the Service without building profiles).
5. Confidentiality
- The Processor ensures that every person it authorises to process Customer Data is bound by a contractual or statutory duty of confidentiality, has received appropriate training, and accesses Customer Data only to the extent needed to provide the Service, give support the Controller asked for, investigate security incidents or comply with law.
- The Processor keeps the Controller’s Customer Data confidential during and after the term of this DPA, except for disclosures required by law (section 13.5) or authorised by the Controller.
6. Security of processing
- The Processor implements and maintains the technical and organisational measures in Annex II, which take into account the state of the art, the costs of implementation, the nature, scope, context and purposes of processing and the risk to data subjects, so as to ensure a level of security appropriate to the risk, as Article 32 GDPR requires.
- The Processor may update the measures from time to time provided the overall level of security does not decrease. Material reductions are treated as changes to this DPA (section 15).
- The Controller is responsible for security within its own control: the Shopify staff accounts it creates, the permissions it grants them, the confidentiality of calendar feed links, the devices its team uses, and the content of the booking questions it designs.
7. Sub-processors
- The Controller gives the Processor general written authorisation to engage the Sub-processors listed in Annex III and, subject to this section, further Sub-processors.
- The Processor will tell the Controller of any intended addition or replacement of a Sub-processor at least 30 days before it takes effect, by email to the store’s contact address and by updating Annex III. The Controller may object on reasonable data protection grounds within that period by writing to support@fenloft.com. The parties will then discuss the objection in good faith; if no solution is found within 30 days, the Controller may terminate the Service by uninstalling it, and the Processor will refund any prepaid fees for the period after termination through Shopify where its billing rules allow.
- The Processor imposes on each Sub-processor, by written contract, data protection obligations that are substantially the same as those in this DPA, in particular sufficient guarantees to implement appropriate technical and organisational measures, and remains fully liable to the Controller for the performance of the Sub-processor’s obligations.
- Emergency replacement: if a Sub-processor must be replaced urgently for security or continuity reasons, the Processor may do so and will inform the Controller as soon as possible, with the same right to object.
8. Data subject requests
- Taking into account the nature of the processing, the Processor assists the Controller with appropriate technical and organisational measures in fulfilling its obligation to respond to requests from data subjects to exercise their rights (access, rectification, erasure, restriction, portability, objection).
- The Service does this largely by design: Shopify’s
customers/data_requestwebhook produces a full export of a customer’s data for the Controller to pass on,customers/redactanonymises the customer, the Controller can edit or delete bookings and customers itself, and the Controller can export all bookings and customers as CSV. The Processor acts on these automatically and at no charge. - If a data subject contacts the Processor directly, the Processor will not respond on the merits (except to direct the person to the Controller) and will forward the request to the Controller within 5 business days, unless the law requires the Processor to respond itself.
9. Personal data breaches
- The Processor notifies the Controller without undue delay, and in any event within 48 hours, after becoming aware of a personal data breach affecting Customer Data, by email to the store’s contact address.
- The notification describes, to the extent known at the time and supplemented as information becomes available: the nature of the breach, the categories and approximate number of data subjects and records concerned, the likely consequences, the measures taken or proposed to address the breach and mitigate its effects, and a point of contact.
- The Processor cooperates with the Controller and takes reasonable steps the Controller directs to assist in investigating, mitigating and remediating the breach. Notification is not an admission of fault or liability.
10. Assistance with your obligations
- Taking into account the nature of the processing and the information available to it, the Processor assists the Controller in ensuring compliance with Articles 32 to 36 GDPR: security of processing, breach notification, data protection impact assessments and prior consultation with a supervisory authority.
- This DPA, the privacy policy and Annexes I to III are intended to give the Controller the information it needs for a data protection impact assessment of its use of the Service. Further reasonable assistance is given on request; the Processor may charge a reasonable fee for assistance that goes beyond providing existing documentation.
11. Deletion and return of data
- The Controller can retrieve all Customer Data at any time during the term by exporting bookings and customers as CSV files from the Service.
- When the Controller uninstalls the Service, the Processor deletes all Customer Data as described in the privacy policy: the store is deactivated at once, Shopify sends its deletion request 48 hours later, and the Processor deletes everything it holds for the store 48 hours after that, including backups as they expire within 7 days. Reinstalling before deletion restores the store.
- The Processor may retain Customer Data after deletion only to the extent and for the period required by law to which it is subject, in which case it keeps the data confidential and processes it only for that purpose.
- On the Controller’s written request the Processor confirms deletion in writing.
12. Information and audits
- The Processor makes available to the Controller all information necessary to demonstrate compliance with Article 28 GDPR and this DPA: this DPA and its annexes, the privacy policy, its security incident response policy and data loss prevention strategy, the current sub-processor list, the most recent restore-drill record, and written answers to reasonable security questionnaires, all on request to support@fenloft.com.
- The Processor allows for and contributes to audits, including inspections, conducted by the Controller or an independent auditor mandated by the Controller and bound by confidentiality, provided that: the Controller gives at least 30 days’ written notice; audits take place no more than once in any twelve-month period unless a supervisory authority requires one or a personal data breach has occurred; the audit is conducted during business hours with minimal disruption; the Controller first relies on the documentation in paragraph 1 and on the Sub-processors’ own certifications and audit reports where they cover the point; and the Controller bears its own costs and reimburses the Processor’s reasonable costs for time spent beyond one business day.
- The Processor will inform the Controller immediately if, in its opinion, an audit instruction infringes Data Protection Law.
13. International transfers
- The Processor is established in the United Arab Emirates and processes Customer Data in the United States (AWS us-east-1, North Virginia), as Annex I describes. The Controller authorises these transfers and the onward transfers to the Sub-processors in Annex III.
- EU transfers. For Customer Data subject to the GDPR, the parties conclude the Standard Contractual Clauses, Module Two (transfer controller to processor), which are incorporated into this DPA by reference as if set out in full. The Controller is the “data exporter” and the Processor the “data importer”. The options are: Clause 7 (docking clause) applies; Clause 9(a), Option 2 (general written authorisation) with a 30-day notice period; the optional language in Clause 11 is not used; Clause 13: the supervisory authority of the EU Member State in which the data exporter is established or, where the data exporter is not established in the EU, the authority of the Member State where its representative under Article 27 GDPR is based or where its data subjects are located; Clause 17: the law of Ireland; Clause 18: the courts of Ireland. Annex I of this DPA is Annex I.A and I.B of the Clauses and names the competent supervisory authority (Annex I.C); Annex II of this DPA is Annex II of the Clauses; Annex III of this DPA is Annex III of the Clauses. Where the Processor engages a Sub-processor, the corresponding onward transfer is covered by the Sub-processor’s own Clauses as noted in Annex III.
- UK transfers. For Customer Data subject to the UK GDPR, the Standard Contractual Clauses as completed above apply as amended by the UK Addendum, which is incorporated by reference. Table 1 of the Addendum is completed with the parties’ details in Annex I; Table 2 selects the Clauses as completed in paragraph 2; Table 3 points to Annexes I to III of this DPA; in Table 4, either party may end the Addendum as set out in its section 19.
- Swiss transfers. For Customer Data subject to the Swiss Federal Act on Data Protection, the Clauses apply with these adaptations: for transfers subject to the Swiss Federal Act on Data Protection (FADP), references to the GDPR are read as references to the FADP, the Swiss Federal Data Protection and Information Commissioner is the competent authority, and data subjects in Switzerland may enforce their rights in Switzerland; and the term “Member State” is not read so as to exclude data subjects in Switzerland from the possibility of suing for their rights in Switzerland.
- Government access. The Processor has not received, and as at the date above is not subject to, any request from a public authority for access to Customer Data. If it receives one it will, unless legally prohibited, notify the Controller promptly, review the legality of the request, challenge it where there are reasonable grounds, disclose only the minimum required, and document the request and its response, in accordance with Clauses 14 and 15 of the Standard Contractual Clauses.
- If a transfer mechanism relied on above is invalidated or the Processor can no longer comply with it, the Processor will inform the Controller, and the parties will cooperate in good faith to put an alternative mechanism in place; failing that, the Controller may terminate by uninstalling.
14. Liability
- Each party’s liability under or in connection with this DPA is subject to the exclusions and limitations in section 12 of the terms of service, except to the extent Data Protection Law does not permit them to apply (for example Article 82 GDPR as between the parties and data subjects, and the third-party beneficiary rights under the Standard Contractual Clauses, which are not limited by this DPA).
- Each party is liable to data subjects as Data Protection Law provides. Where both parties are liable for the same damage, each may claim back from the other the part of the compensation corresponding to the other’s responsibility.
15. Term, changes and governing law
- This DPA takes effect when the Controller installs the Service and lasts as long as the Processor processes Customer Data on the Controller’s behalf, including the deletion period in section 11.
- The Processor may update this DPA to reflect changes in Data Protection Law, in regulatory guidance or in the Service, provided the changes do not reduce the protection of Customer Data. The Processor will tell the Controller by email at least 30 days before a material change takes effect; the Controller may object by uninstalling before that date. The date at the top identifies the version in force.
- Except for the Standard Contractual Clauses, which are governed by the law and courts stated in section 13, this DPA is governed by the federal laws of the United Arab Emirates as applied in the Emirate of Sharjah and the parties submit to the exclusive jurisdiction of the courts of the Emirate of Sharjah, United Arab Emirates. Nothing in this paragraph limits a data subject’s or supervisory authority’s rights under Data Protection Law.
- If any provision of this DPA is held invalid, the rest remains in force and the provision is replaced by a valid one that comes closest to the parties’ intent.
Annex I: Description of the processing
A. List of parties
| Data exporter (Controller) | The merchant operating the Shopify store on which BookSlot is installed: name, address and contact person as held in the store’s Shopify account. Role: controller. Activities: offering and managing bookable services to its customers. |
|---|---|
| Data importer (Processor) | Fenloft FZE, a free zone establishment incorporated in the United Arab Emirates and licensed by the Sharjah Publishing City Free Zone Authority (licence no. 4431620.01), Business Centre, Sharjah Publishing City Free Zone, Sharjah, United Arab Emirates. Contact: support@fenloft.com. Role: processor. Activities: providing the BookSlot booking service. |
B. Description of the transfer
| Categories of data subjects | The Controller’s customers and prospective customers who book, request or manage a booking; the Controller’s staff who are named in staff profiles, appear on the booking page, use the Shopify admin, receive notifications or connect a calendar. |
|---|---|
| Categories of personal data | Customers: name, email address, phone number, preferred language, marketing consent choice, Shopify customer id, booking details (service, location, staff member, date and time, party size, answers to the Controller’s booking questions, free-text notes), campaign tags, booking history and status, team notes and contact log, for paid bookings the price, currency, payment status and Shopify order reference, email delivery records. Staff: name, email, phone, title, bio, photo link, time zone, working hours, time off, Shopify user id, Google account email and calendar data where connected, access records (actor, time, IP address). |
| Sensitive data | None is requested by the Service. The Controller must not collect special categories of data through its booking questions unless it has a lawful basis and has told the Processor; no additional restrictions or safeguards are therefore applied by default. |
| Frequency of the transfer | Continuous, for as long as the Service is installed. |
| Nature of the processing | Collection through the booking page, storage, organisation, retrieval, display to the Controller, transmission by email to data subjects and to the Controller’s team, synchronisation with the Controller’s Shopify store and, where enabled, with a staff member’s calendar, export, anonymisation and erasure. |
| Purposes of the transfer and further processing | Providing the Service to the Controller: showing availability, taking and managing bookings, sending booking emails, linking bookings to Shopify customers, checkout and orders, providing calendar feeds and sync, supporting the Controller, and keeping the Service secure. |
| Retention period | For the duration of the Service, then deletion 48 hours after Shopify’s shop deletion request (itself 48 hours after uninstall); email delivery records 90 days; access records 12 months; customers inactive for 24 months anonymised; backups 7 days. Details in the privacy policy. |
| Transfers to sub-processors | As in Annex III: hosting, database, email delivery, error monitoring, support mail routing and, where enabled by a staff member, calendar sync, each for the duration of the Service and the retention periods above. |
C. Competent supervisory authority
Clause 13: the supervisory authority of the EU Member State in which the data exporter is established or, where the data exporter is not established in the EU, the authority of the Member State where its representative under Article 27 GDPR is based or where its data subjects are located.
Annex II: Technical and organisational measures
Measures implemented by the data importer to ensure an appropriate level of security, including measures to assist the data exporter with data subject requests (section 8) and to be imposed on Sub-processors (section 7.3).
| Area | Measures |
|---|---|
| Encryption in transit | HTTPS with TLS 1.2 or higher enforced for every connection to the Service; TLS between the application and the database (connection pooler), the email service and Shopify's APIs; HMAC-signed requests from Shopify and the storefront. |
| Encryption at rest | Database storage and daily backups encrypted at rest (AES-256) by the database provider; Google OAuth tokens additionally encrypted at the application level (AES-256-GCM) with a key held only in the hosting provider's secret store; no secrets in source code. |
| Tenant isolation | Every database query is scoped to the one store it belongs to through the data access layer; the Shopify session token identifies the store on every admin request; storefront requests are verified with Shopify's app proxy signature and rate-limited. |
| Access control | Production credentials exist only in the hosting provider's secret store and the Provider's password manager; access is limited to the Provider's personnel who need it, protected by unique generated passwords and two-factor authentication on every provider account, reviewed quarterly and removed on the day a person leaves. |
| Environment separation | Production and development run on separate databases and separate Shopify apps; development tooling refuses to start against the production database; test stores never touch production data. |
| Logging and monitoring | Access to personal data (viewing bookings, lists, calendar, exports, customer sync, privacy requests) is recorded with actor, time and IP address and kept 12 months; application logs have email addresses and tokens removed; error reports have email addresses and phone numbers removed before they leave the Service; the access log is reviewed monthly. |
| Data minimisation and pseudonymisation | Only the fields needed for a booking are collected; no addresses, payment or government data; IP addresses are not stored except in the access log; customers inactive for 24 months are anonymised automatically; deletion requests anonymise rather than keep. |
| Availability and recovery | Two application instances behind health checks with rolling deploys; a managed PostgreSQL service with daily encrypted backups kept 7 days; a documented and rehearsed restore procedure (last rehearsed October 2026); a written data loss prevention strategy. |
| Incident response | A written security incident response policy with severity levels, containment steps and notification duties; Controllers notified of a personal data breach without undue delay and within 48 hours of the Provider becoming aware; the policy is reviewed yearly and after every incident. |
| Secure development | Every change goes through version control, automated type checks, linting and test suites against a dedicated test database before deployment; dependencies are updated regularly; input is validated with schemas on every endpoint. |
| Sub-processor management | Each sub-processor is bound by a data processing agreement with Standard Contractual Clauses; the list is published and Controllers are told 30 days before a change. |
Annex III: Sub-processors
The Controller has authorised the use of the following Sub-processors. The same list appears in section 6 of the privacy policy and is updated there first; the notice period in section 7 applies to every change.
| Sub-processor | Processing | Location | Transfer safeguard |
|---|---|---|---|
| Shopify | The platform BookSlot runs in: merchant sign-in, customer records, checkout and payment for paid bookings, app billing, compliance webhooks | Shopify's infrastructure (global) | The merchant's own Shopify agreement and Shopify's data processing addendum |
| Supabase | PostgreSQL database holding all BookSlot data, and its encrypted daily backups | AWS us-east-1 (North Virginia, United States) | Supabase DPA with EU Standard Contractual Clauses |
| Fly.io | Hosting of the BookSlot application and background jobs; application logs (redacted) kept for a short period | iad (Ashburn, Virginia, United States) | Fly.io DPA with EU Standard Contractual Clauses |
| Amazon Web Services (Amazon SES) | Sending booking emails to customers and store teams; delivery and bounce records | us-east-1 (North Virginia, United States) | AWS GDPR Data Processing Addendum with EU Standard Contractual Clauses |
| Sentry | Error monitoring: technical reports of errors in the app and background jobs, tagged with the shop domain. Email addresses and phone numbers are removed before a report is sent | European Union (EU data residency) | Sentry DPA; data stored in the EU |
| Cloudflare | Routing of email sent to the support address to the Provider's mailbox (support correspondence only) | Global network | Cloudflare DPA with EU Standard Contractual Clauses |
| Google | Optional Google Calendar sync, which is not yet offered to stores: once it is, and only when a staff member connects Google Calendar, reading and writing that staff member's chosen calendar. Until then BookSlot sends nothing to Google | Google's infrastructure (global) | Google Cloud data processing terms with EU Standard Contractual Clauses; staff member's own consent |
Questions about this DPA, objections to a Sub-processor, audit requests and breach notifications: support@fenloft.com.