EspoCRM for GDPR data subject requests

A self-hosted EspoCRM can support how you answer GDPR access, erasure and portability requests, but backups, logs and your own process still need planning. This page maps each requirement to configuration and evidence.

On this page

How EspoCRM supports GDPR data subject requests

A team running customer data in a self-hosted EspoCRM has to answer access, erasure and portability requests within the GDPR's timelines, and the platform can support three of the relevant obligations: the copy of personal data under Article 15(3), erasure under Article 17(1) and the structured, machine-readable export under Article 20(1). The documented features help most with the mechanics: administrators mark personal data fields in the Entity Manager, and users with the Data Privacy permission can view and erase personal data on Accounts, Contacts, Leads and Person-type custom entities, as described in the EspoCRM data privacy docs. Whether those steps satisfy an obligation depends on configuration and process you own: which fields are marked, who holds the Data Privacy permission, how identity is verified before anyone acts, and whether the response reaches the requester in an acceptable form. The platform does not decide when erasure is lawful. Article 17(1) lists six grounds, and a legal obligation to keep certain records can override an erasure request, so the team needs a documented decision for each request. DeployOpen plans and configures these controls and prepares the evidence an assessor will ask for. It does not issue certifications or audit reports, and the GDPR requires none, so independent auditors and certification bodies remain responsible for any attestation.

The sections below set out the data mapping, the access and erasure workflow, and the parts of the stack outside the CRM. Start by listing every entity that holds personal data, including custom Person-type entities, attachments, email and the activity stream, because a request is only answered completely if each of those locations is covered. Decide in advance who receives requests, who may approve erasure and how the answer is delivered. Confirm with your legal team which retention duties apply to each record type before the first request arrives, since the platform will carry out an erase instruction exactly as configured.

Plan the boundaries of the request as well. Backups, logs and upgrade copies can hold personal data after a record is erased in the live instance, and the GDPR's obligations still apply to them. Article 32 names resilience, restoration and regular testing as security measures, so the backup and restore procedure should be tested with erasure in mind. Ask DeployOpen or your own engineers to document how long each copy persists, who can reach it and how a restored backup is re-checked against erased records. Finally, confirm the regulatory position of your hosting location with counsel, since EDPB Guidelines 05/2021 treat remote access from a third country as a transfer under Chapter V.

Mapping GDPR request rights to EspoCRM features and configuration

This table maps each GDPR request right to the EspoCRM capability that supports it and the decision that remains with the controller. Read it as a checklist of what the platform can do, what must be configured in advance, and where a lawyer or privacy lead has to decide the outcome.

Right or conditionWhat EspoCRM providesWhat the controller decides or confirms
Access copy (Article 15(3))Personal data on Accounts, Contacts, Leads and Person-type entities can be viewed and exported through the interface, CSV export and the REST API, subject to user permissionsConfirm which other entities, attachments, emails and logs hold the person's data, and assemble the copy from all of them in a commonly used electronic form
Erasure grounds (Article 17(1))Marked personal data fields can be erased with the erase action for users holding the Data Privacy permissionWhether one of the six grounds applies, and whether an exception such as a legal obligation to keep records applies, is a legal judgment, not a platform setting
Personal data field markingAdministrators flag personal data fields in the Entity Manager so the View Personal Data and erase actions know which fields to act onWhich fields count as personal data for each entity, including custom fields and free-text notes that may contain personal data
Data Privacy role permissionOnly roles granted the Data Privacy permission can view and erase personal data, so handling can be restricted to a privacy teamWho holds the role, and whether it is separated from general administrator accounts
Portability (Article 20(1))CSV export and the REST API return structured, machine-readable records for the data subjectPortability only applies where processing is based on consent or contract and carried out by automated means, so confirm the lawful basis for each dataset first
Erasure coverage limitsErase acts on the records and marked fields in EspoCRM only, not on copies elsewhereBackups, logs, mail archives, file storage and exports held outside the live database need their own retention and deletion decisions

Handling access, erasure and portability requests step by step

