Security & Privacy

GDPR Compliant Ticketing System: A Practical Guide

L
Lena Hartmann
··18 min read
Learn how to build a GDPR-compliant ticketing system with Chatwoot. Compare self-hosted, SaaS, and managed options. DPA requirements, data residency, compliance checklist included.
TL;DR
  • GDPR requires ticketing systems to support data deletion, access, retention policies, and encryption, with written data processing agreements with your processor.
  • Chatwoot is an open-source ticketing platform (37.4K GitHub stars, MIT License) that meets GDPR requirements if configured correctly, giving you full compliance control and data residency choice.
  • Self-hosting Chatwoot is cheap (EUR 20-50/month) but requires 10-20 hours of DevOps work monthly; SaaS is easy but locks you into the vendor's terms; Opsily's managed Chatwoot (starting EUR 49/month) removes DevOps burden while preserving open-source compliance benefits.

Building a GDPR-compliant ticketing system requires more than picking a tool that checks a box. You need infrastructure that gives you control over customer data, clear data processing agreements, and the discipline to configure retention policies and access controls correctly. This guide walks you through what GDPR actually demands from your ticketing system, how open-source solutions like Chatwoot stack up against SaaS alternatives, and why managed hosting can remove the DevOps burden while preserving compliance control.

What is GDPR and Why It Matters for Ticketing Systems

GDPR (General Data Protection Regulation) is EU law that governs how organizations collect, store, use, and delete personal data. It applies to any company processing data from EU residents, regardless of where your business is based. Ticketing systems are high-risk data processors because they store customer names, email addresses, support conversation histories, and sometimes payment or identity information. A breach, misconfiguration, or failure to honor deletion requests can cost you fines up to 4% of global revenue or EUR 20 million, whichever is larger.

The regulation operates on a few core principles. Data minimization means you collect only what you need. Purpose limitation means you use data only for the stated purpose (support in this case), not for marketing or analytics without explicit consent. Transparency means customers have the right to know what you're collecting and why. And accountability means you can prove you're complying: retention policies, access logs, processor agreements, and deletion capabilities all matter.

For a ticketing system specifically, GDPR creates operational friction. You cannot keep old support tickets forever. You must let customers download their conversations. You cannot share data with third-party tools unless you have a data processing agreement. You cannot move EU data to servers outside the EU without safeguards. None of this is hard, but it requires intentional architecture and governance.

Core GDPR Requirements Every Ticketing System Must Meet

Right to Access and Data Portability

Customers must be able to request a copy of all data you hold about them. Your ticketing system must support exports of conversations, attachments, and customer profiles in a portable format (CSV, JSON, or similar). This sounds straightforward but trips up many SaaS tools because they store data in proprietary formats or scatter it across multiple systems. Open-source solutions like Chatwoot give you direct database access, meaning you can export any subset of data on demand. With SaaS providers, you depend on their export functionality, which may be slow, incomplete, or locked behind a support ticket.

Data portability is also a hedge against vendor lock-in. If your current tool fails compliance requirements later, or raises prices, or sunsets features you rely on, the ability to export all customer conversations and agent notes means you can migrate without losing institutional knowledge.

Right to Erasure (Right to Be Forgotten)

Customers can request deletion of their data. Your system must be able to delete a specific customer's record, their conversation history, and any attachments they uploaded, within 30 days. This is not the same as anonymization or archiving. It is permanent deletion. If you cannot do this at the database level, GDPR considers you non-compliant. Many SaaS tools offer "soft delete" (marking data as deleted in the UI but keeping it in backups forever), which does not satisfy the requirement. Self-hosted solutions give you full control: Chatwoot supports customer deletion APIs, and you can configure backup retention policies to match your deletion obligations.

Secure Infrastructure and Encryption

You must protect data in transit and at rest. This means HTTPS for all connections (modern standard), encryption of sensitive fields (passwords, PII), and encrypted backups. If your data is breached, the attacker should not be able to read customer conversations without decryption keys. SaaS providers typically handle this, but their security posture varies. Self-hosted solutions require you to manage encryption configurations, firewall rules, and backups yourself. Opsily's managed Chatwoot hosting handles encryption and hardening, removing that burden.

