Matrix for GDPR message retention and erasure

Synapse can purge old messages on a schedule and mark a deactivated user as GDPR-erased, but federation and room history limit what erasure reaches. This page maps the GDPR duties to those controls and the evidence and gaps that remain.

On this page

Matrix GDPR message retention: what Synapse can and cannot erase

Synapse retention policies and the erase flag on account deactivation help with storage limitation and erasure, but federation and room history mean erasure is not complete in every copy of a message. A regulated organization running or planning a self-hosted Synapse homeserver needs to decide which obligations the platform can support, which it cannot, and where its own procedures must close the gap. Article 5(1)(e) of the GDPR requires personal data to be kept no longer than necessary, Article 25(2) requires storage periods to be limited by default, and Article 17(1) requires erasure without undue delay on six listed grounds. Synapse provides configuration settings for the first two and an admin action for the third. It does not decide your lawful basis, transparency notices, security of processing or records of processing. DeployOpen prepares configuration and evidence for these areas, while independent auditors and supervisory authorities judge whether your processing complies.

Start with the retention settings. Synapse follows MSC1763: a server-wide default policy with max_lifetime is the stable option, while per-room m.room.retention policies are experimental. Without either policy, no message in a room is ever purged, so the default state must be changed on purpose. Agree maximum lifetimes with the data owners for each category of room and record the reason for each value, because Article 25(2) ties the storage period to the purpose of the processing. Then test three behaviors before you rely on the policy. Expired events stop being served to clients but can remain in the database until the next purge job removes them. Retention does not apply to state events, and Synapse never deletes the last message in a room. Ask your compliance lead whether these residual copies fit your retention schedule and how you will document them.

The deactivate account admin API can mark a user as GDPR-erased with erase: true. Afterward, that user's messages stay visible to members who were in the room when the messages were sent, and they are hidden from users who join later. This changes what later joiners see, but it does not complete deletion from the room history. Treat it as one step in an erasure procedure. Log the request, the Article 17(1) ground, the decision and the date, then confirm the outcome on your own server. Federation extends the limit. Copies of events may exist on other homeservers that you do not operate, and your server cannot erase those copies for you. Where the controller has made the data public, Article 17(2) requires reasonable steps, including technical measures, to inform other controllers. Your procedure therefore needs a way to notify the operators of servers whose users shared rooms with yours.

Before go-live, confirm the following with your vendor and in your own environment: the Synapse version you run, how and when the purge job executes, whether federation is restricted through federation_domain_whitelist, and which rooms hold data that federated servers may keep. Ask DeployOpen for a written erasure runbook, retention configuration evidence and a test that shows what an erased user's messages look like to members who joined before and after the erasure. Record the residual risk in your processing documentation and ask your legal team whether it is acceptable. The EDPB's February 2026 news item on the challenges to full implementation of the right to erasure is a useful reference for that discussion.

Mapping GDPR duties to Synapse controls

This table maps four GDPR provisions to the Synapse setting or admin call that supports each one, and to the part the controller must still handle. Read each row left to right: the duty, what Synapse provides, and what your organization must decide or document. The main takeaway is that Synapse can purge expired messages and mark erased accounts, but it does not decide your retention periods or handle notices to other controllers for you.

ProvisionSynapse capability and configurationRemains the controller's responsibility
Article 5(1)(e), storage limitationServer-wide retention policy with max_lifetime. Without a retention policy, no message is ever purged.Set a documented retention period per purpose and confirm it matches the policy in homeserver.yaml.
Article 25(2), default storage periodApply the same server-wide max_lifetime to all rooms by default, so storage is limited without per-room action.Justify the default period and decide whether any rooms need a shorter or longer period.
Article 17(1), erasure groundsDeactivate the account with the admin API using erase: true, which marks the user as GDPR-erased.Assess each request against the six grounds, respond without undue delay and record the decision.
Article 17(2), notice to other controllersNone in Synapse. Erasure does not reach copies held by other homeservers or clients.Inform other controllers where you made the data public, using reasonable steps you document.
Per-room retention (m.room.retention)Experimental under MSC1763. Use it only after confirming how your Synapse version handles it.Confirm stability for your version and set room-level periods for rooms that need them.
State events and last messagesRetention does not apply to state events, and Synapse never deletes the last message in a room.Assess whether state data or the last message in a room needs separate handling.
Erased user messages in shared roomsMessages stay visible to users who were in the room when sent, but are hidden from users who join later.Explain this behavior in your privacy notice and decide if a stronger erasure approach is needed.

