Fog Atlas

Draft — not yet approvedThis text is a draft. It will be replaced by the approved version.

Processor agreement

Version: beta 1 · Effective from: [date of publication]

This agreement covers the personal data that a game master ("DM") puts into Fog Atlas, or lets players put in: the people in your worlds and adventures. For that data you are the controller and we, Controlled Chaos BV, are the processor: we store it and show it only on your behalf. For your own account data we are the controller, as set out in our Privacy page.

It is built on the European Commission's standard contractual clauses for processors, Commission Implementing Decision (EU) 2021/915 (Article 28(7) GDPR). Clauses 1 to 10 below are the official text, word for word. The Annexes fill in the details for Fog Atlas.

How this agreement is put together

  • The regulation. Where the clauses let the parties choose between Regulation (EU) 2016/679 (the GDPR) and Regulation (EU) 2018/1725 (for EU institutions), we use the GDPR.
  • Clause 5 (docking clause). Included.
  • Clause 7.7(a) (sub-processors). OPTION 2, general written authorisation: you allow the sub-processors listed in Annex IV, and we tell you in writing at least 30 days before adding or replacing one, so that you can object.
  • Annexes I to IV. Filled in below: the parties (I), the processing (II), our security measures (III) and our sub-processors (IV).

Other terms

These terms cover what the clauses leave to the parties. If anything here conflicts with the clauses, the clauses prevail (Clause 4).

  • How it is agreed. This agreement is linked from the Terms of use and forms part of them. You accept it when you create your account. The beta welcome email repeats the link.
  • Hobby use. A DM running a game for friends may fall under the GDPR's household exemption. If so, this agreement still applies as a contract between you and us.
  • Your instructions. You give your instructions by using the app: creating, sharing, revealing, editing, exporting and deleting content, and inviting or removing players. This agreement is also an instruction. We do not use your data for our own purposes: no analytics, no advertising, no AI training.
  • Breaches. We tell you about a personal data breach affecting your data without undue delay, and at the latest within 48 hours of becoming aware of it.
  • The end of the beta. If we end the beta, we give at least 30 days' notice so that you can export your data, and then delete it as described in Annex II.
  • Liability. As in the Terms of use, to the extent the GDPR allows. Nothing here limits the rights of a data subject under Article 82 GDPR.
  • Changes. We announce changes to this agreement like changes to the Terms of use, at least 30 days ahead for important ones. A change that lowers the protection of your data needs your agreement.
  • Law and courts. Belgian law applies. The courts of Leuven, Belgium, are competent, subject to mandatory consumer law.

The standard contractual clauses

Source: the Annex to Commission Implementing Decision (EU) 2021/915 of 4 June 2021 on standard contractual clauses between controllers and processors under Article 28(7) of Regulation (EU) 2016/679 of the European Parliament and of the Council and Article 29(7) of Regulation (EU) 2018/1725 of the European Parliament and of the Council, OJ L 199, 7.6.2021, p. 18, available on [EUR-Lex](https://eur-lex.europa.eu/eli/dec_impl/2021/915/oj). © European Union. Reused under Commission Decision 2011/833/EU on the reuse of Commission documents. Only the text published in the Official Journal of the European Union is authentic.

SECTION I

Clause 1: Purpose and scope

(a) The purpose of these Standard Contractual Clauses (the Clauses) is to ensure compliance with Article 28(3) and (4) of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation).

(b) The controllers and processors listed in Annex I have agreed to these Clauses in order to ensure compliance with Article 28(3) and (4) of Regulation (EU) 2016/679 and/or Article 29(3) and (4) of Regulation (EU) 2018/1725.

(c) These Clauses apply to the processing of personal data as specified in Annex II.

(d) Annexes I to IV are an integral part of the Clauses.

(e) These Clauses are without prejudice to obligations to which the controller is subject by virtue of Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725.

(f) These Clauses do not by themselves ensure compliance with obligations related to international transfers in accordance with Chapter V of Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725.

Clause 2: Invariability of the Clauses