An access request asks what personal data you hold about the requester and for a copy of it. Article 15(3) of the GDPR requires the controller to provide a copy of the personal data undergoing processing, and where the request is electronic, the answer should be in a commonly used electronic form unless the person asks otherwise. In EspoCRM, locate the requester's Contact, Account, Lead or Person-type custom record, then use the View Personal Data action, which requires the Data Privacy permission on the user's role. Note that the action covers the entity types listed in the data privacy documentation, so check related records such as emails, notes and attachments by hand.

  • Find all records: search by email address, name and other identifiers, including duplicates and related Accounts.
  • Use the View Personal Data action: run it only from a user whose role carries the Data Privacy permission.
  • Check outside EspoCRM: mailboxes, exports, shared drives and backups may hold copies that the action does not show.
  • Record the request: log the receipt date, identity verification, records reviewed and the date the copy was sent.
  • Decide manually: whether any exemption applies and what must be withheld to protect other people's data.

Confirm the response deadline and any extension rules with your counsel, and confirm the current EspoCRM Data Privacy permission levels in your version before you write the procedure.

What EspoCRM evidence you can keep for a data request

A data subject request is only defensible if you can show what you received, what you searched, what you changed and when. In a self-hosted EspoCRM, that evidence is spread across configuration, permissions, consent records, exports and your own request log, so each piece needs an owner and a retention plan.

Marked field configuration

Export or screenshot the Entity Manager settings that show which fields are flagged as personal data on Accounts, Contacts, Leads and any Person-type custom entities. Keep a dated copy each time the field list changes, because an erasure can only be shown to be complete against the fields that were marked at the time. Ask the administrator to confirm that custom fields added later were reviewed as well.

Role permission snapshots

Record which roles hold the Data Privacy permission and who is assigned to them. Only users with that permission can view and erase personal data, so a dated export of role assignments answers the question of who was able to act on a request. Store the export outside the CRM so an administrator cannot quietly edit the record of their own access.

Double opt-in consent records

For leads captured through forms, keep the confirmation trail that shows consent was given, including the timestamp and the confirmation step. When a data subject asks what you hold about their consent, or withdraws it, this record ties the lead to the lawful basis you relied on. Confirm with your team exactly which fields store this evidence and whether they are included in exports.

Export files as response copies

Store each export produced for an access or portability request with its file name, generation date and the record IDs it covers. Article 15(3) expects a copy in a commonly used electronic form, and Article 20 expects a structured, machine-readable format for portability. Check that the export contains the related activity and attachments you hold, not only the core record.

Request log with a fixed owner

Keep a request register that records the requester identity check, the request date, the actions taken, the person who acted and the date each action was completed. Hold it in a separate system or a write-once store rather than in EspoCRM, since the CRM records being changed are the subject of the request. Link each entry to the audit and auth log exports for the same period.

Immutable storage and actor linkage

Tie every action to a named user account and a timestamp by using individual admin accounts, not shared logins, and by copying evidence to storage that users with CRM access cannot overwrite. Hash exported files and record the hash in the request log. Confirm your backup retention before relying on any copy, because backups and logs may still hold personal data after an erasure in the live system.

What backups, logs and mailboxes still hold after an erasure

Erasing a person's data in the live EspoCRM instance does not remove every copy. The erase action clears the personal data fields on the record, but database backups, upgrade backups, the audit log, the auth log, attachments, notifications and any mail archive kept outside EspoCRM can still hold the same values. Under Article 17 the controller must erase without undue delay, so the erasure process has to cover these stores too, or the team has to document why it cannot and what limits access to them in the meantime.

Start by listing every place the person's data may sit: the database and its scheduled backups, the upgrade backups that EspoCRM keeps when you upgrade, the stream and Audit Log entries, the auth log, uploaded attachments and their file storage, notifications, and the mailboxes that carry the email history. For each store, decide whether to purge the data, restrict access, or accept retention with a stated reason. Then compare those decisions against the cleanup periods for deleted records, attachments, notifications, logs and upgrade backups in your instance, and confirm each value in your own environment, because the defaults may delete evidence sooner or later than your policy expects.