How Synapse message retention policies meet storage limitation

The retention decision starts with the Synapse setting, because Synapse can only enforce a period through its message retention policies. The stable option is a server-wide default policy with max_lifetime, which follows MSC1763. Per-room m.room.retention policies are experimental, so a team that relies on them should test their behavior on the Synapse version it runs and confirm the result in writing before using them for personal data. Without either policy, no message in a room is ever purged, so the platform team must treat a missing setting as an open compliance gap. Manage the policy as a configuration item with a named owner, a review date and a test on a staging homeserver before each change reaches production.

Expiry and deletion are separate steps, and the difference matters for erasure evidence. Once an event passes its limit, Synapse stops serving it to clients, but the event stays in the database until the next purge job runs. Set the purge interval deliberately, write it into the operations runbook, and check the database after a test run to confirm that rows for an expired test message are actually removed, not only hidden. Database backups are outside the purge job, so the backup retention period needs its own rule. Ask the platform team to record the purge interval, the backup retention period and who approves changes to either.

The policy also has scope limits that the reader must plan around. Synapse never deletes the last message in a room, so a quiet room can keep one old message past its period. State events are outside retention, so membership, room names, topics and power levels remain after the messages they relate to have expired. Membership events can carry display names and avatars, which are personal data. Map which state events contain personal data in your deployment, and ask the DPO whether those items need a separate justification or a different handling approach. Confirm each of these behaviors on your Synapse version with a test room before you describe them to data subjects or auditors.

The retention period is a decision for the DPO and the business owner of each room type, not for the platform team alone. Article 5(1)(e) of the GDPR limits storage of personal data to no longer than is necessary for the purpose of the processing. Article 25(2) requires that, by default, only the personal data necessary for each specific purpose is processed, including with respect to the period of storage. For each room type or message category, record the purpose, the chosen period, the legal basis for keeping data that long and the reason for the value. Review that record whenever the purpose changes. It becomes part of your evidence file, which independent assessors and supervisory authorities will examine.

Matrix GDPR erasure on account deactivation

The deactivate account admin API is the Synapse call that disables a user. When you set erase: true, Synapse also marks the account as GDPR-erased, which changes how the user's messages are shown afterwards. Treat the call as one technical action inside your erasure process, not as the whole process. Read the request format and the effect of erase: true in the user admin API documentation for the release you run before you write automation around it.

  • Target: the call is made against one specific user ID, so confirm the ID format your server uses before you script it.
  • erase: true: this flag is the setting that applies the GDPR-erased marking. Check what happens when the flag is omitted.
  • Message handling: erased users' messages remain in rooms and are shown according to the visibility rules in the next tab.
  • Credentials: confirm which admin token type the endpoint requires, and restrict who can hold it.
  • Records: log each request with the operator, timestamp and user ID so the action can be evidenced later.

Confirm the exact request and response behavior in the release you run before you put this call into a production workflow.

How federation and room history limit erasure

A retention purge or an erase flag only acts on the homeserver where it runs. In a federated room, each event is copied to every homeserver that has members in that room, so a purge on your Synapse server does not delete the copies held by remote servers. The erase flag set through the deactivate account admin API has a similar limit. Messages sent by an erased user stay visible to users who were in the room when they were sent and are hidden from users who join later. That behavior is correct for your server, but it says nothing about what a remote server keeps. Treat your local settings as the scope of your own control, and plan for the remote copies separately.

The main technical lever is federation_domain_whitelist. It restricts federation to the domains you list, so events are only exchanged with those servers, and an empty list disables federation entirely. The Synapse documentation also recommends firewalling the federation listener, which uses port 8448 by default. An alternative is to serve federation through delegation on port 443. Decide which approach fits your network, then confirm in a test environment that a server outside the list cannot fetch events or join your rooms. Record the result, because it is evidence that your configuration does what your policy says.

Article 17(2) of the GDPR adds a legal dimension. Where the controller has made personal data public, it must take reasonable steps, including technical measures, to inform other controllers processing that data that erasure of links, copies or replications has been requested. Whether messages in a private federated room count as made public is a question of fact and law, and the answer affects what your organization must do. Whether a remote homeserver operator is another controller for this purpose is also open. Ask counsel to set out how remote copies should be handled, what notice, if any, is expected, and what records you must keep when a request arrives.