(a) The Parties undertake not to modify the Clauses, except for adding information to the Annexes or updating information in them.

(b) This does not prevent the Parties from including the standard contractual clauses laid down in these Clauses in a broader contract, or from adding other clauses or additional safeguards provided that they do not directly or indirectly contradict the Clauses or detract from the fundamental rights or freedoms of data subjects.

Clause 3: Interpretation

(a) Where these Clauses use the terms defined in Regulation (EU) 2016/679 or Regulation (EU) 2018/1725 respectively, those terms shall have the same meaning as in that Regulation.

(b) These Clauses shall be read and interpreted in the light of the provisions of Regulation (EU) 2016/679 or Regulation (EU) 2018/1725 respectively.

(c) These Clauses shall not be interpreted in a way that runs counter to the rights and obligations provided for in Regulation (EU) 2016/679 / Regulation (EU) 2018/1725 or in a way that prejudices the fundamental rights or freedoms of the data subjects.

Clause 4: Hierarchy

In the event of a contradiction between these Clauses and the provisions of related agreements between the Parties existing at the time when these Clauses are agreed or entered into thereafter, these Clauses shall prevail.

Clause 5 - Optional: Docking clause

(a) Any entity that is not a Party to these Clauses may, with the agreement of all the Parties, accede to these Clauses at any time as a controller or a processor by completing the Annexes and signing Annex I.

(b) Once the Annexes in (a) are completed and signed, the acceding entity shall be treated as a Party to these Clauses and have the rights and obligations of a controller or a processor, in accordance with its designation in Annex I.

(c) The acceding entity shall have no rights or obligations resulting from these Clauses from the period prior to becoming a Party.

SECTION II: OBLIGATIONS OF THE PARTIES

Clause 6: Description of processing(s)

The details of the processing operations, in particular the categories of personal data and the purposes of processing for which the personal data is processed on behalf of the controller, are specified in Annex II.

Clause 7: Obligations of the Parties

7.1. Instructions

(a) The processor shall process personal data only on documented instructions from the controller, unless required to do so by Union or Member State law to which the processor is subject. In this case, the processor shall inform the controller of that legal requirement before processing, unless the law prohibits this on important grounds of public interest. Subsequent instructions may also be given by the controller throughout the duration of the processing of personal data. These instructions shall always be documented.

(b) The processor shall immediately inform the controller if, in the processor’s opinion, instructions given by the controller infringe Regulation (EU) 2016/679 / Regulation (EU) 2018/1725 or the applicable Union or Member State data protection provisions.

7.2. Purpose limitation

The processor shall process the personal data only for the specific purpose(s) of the processing, as set out in Annex II, unless it receives further instructions from the controller.

7.3. Duration of the processing of personal data

Processing by the processor shall only take place for the duration specified in Annex II.

7.4. Security of processing

(a) The processor shall at least implement the technical and organisational measures specified in Annex III to ensure the security of the personal data. This includes protecting the data against a breach of security leading to accidental or unlawful destruction, loss, alteration, unauthorised disclosure or access to the data (personal data breach). In assessing the appropriate level of security, the Parties shall take due account of the state of the art, the costs of implementation, the nature, scope, context and purposes of processing and the risks involved for the data subjects.

(b) The processor shall grant access to the personal data undergoing processing to members of its personnel only to the extent strictly necessary for implementing, managing and monitoring of the contract. The processor shall ensure that persons authorised to process the personal data received have committed themselves to confidentiality or are under an appropriate statutory obligation of confidentiality.

7.5. Sensitive data

If the processing involves personal data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, or trade union membership, genetic data or biometric data for the purpose of uniquely identifying a natural person, data concerning health or a person’s sex life or sexual orientation, or data relating to criminal convictions and offences (“sensitive data”), the processor shall apply specific restrictions and/or additional safeguards.

7.6. Documentation and compliance

(a) The Parties shall be able to demonstrate compliance with these Clauses.

(b) The processor shall deal promptly and adequately with inquiries from the controller about the processing of data in accordance with these Clauses.