Backups need a written rule. Restoring an old backup can bring erased records back into the live instance, so the procedure should say how a restore is followed by a re-run of the erasure for requests logged after the backup date. Confirm with your backup administrator how long backups are kept, whether individual records can be removed from them, and who approves a restore. Record the outcome in the request file so that an auditor or supervisory authority can see what was erased, what remained, and why.

What EspoCRM does not cover for GDPR compliance

EspoCRM can mark personal data, show and erase it, and export records, but it does not make the legal decisions behind a request. The cards below cover what stays with your organization, your processes and your infrastructure, and what to settle before the first request arrives.

Lawful basis and erasure grounds

EspoCRM does not decide whether processing has a lawful basis or which Article 17(1) ground applies to a request. Someone in your organization must record the basis for each data category and decide whether an erasure request is valid, partly valid or must be refused. The erase action only executes that decision. Check that consent records, contracts and legal holds are documented outside the system before anyone clicks erase.

Identity verification of requesters

The platform does not verify who is asking for access, portability or erasure. A request arriving by email may come from someone impersonating the data subject, and a wrong erase or export can cause harm of its own. Define how you confirm identity, what you ask for, and how you record that check. Agree this procedure with your legal and privacy team before go-live.

Request deadlines and case handling

EspoCRM has no built-in request queue with response deadlines, acknowledgments or extension tracking. You need a register of incoming requests, an owner for each, and a way to show when the response was sent. Decide whether that lives in a ticketing tool, a spreadsheet or a separate system, and confirm that the register itself is protected and retained appropriately.

Erasure in backups and logs

Erasing a record in the live CRM does not remove copies in backups, upgrade backups, attachments in file storage or audit history. Document which of these hold personal data, how long each is kept, and whether restoring an old backup could reintroduce erased records. Your backup policy and retention settings must match what you tell data subjects and what you can actually delete.

Processing outside the CRM

Personal data often also sits in mailboxes, spreadsheets, marketing tools, helpdesk systems and exports downloaded to laptops. An erasure inside EspoCRM will not reach those copies. Map every system that receives CRM data, including integrations and webhooks, and include them in your request procedure so each copy is found, exported or erased.

Transfer assessment for hosting and support

Self-hosting keeps data in your chosen infrastructure, but it does not settle transfer questions. Storage in a cloud region outside the EEA, or remote support sessions where a third-country engineer views data on screen, can count as transfers under EDPB Guidelines 05/2021. Assess where the servers, backups and support access sit, and which Chapter V mechanism covers each one.

Custom entities without Person type

The data privacy tools apply to Accounts, Contacts, Leads and Person-type custom entities. A custom entity that holds personal data but is not created as Person type will not show the View Personal Data or erase actions in the same way. Review every custom entity and field in the Entity Manager, mark personal data fields, and test a request against each entity before you rely on the process.

Configuring EspoCRM for request handling