The decision that matters most comes before any erasure request. Your organization should decide which remote servers it is willing to federate with, record that list and the reasons for it, and review it on a set schedule. Consider which rooms really need federation and which can stay local to your homeserver. Those choices determine how many remote copies can exist for personal data. Once a request arrives, you will have limited ability to change them. Confirm the list, the room design and the counsel guidance with your data protection officer, and make sure the people who handle requests know where the decisions are documented.

What evidence a Synapse retention and erasure setup produces

A Synapse retention and erasure setup produces six kinds of record, and each one shows a different decision: what the server is configured to keep, why, what was erased, and which release was running. Keep them together under one owner so an assessor can trace a single erasure request from the ticket to the configuration that applied at the time. These records support an assessor's review but do not make your organization compliant on their own.

Homeserver configuration under version control

The homeserver configuration file holds the retention settings, the federation settings and the server_name, and changes to any of them alter what the purge job removes and who can reach your server. Keep the file in a Git repository, require a second reviewer for changes to retention or federation settings, and tag the commit deployed to each environment. Limit write access to the platform team and confirm that secrets stay out of the repository. This record supports an assessor, but it does not make your organization compliant on its own.

Retention period record tied to a legal basis

This register maps each room category to its max_lifetime, the purpose of the processing, the legal basis relied on, the data owner and the next review date. It is the record that shows the retention period was chosen under the storage limitation principle in Article 5(1)(e) and the default-settings duty in Article 25(2). The data protection lead signs off each entry, and every change is versioned so an assessor can see what applied on a given date. Confirm the legal basis with your own counsel, since the register only records the decision.

Admin API logs for each erasure

Each erasure should leave a log entry showing the request ticket, the data subject reference, the timestamp, the deactivate call made with erase set to true, and the response from Synapse. Store these logs in a central log system with read access limited to privacy and operations staff, and keep them for the period set by your retention schedule. Record the known limit in the same file: erased messages stay visible to users who were in the room when they were sent. This record supports an assessor, but it does not make your organization compliant on its own.

Purge job logs

Purge job logs show when each run started, which policy it applied, whether it finished and which errors it raised. They matter because expired events can remain in the database until the next purge removes them, so the schedule and the outcome both need evidence. Confirm in your logging configuration that these entries are written and retained, set an alert for failed runs, and restrict access to operators. Review a sample of runs each quarter against the retention register, and record who reviewed them. This record supports an assessor, but it does not make your organization compliant on its own.

Synapse release and upgrade notes applied

Record the Synapse version in each environment, the date it was applied, the upgrade notes read before the change and any schema or platform changes they described. Synapse 1.143.0 and later require PostgreSQL 14 or newer, and 1.142.0 and later require Python 3.10 or newer, so the record should show that these floors were checked. The upgrade notes also warn that rolling back can be difficult because of database schema changes, so keep a tested backup reference with each entry. The change board signs off each upgrade. This record supports an assessor, but it does not make your organization compliant on its own.

Federation allow list with change history

The federation_domain_whitelist setting limits which remote servers can exchange events with your homeserver, and an empty list disables federation. Each change should record the domain added or removed, the reason, the approver, the date and the matching firewall change on the federation listener. Federation matters for erasure because remote servers keep copies of events they received, so this list is the main point where you control who holds your users' messages. The security owner approves changes, and the history stays under version control. This record supports an assessor, but it does not make your organization compliant on its own.

Where remote servers and cloud hosting create transfer questions

Whether a Synapse deployment involves a third-country transfer depends less on where the homeserver sits than on which servers receive the events. When a room includes users whose accounts live on servers in other countries, messages leave your infrastructure through federation and are delivered to those remote homeservers. Chapter V of the GDPR governs transfers of personal data to third countries, and Article 44 applies the same conditions to onward transfers, so what a remote server forwards onward is part of the analysis. The first task is to map which remote servers receive room traffic, and in which countries, before deciding whether any transfer mechanism is needed.

Hosting the homeserver in an EU data center does not settle the question. EDPB Guidelines 05/2021 (version 2.0) treat remote access from a third country as a transfer, even where data is only displayed on a screen for support or administration, and treat storage in a cloud outside the EEA as a transfer. The federation path and the hosting location are therefore separate questions, and each needs its own record. Confirm with counsel whether traffic to any remote server qualifies as a transfer, and whether operators or support staff located outside the EEA can open message content, including through administration consoles or screen sharing.