(c) The processor shall make available to the controller all information necessary to demonstrate compliance with the obligations that are set out in these Clauses and stem directly from Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725. At the controller’s request, the processor shall also permit and contribute to audits of the processing activities covered by these Clauses, at reasonable intervals or if there are indications of non-compliance. In deciding on a review or an audit, the controller may take into account relevant certifications held by the processor.

(d) The controller may choose to conduct the audit by itself or mandate an independent auditor. Audits may also include inspections at the premises or physical facilities of the processor and shall, where appropriate, be carried out with reasonable notice.

(e) The Parties shall make the information referred to in this Clause, including the results of any audits, available to the competent supervisory authority/ies on request.

7.7. Use of sub-processors

(a) OPTION 2: GENERAL WRITTEN AUTHORISATION: The processor has the controller’s general authorisation for the engagement of sub-processors from an agreed list. The processor shall specifically inform in writing the controller of any intended changes of that list through the addition or replacement of sub-processors at least 30 days in advance, thereby giving the controller sufficient time to be able to object to such changes prior to the engagement of the concerned sub-processor(s). The processor shall provide the controller with the information necessary to enable the controller to exercise the right to object.

(b) Where the processor engages a sub-processor for carrying out specific processing activities (on behalf of the controller), it shall do so by way of a contract which imposes on the sub-processor, in substance, the same data protection obligations as the ones imposed on the data processor in accordance with these Clauses. The processor shall ensure that the sub-processor complies with the obligations to which the processor is subject pursuant to these Clauses and to Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725.

(c) At the controller’s request, the processor shall provide a copy of such a sub-processor agreement and any subsequent amendments to the controller. To the extent necessary to protect business secret or other confidential information, including personal data, the processor may redact the text of the agreement prior to sharing the copy.

(d) The processor shall remain fully responsible to the controller for the performance of the sub-processor’s obligations in accordance with its contract with the processor. The processor shall notify the controller of any failure by the sub-processor to fulfil its contractual obligations.

(e) The processor shall agree a third party beneficiary clause with the sub-processor whereby - in the event the processor has factually disappeared, ceased to exist in law or has become insolvent - the controller shall have the right to terminate the sub-processor contract and to instruct the sub-processor to erase or return the personal data.

7.8. International transfers

(a) Any transfer of data to a third country or an international organisation by the processor shall be done only on the basis of documented instructions from the controller or in order to fulfil a specific requirement under Union or Member State law to which the processor is subject and shall take place in compliance with Chapter V of Regulation (EU) 2016/679 or Regulation (EU) 2018/1725.

(b) The controller agrees that where the processor engages a sub-processor in accordance with Clause 7.7. for carrying out specific processing activities (on behalf of the controller) and those processing activities involve a transfer of personal data within the meaning of Chapter V of Regulation (EU) 2016/679, the processor and the sub-processor can ensure compliance with Chapter V of Regulation (EU) 2016/679 by using standard contractual clauses adopted by the Commission in accordance with of Article 46(2) of Regulation (EU) 2016/679, provided the conditions for the use of those standard contractual clauses are met.

Clause 8: Assistance to the controller

(a) The processor shall promptly notify the controller of any request it has received from the data subject. It shall not respond to the request itself, unless authorised to do so by the controller.

(b) The processor shall assist the controller in fulfilling its obligations to respond to data subjects’ requests to exercise their rights, taking into account the nature of the processing. In fulfilling its obligations in accordance with (a) and (b), the processor shall comply with the controller’s instructions

(c) In addition to the processor’s obligation to assist the controller pursuant to Clause 8(b), the processor shall furthermore assist the controller in ensuring compliance with the following obligations, taking into account the nature of the data processing and the information available to the processor:

(1) the obligation to carry out an assessment of the impact of the envisaged processing operations on the protection of personal data (a ‘data protection impact assessment’) where a type of processing is likely to result in a high risk to the rights and freedoms of natural persons;

(2) the obligation to consult the competent supervisory authority/ies prior to processing where a data protection impact assessment indicates that the processing would result in a high risk in the absence of measures taken by the controller to mitigate the risk;