Data Residency and Transfer Controls

EU data protection law is cautious about moving personal data outside the EU. You can do it if you have a valid legal framework (like Standard Contractual Clauses or adequacy decisions), but EU-based storage is simpler and avoids the transfer paperwork. Many SaaS platforms (Zendesk, Freshdesk) store EU data in EU data centers, which satisfies residency requirements. Open-source Chatwoot runs wherever you host it, so you can run it in an EU data center and guarantee data never leaves Europe. Opsily's EU-based infrastructure lets you choose this without managing servers yourself.

Data Processing Agreements (DPAs)

If you use a third-party tool to process customer data on your behalf, GDPR requires a written Data Processing Agreement defining roles, security measures, and data handling rules. This is not optional. SaaS providers should provide a template DPA or Data Addendum, but they sometimes push back on customization. Open-source Chatwoot is software you run yourself, so the vendor (Chatwoot's maintainers) is not a data processor. But if you use Chatwoot on Opsily's managed hosting, Opsily is your processor, and you need a DPA with them. The benefit: a managed vendor dedicated to compliance is often easier to negotiate with than a massive SaaS platform.

Audit Logging and Access Controls

You must log who accessed what data and when. This serves two purposes: compliance (proving you track access) and security (detecting unauthorized activity). Chatwoot includes audit trails by default. You can see which agent opened which ticket, when they opened it, and what changes they made. Role-based access control (RBAC) lets you restrict junior staff to their assigned tickets only, preventing broad access to sensitive conversations. SaaS tools vary: some offer basic RBAC; others charge extra for audit logs.

Subprocessor Transparency

If your ticketing system integrates with other tools (Slack, CRM, analytics), those integrations may pass data to third parties. GDPR requires you to know who those third parties are and have agreements with them. Open-source Chatwoot lets you audit every integration and control exactly what data flows where. SaaS tools sometimes integrate with partners automatically, and customers discover later that data flows to unexpected places.

How Chatwoot Meets GDPR Compliance Requirements

Chatwoot is an open-source customer support platform built on Rails and React. It has 37.4K GitHub stars, 9.1K forks, and 6,891 commits, indicating a mature and actively maintained project under the MIT License. The open-source architecture is the foundation of its compliance advantage. You own the code, can audit it, and control exactly how data is stored and processed.

Chatwoot's feature set directly addresses GDPR requirements. It supports customer deletion via API: request a deletion, and Chatwoot purges the customer record and all associated conversations from the database. You can configure data retention policies to automatically delete old conversations after a set period (e.g., 90 days). Conversations and attachments can be exported in standard formats. RBAC lets you restrict agents to specific conversation queues or ticket types, preventing broad data access.

However, Chatwoot's compliance depends on how you configure it. Running Chatwoot on a server in the US data center means EU data leaves the EU, triggering transfer compliance obligations. Not configuring retention policies means old tickets accumulate indefinitely. Not restricting agent permissions means every staff member can see every customer conversation. Chatwoot provides the tools, but you must use them correctly. This is why managed hosting matters: Opsily configures these settings as defaults and manages backups, updates, and security patches so compliance does not slip.

Chatwoot also integrates with common business tools (Gmail, Slack, Webhooks), and you control every integration. Unlike SaaS platforms that auto-integrate with marketing tools and analytics, Chatwoot only sends data where you explicitly configure it. This transparency makes subprocessor management simpler.

Self-Hosted Chatwoot vs. Managed SaaS vs. Opsily's Managed Chatwoot

You have three paths to a GDPR-compliant ticketing system. Each trades off control, complexity, and cost.

Self-Hosted DIY Chatwoot: You rent a cloud server (AWS, Linode, Hetzner) and deploy Chatwoot yourself. You own the infrastructure, the data residency choice, and the configuration. You also own the complexity: provisioning servers, managing SSL certificates, patching security updates, backing up databases, monitoring uptime, and troubleshooting outages. If something breaks at 2 AM on a Sunday, you fix it. For a small team, this often costs EUR 20-50 per month in server fees plus 10-20 hours per month of DevOps work (either your time or a contractor). You must negotiate a Data Processing Agreement with your hosting provider (the cloud company), not with Chatwoot itself. The compliance burden is yours: if you misconfigure encryption or retention policies, the regulator holds you accountable.

SaaS (Zendesk, Freshdesk, Helpscout): You pay a per-user or per-ticket fee, and the vendor manages everything. Support is professional, uptime is reliable, and features are battle-tested. You give up data residency control: Freshdesk keeps data in US data centers by default (though EU plans exist at higher cost). Your DPA is with the SaaS vendor, and their terms are non-negotiable. You cannot audit the code or control integrations as granularly. For teams of 5-10 agents, SaaS typically costs EUR 200-800 per month, which is higher than self-hosting but includes dedicated support and compliance staffing on the vendor side. Many companies find this simplicity worth the premium.

Opsily's Managed Chatwoot: Opsily provisions and manages Chatwoot on your behalf, hosted in EU data centers. You get the open-source transparency and compliance control of self-hosted Chatwoot without the DevOps burden. Opsily handles updates, security patches, backups, encryption, and monitoring. You control the configuration: retention policies, agent permissions, integrations, data access. Pricing starts at EUR 49 per month for small deployments (up to 3 agents), scaling with usage. A DPA with Opsily replaces the DIY complexity of negotiating with cloud hosting providers. For teams of 5-20 people, Opsily typically costs EUR 100-300 per month, undercutting SaaS while preserving open-source compliance control.

Here is a simple comparison:

FactorDIY Self-HostedSaaS (Zendesk)Opsily Managed
Data Residency ControlFullLimitedFull (EU default)
Code TransparencyFullNoneFull (open-source)
DevOps BurdenHighNoneNone
Monthly Cost (5 agents)EUR 30-80EUR 400-600EUR 150-200
DPA ComplexityHigh (multi-vendor)Standard (one vendor)Standard (one vendor)
Compliance ResponsibilityFully yoursShared with vendorShared with Opsily
Time to Setup1-2 weeks1-2 days1-2 days
SupportCommunity/contractor24/7 vendorOpsily support + community

For small teams (5-10 people) where GDPR compliance is a real concern, managed Chatwoot balances cost and complexity better than either extreme. You get SaaS-like ease with open-source transparency.

Step-by-Step GDPR Compliance Checklist for Chatwoot

If you are running Chatwoot yourself (DIY or with Opsily), use this checklist to verify compliance before going live.

Data Processing Agreement: Sign a DPA with your hosting provider or managed service (Opsily). The DPA should define roles (you are the controller, they are the processor), outline security measures, specify data deletion rights, and allow audits. This is a legal document; your legal team should review it. If you are running on a cloud provider directly, you need DPAs with both the cloud provider and any managed services on top.

Data Minimization Configuration: Review your Chatwoot form fields. Do you need to collect phone numbers, company name, or customer IDs? If not, remove the fields. Every field you collect is data you are responsible for protecting and deleting. Disable optional fields that are not core to support.

Retention and Deletion Policies: Configure automated deletion in Chatwoot. Set a retention period (e.g., delete conversations older than 12 months automatically). Test the deletion workflow by requesting deletion of a test customer and verifying it works end-to-end, including backups. Document your retention policy in your privacy notice so customers know how long you keep their data.

Backup Retention: Your backups must match your deletion obligations. If you promise to delete customer data in 30 days, but your backups are kept for 1 year, you are not compliant. Configure backup retention to align with your data deletion policy. For Opsily-managed Chatwoot, clarify backup retention with Opsily's support before signing up.

Access Control and RBAC: Restrict agent permissions. Junior support staff should see only their assigned tickets, not all customer conversations. Admin staff should have limited access to sensitive settings. Use Chatwoot's role system to enforce least-privilege access. Document who has admin access and audit it monthly.

Encryption Configuration: Verify HTTPS is enforced for all connections. Check that sensitive fields (agent API tokens, webhook keys) are stored encrypted in the database, not plaintext. If you are self-hosting, enable SSL certificates (use Let's Encrypt for free). Opsily manages SSL by default.

Audit Logging: Enable and review Chatwoot's audit trails. Confirm you can see when agents access tickets, when conversations are deleted, and when settings change. Export audit logs regularly and retain them for at least 2 years (audit trail retention often exceeds conversation retention).

Third-Party Integrations: List every tool connected to Chatwoot (Slack, CRM, webhooks). Verify you have a DPA with each tool. If Slack receives a copy of support conversations, Slack is a subprocessor, and you must disclose this to customers. Turn off integrations you do not actively use to reduce data flow and compliance complexity.

Data Subject Rights: Create a process to handle deletion, access, and portability requests. If a customer emails and asks for their data, you should be able to export it within 5 business days. If they ask for deletion, you should be able to execute it within 30 days. Document this process in your privacy policy and train your team.

Common GDPR Mistakes in Ticketing Systems

Compliance slip-ups are preventable. Here are the most common mistakes:

Collecting Unnecessary Data: Teams often collect company name, phone number, or customer ID "just in case," but never use it. Every field is a liability. Collect only what you need to solve the support issue. If you do not need a phone number to resolve tickets, do not ask for it.

No DPA or Outdated DPA: Many small teams skip the DPA step, treating it as a box to check later. By the time a regulator or auditor asks, it is too late. Get a DPA signed before you go live, not after.

Infinite Backup Retention: Backups are essential for business continuity, but infinite retention breaks GDPR. If you back up every day for 2 years, and a customer requests deletion on day 1, their data still exists in 700+ backup copies. Align backup retention with your data retention policy: if conversations are deleted after 90 days, backups older than 90 days should not contain new conversation data.

Granting Broad Agent Access: Newer support staff often get "view all tickets" access for training. This is the worst practice. Each agent should see only the tickets assigned to them. If you need to train someone, assign them specific tickets or use a staging environment, not production data access.

Forgetting About Integrations: You integrate Chatwoot with Slack to notify the team of new tickets. Slack is now a subprocessor processing EU customer data. You need a DPA with Slack and disclosure in your privacy policy. Many teams forget this step because the integration is automatic.

Not Documenting Retention Policies: GDPR requires that you have a documented reason for keeping data as long as you do. "We keep conversations for 2 years" needs justification: legal liability? Business continuity? If you cannot justify it, reduce the retention period.

Why EU Data Residency Matters (And When It Does Not)

GDPR does not explicitly ban moving EU data outside the EU. It bans transfers without safeguards. If you have a Standard Contractual Clause (SCC) or an adequacy decision with your hosting provider, you can legally transfer data to servers in the US, Switzerland, or other countries. The legal framework exists.

However, GDPR transfers are expensive in practice. You must document the transfer, assess the privacy laws of the destination country (US laws allow government surveillance; this is a real compliance risk), and ensure the SCC is valid (some companies' SCCs have been challenged in court). EU-only hosting sidesteps this complexity entirely. If your data never leaves the EU, there is no transfer, no SCC needed, and no legal uncertainty. For a small business with limited legal budget, EU hosting is simpler.

When does data residency not matter? If you are processing data from countries outside the EU (US customers, UK customers post-Brexit, etc.), EU residency is irrelevant to GDPR because GDPR does not apply to non-EU data. You can host in the US. But if even one EU resident sends you a support ticket, all their data must follow GDPR rules, and EU residency removes compliance friction.

Opsily's infrastructure is located in EU data centers, ensuring EU data stays in Europe by default. This is a built-in compliance advantage compared to SaaS platforms where EU data centers are an opt-in extra feature.

Getting Started: Chatwoot on Opsily

If you have decided that managed open-source Chatwoot is the right fit, here is how to move forward.

Opsily handles the infrastructure so you can focus on configuration. You get a managed Chatwoot instance hosted in EU data centers, with automatic updates, backups, SSL certificates, and monitoring. Pricing starts at EUR 49 per month for small teams (up to 3 agents), with discounts for annual commitment. You sign a DPA confirming Opsily's role as a data processor and your role as a controller. Within 1-2 days, your Chatwoot instance is live and ready to configure.

After deployment, you configure your ticketing system following the compliance checklist above. Set retention policies, configure RBAC for your agents, integrate only necessary tools, and test deletion workflows. Opsily provides documentation and support to guide you through configuration. The entire process from sign-up to live support system typically takes 1-2 weeks, including compliance review.

Unlike SaaS platforms, Chatwoot is yours to customize. If you need a custom integration or workflow, you can fork the open-source code or contribute back to the community. This flexibility is valuable as your support process evolves. You are not locked into the vendor's product roadmap.

Start by visiting Chatwoot as a Service: Managed Hosting to explore pricing and features. For a deeper comparison with other ticketing systems, check out GDPR-Compliant Helpdesk Alternatives. If you want to learn more about the managed vs. self-hosted tradeoff, read Managed Chatwoot: True Cost vs. Self-Hosting.

Frequently Asked Questions

Does a ticketing system by itself make us GDPR compliant?

No. A compliant ticketing system is necessary but not sufficient. You also need a documented data processing policy, retention and deletion procedures, a DPA with your processor, and a process for handling data subject rights. The tool is one part of a larger compliance framework.

Do we need EU-only hosting to comply with GDPR?

No, not legally. If you have valid transfer agreements (SCCs) with your hosting provider, you can store data in the US. But EU hosting is simpler: it eliminates transfer documentation, eliminates foreign-government-access risk, and avoids legal ambiguity. For small teams, EU hosting is the pragmatic choice.

Is open-source more GDPR-friendly than SaaS?

It depends on implementation. Open-source gives you code transparency and control over configuration, which is helpful. But it also puts compliance responsibility on you. If you misconfigure it, you are liable. SaaS vendors have compliance teams and legal resources, which is helpful if your business cannot afford a compliance specialist. The best choice depends on your team's capacity.

What is the cost difference between self-hosting Chatwoot and using Opsily?

DIY self-hosting on a cloud server costs EUR 20-50 per month in infrastructure plus 10-20 hours of DevOps work per month (your time or a contractor's). Opsily's managed hosting starts at EUR 49 per month with no DevOps burden. For small teams, Opsily is cheaper once you factor in your time. For teams with existing DevOps staff, DIY is cheaper in pure monthly fees, but less flexible for support.

Can we export all our customer data if we switch ticketing systems?

With Chatwoot, yes. You can export conversations, customer profiles, and attachments as JSON or CSV. With many SaaS platforms, exports are slower or incomplete. If you are concerned about vendor lock-in, open-source gives you peace of mind.

What happens if a customer requests deletion of their data?

You have 30 days to comply. With Chatwoot, you can initiate deletion immediately and purge their record from the database within hours. Your backups should also expire within 30 days so the deletion is permanent. With some SaaS tools, deletion is slow or incomplete (soft delete).

Do we need to process all our compliance manually or does the system help?

Chatwoot automates some tasks (deletion APIs, retention policies, RBAC, audit logging) but requires human governance (documenting retention policy, configuring integrations, training staff). A managed service like Opsily handles infrastructure and updates, so you can focus on governance rather than DevOps.

The Bottom Line

GDPR-compliant ticketing is achievable but requires intentional design. You must collect minimal data, delete it on schedule, control who accesses it, and have legal agreements in place. Open-source Chatwoot gives you the transparency and control to meet these requirements, but it demands discipline in configuration. SaaS platforms are easier to operate but lock you into their terms and often compromise data residency.

Managed Chatwoot on Opsily splits the difference: you get open-source compliance benefits without the DevOps headache, hosted in EU data centers by default. For teams of 5-20 people where GDPR is a real compliance concern, managed open-source is the practical choice. Explore Chatwoot as a Service to see how Opsily can get you compliant and live within weeks.

GDPR-ready Chatwoot in minutes
Managed Chatwoot hosted in EU data centers with DPA included, so you skip the DevOps.
Get Started Free

Ready to self-host your own apps?

One server. Multiple apps. No per-app fees.

Get started →