This sequence sets up a self-hosted EspoCRM so that access, erasure and portability requests can be answered from a known set of personal data fields, a narrowly assigned role and a documented runbook. It ends with evidence that each step works on a non-production copy before anyone handles a live request.

  1. Inventory personal data fields across entities

    Start by listing every place your instance holds personal data: Accounts, Contacts, Leads, any Person-type custom entities, and the custom fields your teams added for phone numbers, addresses, dates of birth or identifiers. Record each field, the entity it sits on, the purpose it serves and whether it is needed at all. Assign an owner who signs off the list. The output is a written inventory that the admin team can check against the Entity Manager, and any field with no clear purpose is flagged for removal before you configure anything else.

  2. Mark personal data fields in Entity Manager

    In the Entity Manager, mark each inventoried field as personal data so that the View Personal Data and erase actions can find it. Work entity by entity, starting with Contacts and Leads, since these hold most requests. Check the marking on a sample record by opening the record and confirming the marked fields appear in the personal data view. Keep a change log of which fields you marked, by whom and on what date. The check is complete when every field on your inventory is marked or explicitly recorded as not personal data, and the sign-off is stored with the runbook.

  3. Create and assign the Data Privacy role narrowly

    Create a role that carries the Data Privacy permission and assign it only to the small group of staff who handle data subject requests, such as a privacy lead and one backup. Do not add it to general sales or support roles, and do not grant it to admin accounts used for daily work. Confirm in your own version how the permission scopes to each entity, since the documentation names Accounts, Contacts, Leads and Person-type custom entities. Test with a standard user account to confirm they cannot see or erase personal data. The output is a role assignment list that matches the access approval record.

  4. Enable and verify double opt-in on lead capture

    Turn on double opt-in for the lead capture forms that collect consent, then submit a test lead and confirm that the confirmation step runs and that the consent state is recorded on the lead before any marketing email goes out. Keep the test record and the confirmation message as evidence of how the form behaves. Confirm the exact configuration steps and where consent timestamps are stored in the version you run, because the feature detail may vary by release. The check is complete when a test submission shows the consent state change in the record and the evidence is saved.

  5. Set export and audit procedures

    Define how a portability or access response is produced: which role runs the export, which format is used for the copy, where the file is stored while it is reviewed, and how it is sent to the requester securely. Decide how each access and erase action is logged, and confirm which audit and action history records your version keeps and for how long. Do not assume default cleanup periods preserve evidence; check them against your retention policy. The output is a written procedure with each step assigned to a named role.

  6. Test access and erase on a non-production copy

    Restore a copy of the production instance to a separate environment and run a complete access and erase cycle on a test record that you created. Export the data, confirm the export contains the fields you expect, run the erase action, and check that marked fields are removed while records needed for legal or accounting reasons are handled as your policy directs. Then check whether the data remains in the backups and logs described in your runbook. Record each result. The check is complete when the test outcomes match the expected results in your procedure, and any gaps are fixed or documented.

  7. Document the request handling runbook

    Write a runbook that brings together the field inventory, the role list, the double opt-in evidence, the export and audit procedure and the test results. Include what the runbook says about backups, logs and copies that still hold personal data after an erase, and who decides how to answer requests in those cases. Ask your privacy counsel and your EspoCRM vendor or implementation partner to confirm each Data Privacy behavior against the version you run before the runbook is approved. The output is an approved runbook with a review date and a named owner.

Questions buyers ask before handling GDPR requests in EspoCRM

Is the open-source EspoCRM edition free to self-host?

Yes, the open-source edition can be downloaded and self-hosted for free, according to the EspoCRM pricing page. The software is licensed under AGPL-3.0, according to the license metadata of the espocrm/espocrm repository. The cost you carry is your own: servers or cloud accounts, the database, backups, TLS, staff time for configuration, and any partner work. The EspoCRM Cloud plans are a different product. Their published prices are 15 US dollars per user per month on Basic (minimum 3 users), 25 dollars on Enterprise (minimum 5 users) and 69 dollars on Ultimate (minimum 10 users), with the Advanced Pack included, according to the same pricing page. Confirm the current terms before budgeting, because the licensing and hosting model determines who controls the data and the backups.

What drives the effort of configuring GDPR request handling in EspoCRM?

The effort depends on how many entities hold personal data, how many fields are personal, and how many teams need access to the privacy tools. The main configuration steps are marking personal data fields in the Entity Manager, assigning the Data Privacy permission through roles, and testing the view and erase actions on each supported entity type. Effort rises when you use custom Person-type entities, when personal data sits in attachments, notes, email or related tables, or when you need a documented procedure for each request type. Effort falls when the data model is already clean and the privacy roles are narrow. Ask any partner to split the estimate into field mapping, role design, testing, and written procedures, so each part can be checked.

Can our own team handle GDPR requests in EspoCRM without a partner?

Often yes, if you have an administrator who can work in the Entity Manager and roles, and a privacy owner who understands the request types. The EspoCRM documentation describes the built-in tools, so your team can start from the official data privacy guide. A partner is more useful when the data model is complex, when integrations copy personal data into other systems, or when you need the setup tested and documented for an audit. Decide early who signs off on each request type, because the technical steps are the smaller part of the work. Check whether your administrators also have the skills to review logs, backups and access controls.

