PDPA Compliance Guide (Thailand)
opt-in — opt-in with cross-border transfer rules enforced. Use compliance: { type: 'opt-in' } in your ConsentiSetup config.Thailand's Personal Data Protection Act B.E. 2562 (PDPA) was enacted in 2019 and came into full enforcement on 1 June 2022. It is administered by the Personal Data Protection Committee (PDPC) under the Ministry of Digital Economy and Society. Consenti supports Thailand PDPA via regulation: 'pdpa-th'.
Official references
Key requirements
| Requirement | Detail |
|---|---|
| Compliance Group | Opt-in — explicit, informed, freely given |
| Sensitive data | Explicit consent required (race, ethnicity, political opinions, religious beliefs, sexual behaviour, criminal records, health data, disability, trade union membership, genetic/biometric data) |
| Minors | Under-10 requires parental consent; 10–20 requires at minimum assent |
| Withdrawal | Must not be more difficult than giving consent |
| Cross-border transfer | Destination country must have adequate protection or SCCs/BCRs in place |
| Data Protection Officer | Mandatory for large-scale or sensitive data processing |
| Enforcer | PDPC — Personal Data Protection Committee |
Enabling Thailand PDPA mode
Frontend widget
new ConsentiSetup({
compliance: { type: 'opt-in' },
})Profile configuration (dashboard)
{
"regulation": "pdpa-th"
}Unlike DPDPA (India, which has a dedicated dpdpa profile block rendered automatically), Thailand's PDPA has no dedicated metadata field yet. Add your Data Controller name and DPO contact directly in preferenceModal.htmlText via profileOverride or the dashboard's text editor.
Cross-border transfers
PDPA Section 28 restricts sending personal data to third countries without adequate protection. Consenti's backend stores data in SQLite (local) by default. If you use the MongoDB or PostgreSQL adapter with a foreign host, ensure your Data Processing Agreement covers PDPA cross-border transfer requirements.
What Consenti does — and what it doesn't
Everything above is the consent-collection UX layer: opt-in capture, per-category records, withdrawal, and erasure. Thailand's PDPA imposes obligations beyond what a consent widget can satisfy on its own. Consenti does not:
- Determine or execute the cross-border transfer legal basis (adequacy determination, SCCs, or BCRs) required by Section 28 — that's a legal/contractual step you complete outside the product
- Appoint a Data Protection Officer — mandatory for large-scale or sensitive-data processing under PDPA, and an organisational hire, not a config option
- Distinguish the two minor-consent tiers PDPA requires — parental consent under age 10 versus at-minimum assent for ages 10–20. Consenti's age gate is a single minimum-age/parental-consent threshold; the assent tier for 10–20 year-olds needs a manual process alongside it
- Guarantee data localisation — whether your storage adapter's host counts as an adequate-protection destination is a legal determination, not something the widget verifies
Operator checklist
Beyond configuring Consenti's opt-in consent group, an operator with PDPA exposure still needs to:
- Appoint a Data Protection Officer if your scale or data category triggers the mandatory threshold, and publish their contact alongside the Data Controller name mentioned above
- Confirm the cross-border transfer legal basis before enabling a MongoDB/PostgreSQL adapter hosted outside Thailand, or before sending data to any foreign processor
- Build a separate assent flow for the 10–20 age tier if you knowingly serve users in that range — the built-in age gate only distinguishes "requires parental consent" from "doesn't"
- Keep the cross-border and Data Controller disclosures in
preferenceModal.htmlTextcurrent as your actual vendor/processor list changes
Erasure
DELETE /consenti/api/v1/consent/:visitorIdFor the widget-side "Forget me" button and the events both sides fire, see the Right to Erasure guide.