(3) the obligation to ensure that personal data is accurate and up to date, by informing the controller without delay if the processor becomes aware that the personal data it is processing is inaccurate or has become outdated;

(4) the obligations in Article 32 of Regulation (EU) 2016/679.

(d) The Parties shall set out in Annex III the appropriate technical and organisational measures by which the processor is required to assist the controller in the application of this Clause as well as the scope and the extent of the assistance required.

Clause 9: Notification of personal data breach

In the event of a personal data breach, the processor shall cooperate with and assist the controller for the controller to comply with its obligations under Articles 33 and 34 of Regulation (EU) 2016/679 or under Articles 34 and 35 of Regulation (EU) 2018/1725, where applicable, taking into account the nature of processing and the information available to the processor.

9.1 Data breach concerning data processed by the controller

In the event of a personal data breach concerning data processed by the controller, the processor shall assist the controller:

(a) in notifying the personal data breach to the competent supervisory authority/ies, without undue delay after the controller has become aware of it, where relevant/(unless the personal data breach is unlikely to result in a risk to the rights and freedoms of natural persons);

(b) in obtaining the following information which, pursuant to Article 33(3) of Regulation (EU) 2016/679, shall be stated in the controller’s notification, and must at least include:

(1) the nature of the personal data including where possible, the categories and approximate number of data subjects concerned and the categories and approximate number of personal data records concerned;

(2) the likely consequences of the personal data breach;

(3) the measures taken or proposed to be taken by the controller to address the personal data breach, including, where appropriate, measures to mitigate its possible adverse effects.

Where, and insofar as, it is not possible to provide all this information at the same time, the initial notification shall contain the information then available and further information shall, as it becomes available, subsequently be provided without undue delay.

(c) in complying, pursuant to Article 34 of Regulation (EU) 2016/679, with the obligation to communicate without undue delay the personal data breach to the data subject, when the personal data breach is likely to result in a high risk to the rights and freedoms of natural persons.

9.2 Data breach concerning data processed by the processor

In the event of a personal data breach concerning data processed by the processor, the processor shall notify the controller without undue delay after the processor having become aware of the breach. Such notification shall contain, at least:

(a) a description of the nature of the breach (including, where possible, the categories and approximate number of data subjects and data records concerned);

(b) the details of a contact point where more information concerning the personal data breach can be obtained;

(c) its likely consequences and the measures taken or proposed to be taken to address the breach, including to mitigate its possible adverse effects.

Where, and insofar as, it is not possible to provide all this information at the same time, the initial notification shall contain the information then available and further information shall, as it becomes available, subsequently be provided without undue delay.

The Parties shall set out in Annex III all other elements to be provided by the processor when assisting the controller in the compliance with the controller’s obligations under Articles 33 and 34 of Regulation (EU) 2016/679.

SECTION III: FINAL PROVISIONS

Clause 10: Non-compliance with the Clauses and termination

(a) Without prejudice to any provisions of Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725, in the event that the processor is in breach of its obligations under these Clauses, the controller may instruct the processor to suspend the processing of personal data until the latter complies with these Clauses or the contract is terminated. The processor shall promptly inform the controller in case it is unable to comply with these Clauses, for whatever reason.

(b) The controller shall be entitled to terminate the contract insofar as it concerns processing of personal data in accordance with these Clauses if:

(1) the processing of personal data by the processor has been suspended by the controller pursuant to point (a) and if compliance with these Clauses is not restored within a reasonable time and in any event within one month following suspension;

(2) the processor is in substantial or persistent breach of these Clauses or its obligations under Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725;

(3) the processor fails to comply with a binding decision of a competent court or the competent supervisory authority/ies regarding its obligations pursuant to these Clauses or to Regulation (EU) 2016/679 and/or Regulation (EU) 2018/1725.

(c) The processor shall be entitled to terminate the contract insofar as it concerns processing of personal data under these Clauses where, after having informed the controller that its instructions infringe applicable legal requirements in accordance with Clause 7.1 (b), the controller insists on compliance with the instructions.