What do staff and legal need to provide for GDPR requests?

Staff need a clear intake route, identity verification steps, and a named owner for each request. Legal or the data protection officer should confirm the lawful basis for keeping each category of data, the exceptions that can apply to erasure, and the deadlines that Article 12 sets for responding. Under Article 17(1), erasure is required without undue delay in six listed situations, including when consent is withdrawn or data is no longer necessary. Under Article 15(3), a copy of the data must be provided, and electronic requests should normally be answered electronically unless the person asks otherwise. Under Article 20(1), portability covers data provided by the person where processing is based on consent or contract and is automated. Legal should also confirm how the team records each decision as evidence.

How should backups be handled when someone asks for erasure?

Erasing a record in the live EspoCRM instance does not remove it from existing backups, snapshots, replicas or exports. Ask your team to document how long backups are kept, who can restore them, and what happens if a restore brings back an erased record. Your procedure should say whether the record is re-erased after a restore, and how that step is logged. Also check the database logs, file storage and any attachments outside the database. Article 32 names resilience, timely restoration and regular testing as example security measures, so the restore process itself belongs in the design. Confirm the retention periods with your legal team before you configure them.

What does a partner need to scope a fixed-price GDPR setup?

A fixed-price engagement needs a written scope before work starts. Prepare an inventory of entities and fields that hold personal data, the list of integrations and where they copy records, and the hosting setup, including backup and log locations. Provide the request types you must support, the staff roles that will handle them, and the evidence your auditors expect. You should also state the EspoCRM version in use, the authentication method, and whether you need the Advanced Pack. Most engagements are fixed-scope, with scope, deliverables and timelines agreed in writing. DeployOpen does not publish a price list, so a quote follows from that written scope.

Does configuring EspoCRM make us compliant with the GDPR?

No. The GDPR requires no audit, attestation or certificate, and configuration alone does not establish compliance. EspoCRM can provide tools such as marking personal data fields and the View Personal Data and erase actions, but the controller remains responsible for the overall process. DeployOpen prepares systems, controls and evidence for compliance assessments but does not issue audit reports or certifications. Independent auditors and certification bodies do that work. Use the configuration as one part of a documented privacy program, and confirm the scope of the tools with the EspoCRM data privacy documentation before you rely on them.

How DeployOpen scopes and delivers GDPR request handling in EspoCRM

DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside your own infrastructure. For EspoCRM and data subject requests, we start from your written data inventory and request procedure, configure the CRM to match, and hand over the evidence your team needs to run access, erasure and portability requests on its own.

How we scope

  • Engagements are fixed-scope, with the systems, entities and request types agreed in writing before work starts.
  • The written scope lists which entities and custom Person-type records hold personal data and need field marking.
  • We confirm which backups, logs and exports fall within the request procedure and which need documented handling rules.
  • Quotes follow from the written scope, so ask for each item to be listed separately.

How we build

  • We mark personal data fields in the Entity Manager and check View Personal Data and erase behavior on each in-scope entity.
  • We design a Data Privacy role permission model so only named staff can view or erase personal data.
  • We configure double opt-in evidence and export steps, then test each request type against sample records in a non-production instance.
  • We document the test results and the open items for your privacy and security teams to review.

How we hand over

  • You receive a runbook covering intake, identity checks, search, access copies, erasure and portability exports in EspoCRM.
  • The handover documents what backups, audit logs and auth logs still hold after an erasure, and who decides on retention.
  • Your team runs a supervised walkthrough of one access request and one erasure request from start to finish.
  • Ownership of permissions, field markings and cleanup settings is recorded so changes stay under your control.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can cover re-checking field markings when your entities or custom fields change.
  • Support can include reviewing EspoCRM upgrades for effects on personal data handling before they reach production.
  • Your compliance advisers and auditors remain responsible for legal interpretation and any assessment outcome.

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.