Where a cloud provider or support engineer needs access to message content in the clear, EDPB Recommendations 01/2020 (version 2.0) become relevant. Those recommendations state that where a provider needs access to data in the clear and the destination's public authority powers go beyond what is necessary and proportionate, the EDPB cannot envision an effective technical supplementary measure. For a homeserver, the database and media stores hold message content, so your team should document who can read those stores, from which countries, and who holds the encryption keys. Example 12 of the same guidelines states that an EU processor subject to third-country law with extraterritorial effect does not by that fact alone create a transfer. Complying with a third-country authority request would be one, so that exposure should be assessed before you engage such a processor.

The exposure is concrete for some providers. The US CLOUD Act provision at 18 U.S.C. 2713, added on 23 March 2018, requires electronic communication and remote computing service providers to preserve or disclose data in their possession, custody or control, regardless of whether that data is inside or outside the United States. Article 48 of the GDPR allows a third-country court judgment or administrative decision requiring disclosure to be recognized or enforced only where it rests on an international agreement in force with the Union or a Member State. Whether either point affects your provider depends on its corporate structure, contracts and sub-processors, which counsel should review before any contract is signed. Ask the provider for its written position on government access requests and how it notifies customers.

What Synapse does not cover for GDPR

Synapse retention and erasure settings act only on the homeserver you operate. The gaps below sit with remote servers, backups, devices, bridges, and the legal and organizational work that GDPR assigns to the controller, so each one needs a named owner before go-live.

Copies on remote federated servers

Erasing an account on your homeserver does not reach copies that other federated servers already stored when a message reached a room they share. Synapse marks the account as GDPR-erased and hides later joins from earlier messages, but remote servers set their own retention and sit outside your configuration. Where data was made public, Article 17(2) requires reasonable steps to inform other controllers, so the controller should decide how partners are notified. Owner: controller, with DeployOpen configuring the federation allowlist.

Backups and replicas

Purged events can remain in database backups, standby replicas and snapshots until those copies rotate out. Retention jobs clear the live database, and expired events may stay in storage until the next purge job runs. Confirm how long each backup generation is kept, whether a restore can bring back erased messages, and record that period in the processing documentation. Owner: controller sets the period, DeployOpen configures backup rotation and restore procedures.

Client devices and bridged networks

Synapse cannot delete messages already downloaded to a user's phone, desktop or browser cache. Bridges to Slack, WhatsApp, Telegram, Signal and email, which matrix.org lists, keep their own copies on the far side under that network's rules. Map which rooms are bridged, confirm each bridge operator's storage behavior in writing, and set device policies where your risk assessment requires them. Owner: controller and bridge operators, with DeployOpen configuring bridge placement and logging.

Retention period and lawful basis

Synapse accepts a maximum message lifetime, but the value is a legal decision. Article 5(1)(e) limits storage to what is necessary for the purpose, and Article 25(2) requires that by default only the data necessary for each purpose is processed, including for its storage period. The controller must also establish and document the lawful basis for each category of chat data. Owner: controller and DPO decide these values, and DeployOpen applies the settings that were approved.

Records and data subject requests

Synapse does not maintain a record of processing, so the controller must keep the Article 30 register covering chat data, its purposes, recipients and retention periods. Access and erasure requests also need a documented intake and a tested runbook, because the admin API acts on one account and does not locate every copy of that person's data. Owner: DPO and controller maintain the records and answer requests, and DeployOpen can document the admin steps.

Breach notification and audit evidence

Articles 33 and 34 require the controller to notify the supervisory authority and, where risk is high, the affected individuals, so the notification process must exist before an incident occurs. Retention and access logs help establish what was exposed. The GDPR requires no audit or certificate. Article 42 certification is voluntary, lasts at most three years, and does not shift responsibility from the controller. Owner: controller and DPO for notification, independent auditor or certification body for any assessment.

Configuring Synapse for retention and erasure in sequence