(d) Following termination of the contract, the processor shall, at the choice of the controller, delete all personal data processed on behalf of the controller and certify to the controller that it has done so, or, return all the personal data to the controller and delete existing copies unless Union or Member State law requires storage of the personal data. Until the data is deleted or returned, the processor shall continue to ensure compliance with these Clauses.

ANNEX I: List of parties

Controller(s):

NameThe DM: the game master who holds the Fog Atlas account
AddressAs given by the DM
Contact person's name, position and contact detailsThe DM, at the email address of the Fog Atlas account
Signature and accession dateAccepted electronically when the DM creates the account; the date of account creation

Processor(s):

NameControlled Chaos BV, which runs Fog Atlas
AddressWilselsesteenweg 349/1, 3010 Leuven, Belgium
Company numberBE 0730.857.188
Contact person's name, position and contact detailsMaarten Peeters, director, hello@fogatlas.online
Signature and accession dateOffered on this page; accepted with the account on the date of account creation

ANNEX II: Description of the processing

Categories of data subjectsThe DM's players. People named in the DM's content (for example real names typed into notes). Other DMs with whom the DM shares an adventure or to whom the DM lends a world, insofar as their actions appear in that adventure (for example roll and reveal history).
Categories of personal dataFrom the DM: worlds, maps, records, adventures, chronicle entries, chapters, character sheets, images and notes. These may contain player names and anything else the DM types. From players, through their private link: the name or label they use (a label, not an email address), the notes they write, images they upload for their character, dice rolls, skillbook entries, and which reveals and announcements they have seen.
Not processedNo audio, recordings or transcripts on the hosted service. No player accounts, player email addresses or player passwords.
Sensitive dataNot intended. Fog Atlas is not designed for health data, data on criminal convictions, or national identification numbers, and the DM should not enter them. The app cannot stop free text. Where such data is entered anyway, it is protected by the measures in Annex III and is never used for anything but the purposes below.
Nature of the processingStorage, retrieval, display, transmission to the people the DM chooses, backup and deletion.
PurposesStoring the DM's content; showing it to the DM and to the players and co-DMs the DM chooses; backups and restore; security, abuse prevention and fixing faults. Nothing else.
DurationAs long as the DM's account exists, followed by deletion as below.

Retention and deletion.

DataHow long
Live contentUntil the DM deletes it, the adventure or world it belongs to, or the account. Deleting the account removes the DM's data from the live database at once.
Player linksThey stop working after 90 days, or sooner if the DM revokes them.
BackupsDeleted data is removed from backups within 90 days of deletion.
Server logs[14] days

What stays after the DM deletes their account. (a) A character the DM had in another DM's adventure is unlinked from the deleted account, not deleted: it belongs to that other adventure. (b) Roll and reveal history in an adventure keep an anonymous actor id, with no name or email attached. Invitation records are erased with the account.

Return of data. The DM can export all their data at any time from the account settings, as a complete archive or per world.

AI features. Hosted AI is not used for the DM's data: hosted AI is off for every account, and our server holds no AI key. If hosted AI is ever offered (for example as part of a paid plan), any hosted-AI provider would become a sub-processor under Clause 7.7, with 30 days' notice.

The DM's own AI provider or local model. The DM can save their own AI provider key, or the address of their own local model, in the account settings. When the DM then uses an AI feature, we forward the DM's request through our server to the provider the DM chose, at the DM's instruction. That provider is not our sub-processor: it acts under the DM's own agreement with it, and the calls are billed to the DM's own account with that provider. If that provider is outside the EU, the transfer is made at the DM's instruction under that agreement. We store the key encrypted at rest and only ever show its last 4 characters. We do not log the DM's prompts.

ANNEX III: Technical and organisational measures including technical and organisational measures to ensure the security of the data

