Version 1.3 · Last updated
This Data Processing Agreement (“DPA”) forms part of the Terms of Service between AnyReplay (“we”, “us”) and the customer that accepts it (“you”). It applies whenever we process personal data on your behalf while providing AnyReplay. It is written to meet Article 28 of the EU General Data Protection Regulation (“GDPR”) and the equivalent UK rules.
You are the controller of the personal data recorded on your websites and apps and of the data about your team. We are your processor. If you are yourself a processor acting for someone else, we are your sub-processor, and you are responsible for passing on your controller’s instructions and for having the authority to agree to this DPA.
Your instructions are this DPA, the Terms, and the settings you choose in the product — masking, consent mode, retention, what you send with identify and custom events, who you invite. We will tell you if we believe an instruction breaks data protection law.
We process personal data to provide AnyReplay: recording sessions on the sites where you install our recorder, storing them, replaying and translating them for your team, and running your account. This DPA lasts as long as we process personal data for you, and its deletion clauses outlive the Terms until that data is gone.
Collection, storage, organisation, retrieval, display, translation and deletion of session recordings and related account data, and, on paid plans, summaries and analyses of those recordings written by Argus, our AI assistant, for the sole purpose of letting your team understand how people use your product. We do not sell your data, use it to train models, or combine it with other customers’ data.
Data subjects:
Personal data:
IP addresses of visitors are not stored. The recording endpoint uses the address a request came from only in memory, to apply rate limits, and does not write it to the database or the recording. Our content-delivery network (Cloudflare) necessarily sees it in transit and resolves it to an approximate place; what reaches us, and what we store on the session, is that result — country, city, region and time zone — and never the address itself. See the sub-processor list.
You must not use AnyReplay to collect special categories of personal data (health, religion, sexual orientation, biometric data and the like) or criminal-offence data.
Configuring masking is your obligation, not ours, because what the recorder records depends on how you configure it. Form field values are masked by default. If you turn that off with maskAllInputs: false, or if any page or screen where you install the recorder has other text that could carry special-category data, or any other data you are not entitled to store in a recording, you must mask it before you install: maskAllTyping: true for rich-text editors as well as fields, or the ar-mask class for individual elements. Elements marked ar-block are not recorded at all. The same options exist in our React Native SDK, where the marker is a testID containing ar-mask instead of a class. This applies to ordinary contact details as much as to anything else: with maskAllInputs: false, an email address or a telephone number typed into a form is recorded unless you mask it.
Payment card data is the one category we enforce for you: a password, a one-time code, a card number, a security code, an expiry date, a cardholder name, an IBAN or a routing number is masked on the visitor’s device in every configuration, as is any value shaped like a card number, and no setting records them. That is a floor, not a guarantee that your checkout is out of scope: a card number your own code renders as page text, or one typed into a rich-text field, is ordinary page text and it is for you to mask it. In a mobile app the floor can only read what the app tells the operating system — a secure field, or one whose content type, autofill hint, keyboard type, accessibility label, placeholder or test identifier names a credential or a payment instrument — so a text field carrying no such hint is recorded, and labelling it is your responsibility. Sending such data through identify() or custom-event properties, which are stored as you send them, is likewise your decision and your responsibility.
Only people who need access to operate the service or to help you when you ask can reach customer data, and each of them is under a written or statutory duty of confidentiality. We access an organisation’s recordings only to operate the service, to investigate a problem you report, or where the law requires it.
You give us general written authorisation to use the sub-processors listed on our sub-processor page (Annex III). Each is bound by a written contract with data-protection obligations no weaker than this DPA’s, and we remain responsible to you for their performance.
We will announce any new sub-processor at least 30 days before it starts processing your data, on that page and its RSS feed and by email to your organisation’s owners. You may object on reasonable data-protection grounds within that period by writing to [email protected]. We will try in good faith to resolve the objection; if we cannot, you may terminate the affected service and we will refund any prepaid fees for the unused period.
Requests from your visitors or users go to you, as controller. If one reaches us, we will pass it to you without responding ourselves, unless you ask us to. The dashboard lets you act on requests directly:
Where these are not enough, we will help you on request.
We will notify you without undue delay, and in any case within 48 hours, after becoming aware of a personal-data breach affecting your data. We will send it to your organisation’s owners and include what we know about the nature of the breach, the data and people affected, the likely consequences, and what we are doing about it — adding detail as we learn it. Notifying you is not an admission of fault.
During the service, recordings are deleted automatically when they pass the retention period set for your organisation, and at once when you delete them or when an erasure request matches them.
At the end of the service an owner closes the organisation from the dashboard. Closure takes effect after a 30-day grace period, during which it can be cancelled and you can export what you need; after that we delete the organisation’s recordings, projects, memberships and account data.
Copies do not disappear everywhere at the same instant. Whenever we delete a recording, a copy still held on our own server goes with it, while a copy in object storage is hidden by the storage provider immediately and its bytes removed seven days later: “deleted” therefore means gone within 7 days rather than in the same instant. The window is deliberate — it is what would let a deletion nobody intended, whether a bug of ours or a stolen key, be undone while it still can be — and nothing is read back from it in the ordinary running of the service. Backups are encrypted on our own server before they leave it and age out within 30 days; while recordings are stored on our server rather than in object storage they are included in them, so a deleted recording can survive in an encrypted backup for that long. Nobody restores from a backup except to recover the service after a failure.
One record outlives the organisation deliberately: the billing events behind its payments, which we keep for accounting with the organisation’s identifier removed from them. They hold what the payment provider sent us about a charge, which can include the buyer’s name and email address.
We will answer reasonable written questions about our processing and send you the information you need to show compliance, including this DPA’s annexes and our security overview. If that is not enough, you (or an independent auditor bound by confidentiality) may audit our compliance once a year, with at least 30 days’ notice, during business hours, at your cost, and in a way that does not expose other customers’ data. More often is possible after a breach or when a supervisory authority requires it.
Our servers are in Germany. Some sub-processors are based, or may process data, outside the European Economic Area; the sub-processor page says where each one is and what safeguard applies. Where personal data is transferred outside the EEA to a country without an adequacy decision, the EU Standard Contractual Clauses (Commission Decision (EU) 2021/914) apply and are incorporated into this DPA by reference: Module Two (controller to processor) where you are a controller, and Module Three (processor to processor) where you are a processor. For those clauses, the annexes of this DPA are their annexes, option 2 of clause 9 (general authorisation) applies with the notice period in section 8, clause 13 supervision follows your establishment, and clauses 17 and 18 name the law and courts of Germany.
For transfers subject to UK data-protection law, the International Data Transfer Addendum issued by the UK Information Commissioner applies alongside those clauses, with the information in this DPA completing its tables. For Switzerland, references to the GDPR include the Swiss Federal Act on Data Protection.
Each party’s liability under this DPA is subject to the limitations in the Terms of Service, except where the law does not allow it to be limited.
If documents conflict: the Standard Contractual Clauses (where they apply) prevail over this DPA, and this DPA prevails over the Terms and anything else you and we have agreed about personal data.
The current list, with each provider’s purpose, location and transfer safeguard, and a dated log of changes, is at anyreplay.com/legal/subprocessors.
Acceptance is recorded per version. When a new version changes what we process or how, the dashboard shows that the organisation’s acceptance is for an earlier version and asks an owner or admin to accept the current one; the earlier acceptance stays on the record.