This sequence takes a Synapse homeserver from version checks to a documented retention and erasure process that has been tested on a copy and in a staging room. Each step closes with a check you can file as evidence. Complete the steps in order, because the federation and retention decisions shape the erasure runbook.

  1. Confirm the release and platform floors

    The platform lead confirms which Synapse release will run in production, using the Synapse releases page and the upgrade notes for that release. For Synapse 1.143.0 and later, the notes require PostgreSQL 14 or newer, and for 1.142.0 and later they require Python 3.10 or newer. Record the release, the database version and the Python version in the change record. The step is done when each version meets the floor for the chosen release and the record notes that PostgreSQL is the production database recommended in the Synapse documentation.

  2. Decide retention periods with the DPO

    The DPO and the business owners of each chat data category agree how long each category may be kept and why. Categories typically include ordinary room messages, uploaded media and account records. Matching each period to a documented purpose is what Article 5(1)(e) of the GDPR requires. Synapse applies one server-wide default policy to all rooms, and per-room retention policies are still experimental, so decide now whether any room needs a different period. Record the decisions with their legal basis. The step is done when the DPO signs the register and every category maps to one configured period.

  3. Set max lifetime and purge interval on a copy

    An engineer sets the server-wide default policy, including max_lifetime and the purge interval, in the retention section of the configuration file. The change is first made on a copy of the production configuration, connected to a restored copy of the database. Run the purge job and check which events disappear. Expired events stop being served to clients at once but can remain in the database until a purge removes them, so check stored data as well as the client view. Retention does not apply to state events, and Synapse never deletes the last message in a room, so the test must confirm both. The step is done when the test report matches the decision from the previous step.

  4. Decide the federation allow list

    Decide whether this homeserver federates at all. An empty federation_domain_whitelist disables federation, while a list limits it to named domains. Once a message reaches a remote server, your retention and erasure settings no longer control the copies held there, so this decision sets the limit of what you can promise data subjects. If federation stays on, firewall the federation listener as the configuration manual recommends, and confirm the port in use, since federation listens on port 8448 by default unless delegation is configured. The step is done when the setting and the firewall rule match the signed record, which names the owner who reviews the list.

  5. Write the erasure runbook

    The operations team writes a runbook that starts from a verified request, locates the account and calls the deactivate account admin API with erase set to true. The runbook states that after erasure, messages stay visible to people who were in the room when they were sent, and stay hidden from people who join later. It also names who receives requests, how each request is logged, and how the outcome reaches the data subject without undue delay under Article 17. Copies on remote servers are handled under the federation decision. The step is done when the DPO reviews the runbook and an administrator signs it.

  6. Test erasure in a staging room

    Create a test account and a staging room, have the test account post messages, and have a second test account post in the same room. Run the runbook against the first account, then create a third account that joins the room afterwards. Record what each account sees before erasure, after erasure and after the later join. The designed behavior is that earlier members still see the erased user's messages and later joiners do not. If the results differ, stop, correct the runbook and repeat the test before any production use. The step is done when the recorded views are filed with the runbook and the DPO accepts them as the documented behavior.

  7. Set log retention for admin actions

    Confirm where Synapse writes admin API calls and access logs in your environment, and set a retention period for them that the DPO agreed in the retention step. Logs of erasure requests can contain personal data, so they need their own period and restricted access. Confirm the default behavior and the retention options with the documentation for your logging stack, because the default is set outside Synapse. The step is done when a test erasure appears in the log store and the log retention setting is recorded alongside the retention register.

  8. Review the configuration after each upgrade

    Each Synapse upgrade repeats the release check, the retention test and the erasure test before the new version serves production traffic. Read every set of upgrade notes, since they warn that rolling back can be difficult because of database schema changes between releases. Take a database backup before the upgrade and plan a return to the previous release as a restore that needs its own test. Upstream also drops support for database and Python versions once they reach end of life, so check the platform floors again. The step is done when the signed review record is filed with the change record.

Questions buyers ask before hiring help with Matrix GDPR retention

How much does outside help with Matrix GDPR retention cost?

Cost follows the written scope, and the main drivers are the number of rooms and federated servers, the number of data categories that need different retention periods, and the identity and database setup already in place. Each driver adds design, configuration and test work. Upgrade cadence and the amount of evidence your assessor expects also move the total. Ask for the quote to separate one-time work (retention design, configuration, erasure procedure, test records) from recurring work (validating upgrades, refreshing evidence, and any retainer support you choose). The retention periods are your decision, so the quote should state who makes them and by when.

How long does a Matrix retention and erasure project take?

The timeline depends on scope and on whether your own team does the work. The same drivers apply: rooms and servers in scope, the number of retention categories, the identity provider and PostgreSQL setup, and how many upgrade cycles must be validated. An illustrative single-server homeserver with one retention category takes far less than a multi-server deployment with per-room policies, because each category needs a decision, a configuration and a test. Most delays come from waiting on decisions, not from the technical build. Ask for milestones tied to the decisions you must return, such as the retention schedule and sign-off on erasure behavior, and ask which tasks you would own if you do it internally.