Confidentiality and integrity.

  • HTTPS everywhere, with certificates obtained automatically. On the player address, players can reach only an allowlist of player routes.
  • Passwords are hashed with argon2id.
  • Login session tokens are random and stored only as a hash. Session cookies are httpOnly, SameSite=Lax and Secure.
  • Password-reset links are stored only as a hash, last one hour and work once. Invite codes are stored only as a hash.
  • Player links are random and stored as a hash, plus an encrypted copy (AES-256-GCM) so that the DM can redraw the QR code. The key lives only in the server environment, not in the database or the backups.
  • Player-link tokens are removed from server logs.
  • Rate limits on login, registration and player routes.
  • Security headers, including a content security policy, framing denied and no referrer.
  • The database and web server listen only on the server itself. A firewall denies everything except web traffic and administration.
  • Administration only over a private network, with keys, by our contact person Maarten Peeters alone, the only person with access to the data. Anyone who helps in future and can see the data will first be bound to confidentiality in writing, and this Annex will be updated.
  • We look at a DM's content only when needed to keep the service running, fix a problem the DM reports, or comply with the law.
  • Each DM's games are kept apart from other DMs' games: adventure routes check membership.
  • Development and tests use made-up data, not production data.
  • Separation between DMs is tested automatically: a second account is tried against every route of the first account's data and must get nothing. Uploaded images are fetched by a long, unguessable address (a hash of the image); anyone who already holds that exact address can fetch the image.
  • The content security policy still allows inline scripts. HTTPS is enforced with an HSTS header (one year, subdomains included).
  • The live database and disks are not encrypted at rest; the backups are encrypted.

Availability and recovery.

  • A nightly backup of the database and media files, encrypted on the server.
  • An encrypted off-site copy on a separate Hetzner Storage Box in Germany, append-only so that the server cannot erase it.
  • An alert if a backup does not run.
  • A written recovery runbook, including a restore drill on a clean machine.

Breaches. On a suspected compromise we isolate the server, keep an evidence snapshot, rebuild on a new server, revoke all login sessions and player links, rotate all secrets, re-issue player links, and assess who must be told. We keep a record of every breach, including breaches that need no report, in a breach register.

Helping the DM. In the app the DM can view, correct, export and delete content, revoke player links and remove players. If a player or anyone else asks us to exercise a data protection right over data in a DM's adventure, we pass the request to the DM and do not answer it ourselves unless the DM asks us to. Other help: hello@fogatlas.online, free of charge within reason.

Certifications. None. We have no formal information security management system; the measures above are our security policy.

ANNEX IV: List of sub-processors

The controller has authorised the use of the following sub-processors:

Sub-processorAddressProcessingLocation
Hetzner Online GmbHIndustriestr. 25, 91710 Gunzenhausen, GermanyThe server that runs Fog Atlas, its database and media files; and the Storage Box holding the encrypted backupsFalkenstein, Germany (the server and the Storage Box; nothing elsewhere)
CombellSee our Privacy pageThe mailbox for hello@fogatlas.online. Support email only, not game contentBelgium (EU)
Google (Gmail)See our Privacy pageReading and replying to the emails sent to hello@fogatlas.online. Support email only, not game contentEU and US data centres; transfers under the EU-US Data Privacy Framework (Google LLC is certified)

Hetzner is bound by its data processing agreement, accepted for both products. Personal data is not transferred outside the EU.

Not sub-processors for the DM's game data:

  • Brevo (Sendinblue SAS, France) sends invitation and password-reset emails only. Those emails carry DM account data, for which we are the controller, and never game content. Brevo is listed in our Privacy page.
  • Discord, the optional game-night chat, acts under its own terms and receives no data from Fog Atlas.
  • Cloudflare only provides DNS. The app addresses point straight to our Hetzner server; no traffic or game content passes through Cloudflare.
  • Tailscale carries administrator access between our contact person's two machines, encrypted (WireGuard). It carries no Fog Atlas content.
  • Let's Encrypt (certificates), healthchecks.io (backup and uptime pings) and GitHub Container Registry (app images) receive no game content.
  • AI providers: none. Hosted AI is off for every account, and our server holds no AI key. A provider the DM chooses with their own key or local model acts under the DM's own agreement with it, not as our sub-processor. See Annex II.
Privacy·Terms of use·Licences·Processor agreement