Start form
Data subject request
Filled in by whoever starts the process
Operations & Compliance package
Handle access, erasure and other privacy requests: statutory deadline, identity check, search of CRM, billing and support, erasure, and a DPO-approved reply.
About this package
GDPR data subject requests takes a privacy request from receipt to response inside the statutory deadline. The privacy team (or your web form posting to the API) fills in the start form: who is asking, their email, the request type (access, erasure, rectification, portability, objection), the jurisdiction and the date it arrived.
The Statutory deadlines decision table sets the response deadline and whether it can be extended (one month under EU and UK GDPR, 45 days under CCPA, 15 days for a CCPA opt-out) and the run gets an SLA to match. The request is added to the DSAR register and nothing is searched until the privacy team has verified the requester's identity; they can ask for more information or reject the request. Once verified, the CRM, billing system and support desk are searched by email, and for erasure requests an erasure is requested in each system, with any records kept by law listed.
The DPO reviews a drafted response with everything found, edits and approves it or sends it back, and the approved response is emailed to the requester and the register row closed. Adapt the deadline rules to your legal advice and the three system references to the systems that hold personal data.
Starts from a form: the privacy team fills in the request from the Run dialog, or your privacy web form posts it to the start API or an inbound webhook.
Someone fills in a form to start it: the workflow inputs are the start form (Run dialog in the app, or your own portal posting to the API), and people complete User Task forms along the way.
The flow
Request received
The start form records the requester, email, request type, jurisdiction, details and received date; the request gets a DSAR reference.
Set the statutory deadline
The Statutory deadlines decision table gives the deadline and extension rule; the run SLA and the DSAR register row use it.
Verify identity
The privacy officer confirms the requester is the data subject, asks for more information (emailed to the requester) or rejects the request.
Search the systems
The CRM, billing system and support desk are searched by email and the matches summarised.
Erase where asked
For erasure requests an erasure is requested in each system; records kept by law are listed in the response.
DPO approval
The DPO edits and approves the drafted response, or sends it back to the privacy officer to revise.
Respond and close
The approved response is emailed to the requester and the DSAR register row is closed.
Forms
The workflow inputs are the start form: the Run dialog renders them, and your own portal can post the same fields. User Tasks show their fields and outcome buttons to the assignee.
Start form
Filled in by whoever starts the process
User Task
Verify identity: {{requester_name}} ({{request_type}}, due {{due_date}})
User Task
Approve DSAR response {{reference}} ({{request_type}}, due {{due_date}})
User Task
Revise DSAR response {{reference}}
From your code
Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.
REST
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
-H "Authorization: Bearer $USERTASKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id":"<workflow id>","variables":{"requester_name":"Robin James","requester_email":"robin.james@example.com","request_type":"erasure","jurisdiction":"EU-GDPR","details":"Please delete all my data. I closed my account in September; my customer number was CUS-20417.","received_date":"2026-10-26"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input requester_name="Robin James" --input requester_email=robin.james@example.com --input request_type=erasure --input jurisdiction=EU-GDPR … --waitInbound webhook
usertasks webhooks create <workflow id> # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
-H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
-d '{"requester_name":"Robin James","requester_email":"robin.james@example.com","request_type":"erasure","jurisdiction":"EU-GDPR","details":"Please delete all my data. I closed my account in September; my customer number was CUS-20417.","received_date":"2026-10-26"}'What's included
| Type | Name | Details |
|---|---|---|
| Email template | DSAR identity check | Asks the requester for more information to confirm their identity. |
| Email template | DSAR not verified | Tells the requester the request cannot proceed because their identity could not be confirmed. |
| Email template | DSAR response | The final response to the requester, approved by the DPO. |
| Data table | DSAR register | Register of data subject requests: who asked, what for, the statutory deadline, systems searched and the outcome. Keep it as your record of processing for requests. |
| Integration | Billing system | |
| Integration | CRM | |
| Integration | Support desk | |
| API reference | Find billing customer | GET /customers — Billing accounts, invoices and payment methods held for the subject's email. |
| API reference | Find CRM subject | GET /subjects — Contacts and leads in the CRM that match the data subject's email. |
| API reference | Find support contact | GET /contacts — Support desk contact and ticket history for the subject's email. |
| API reference | Request billing erasure | POST /erasure-requests — Removes personal data from the billing account; invoices are kept for the statutory retention period with the name pseudonymised. |
| API reference | Request CRM erasure | POST /erasure-requests — Queues erasure (or anonymisation where records must be kept) of the subject in the CRM. |
| API reference | Request support erasure | POST /erasure-requests — Deletes the contact and redacts their tickets and attachments in the support desk. |
| Decision table | Statutory deadlines | 5 rules — Response deadline by jurisdiction and request type, whether it can be extended, and the legal basis to quote. First matching rule wins. Check these against your own legal advice. |
| Workflow | Data subject request | 34 steps — A data subject request from the privacy team or a web form: sets the statutory deadline, verifies identity, searches the CRM, billing and support systems, erases where asked, and sends a DPO-approved response. |
DSAR register · schema only
ReferenceRequesterEmailRequest typeJurisdictionReceivedDueStatusSystems with dataErasure referencesOutcomeClosed
Requirements
Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.
Integration “Billing system”Required
Integration “CRM”Required
Integration “Support desk”Required
Workflow “Data subject request” assigneesRequired
Install
Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.
curl -fLO https://usertasks.com/gallery/gdpr-dsar-handling-1.0.0.utpkg
usertasks packages inspect gdpr-dsar-handling-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install gdpr-dsar-handling-1.0.0.utpkg --dry-run
usertasks packages install gdpr-dsar-handling-1.0.0.utpkg # prompts for each requirement
usertasks packages install gdpr-dsar-handling-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete gdpr-dsar-handling -f values.yamlVerify the download
shasum -a 256 gdpr-dsar-handling-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.
Versions
Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work
More packages
Operations & Compliance
Monthly SOC 2 / ISO 27001 evidence run: automated controls are pulled from your systems, owners of manual controls are asked for a link, all logged for the auditor.
Needs:REST APIAssigneesEmail
Operations & Compliance
A daily check of your contract register: owners are reminded 60, 30 and 7 days before each notice deadline and asked to renew, renegotiate or terminate.
Needs:AssigneesEmail
Operations & Compliance
A monthly campaign: employees confirm they have read the policies due for them, with reminders, escalation to compliance and an audit trail of attestations.
Needs:Directory / HR systemREST APIAssigneesEmail