What does our team need to provide for a Matrix GDPR project?

You need a named owner for data protection, usually a DPO or legal lead, who approves retention periods and the erasure approach. You also need administrator access to the homeserver, the PostgreSQL database, the identity provider and the hosting platform, plus a change window for configuration and upgrades. Retention decisions should be written down per data category, including the legal basis you rely on and how messages already stored will be handled. Expect to share existing policies, records of processing and an inventory of rooms and their purposes. Ask the quote to list each input, who provides it and the date it is due.

Can DeployOpen certify that our Matrix deployment is GDPR compliant?

No. DeployOpen does not issue certificates, attestations or audit reports, and the GDPR does not require a certificate. Certification under Article 42 is voluntary, is issued by accredited certification bodies or supervisory authorities for at most three years, and does not reduce the controller's responsibility for compliance. DeployOpen can configure retention and erasure settings, document the procedure, and prepare the evidence that an independent assessor or your supervisory authority may ask for. Article 5(1)(e) and Article 25(2) still apply to your own choices of retention periods. Ask any provider which independent assessor you would work with and what evidence the engagement produces.

Does Synapse retention delete messages in rooms hosted on other servers?

No. Synapse retention applies to events stored on your homeserver. Expired events stop being served to your clients and are removed by the next purge job, so they can remain in the database for a time. Retention does not apply to state events, and Synapse never deletes the last message in a room. Copies held by other homeservers that joined the same rooms stay under those operators' control. Erasure on account deactivation has the same limit: with erase set to true, messages remain visible to users who were in the room when they were sent. Document your position on federated copies, and confirm with counsel whether the steps in Article 17(2) apply to your data.

What breaks when we upgrade Synapse with retention enabled?

Upgrades are where retention behavior and database schema can drift apart. The Synapse upgrade notes warn that rolling back can be difficult because of schema changes between releases, so take a tested database backup before each step. Synapse 1.143.0 and later require PostgreSQL 14 or newer, and 1.142.0 and later require Python 3.10 or newer. Synapse drops support for Python and PostgreSQL versions once they reach upstream end of life. Read every set of upgrade notes between your current version and the target, rerun retention and erasure tests after each step, and confirm that purge jobs still run. Include upgrade cadence in the quote, because it is a recurring cost.

How much evidence should we collect for a GDPR assessor?

The depth of evidence depends on what your assessor or supervisory authority asks for and on how many data categories and rooms you run. Common items include the written retention schedule, the configuration as deployed, test records showing that purge and erasure behave as documented, logs from purge runs, and a record of the decisions made about federated copies that you cannot remove. The GDPR requires no audit or attestation, so ask your assessor for the list before scoping evidence. More categories and more rooms mean more test cases and more records. Confirm in the quote whether evidence is collected once or refreshed after each upgrade.

How DeployOpen scopes, configures and documents Matrix retention and erasure

DeployOpen treats Matrix retention and erasure as a design decision made before the homeserver goes live, not a switch flipped afterward. We map which rooms, users and data classes fall under your storage limits, configure Synapse retention and account erasure to match, and document what the software can and cannot erase, including what federation and room history leave behind. The work runs in infrastructure you control.

How we scope

  • Engagements are fixed-scope, with the retention and erasure requirements agreed in writing before work starts.
  • We inventory which rooms, users and data classes hold personal data and the purposes each one serves.
  • The scope states which federated domains and external bridges are in or out, since they affect what erasure can reach.

How we build

  • We configure the server-wide retention policy in Synapse and test that expired events stop being served to clients.
  • We define the account deactivation procedure with erase set, then verify what remains visible to users in affected rooms.
  • We confirm the purge job runs on schedule and that state events and last messages are handled as the documentation describes.

How we hand over

  • You receive a written retention and erasure design that maps each data class to its configured period and its erasure path.
  • The documentation records the known limits: federated copies, room history for members who joined earlier, and database rows awaiting purge.
  • Runbooks cover erasure requests, admin API use, and the checks an operator repeats after each Synapse upgrade.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers.
  • Retainer work can re-verify retention behavior after Synapse upgrades, since release notes can change database and configuration details.
  • Your compliance team can use the evidence and records we prepare, but auditors and certification bodies make any assessment decision.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.