Step 3 of 3 · Data Subject Requests

Decide what to automate.

Calibrate after you have seen real volume, then wire Superset into your own systems.

Open ai.trustsuperset.com/dsars/automation.

You'll see one card per DSR right, each marked Enabled or Disabled. Turning a right on means Superset will execute qualifying requests of that type automatically once they've been submitted and processed. Turning it off means those requests still flow into your queue (covered in DSR Manager), where your team picks them up and acts on them.

The Automation page: one card per DSR right, each marked Enabled or Disabled.

What to turn on first

Across Superset's customer base, two right types account for the large majority of inbound DSR volume: Erasure and Opt-out of Sales. The practical answer on day one looks like this:

  1. Turn on Right to Erasure. Highest-volume right across most customers. Turning this on from the start is bound to make a big impact.
  2. Turn on Right to Opt-out of Data Sales. Second-highest volume, especially if you share consumer data with third parties. Authorized-agent services (like Atlas Privacy) send these in waves, so automating them keeps your queue from filling up overnight.
  3. For the rest, decide as you go. Portability, ADMT, Restriction, Rectification, and Limit Sensitive PI usually arrive in smaller numbers and vary by business model. Handle the first few manually to spot edge cases, then flip the toggle. If you know one will be high-volume for you from day one, turn it on now.

You can flip any of these any time. Your Dashboard will show you the actual mix for your traffic after the first few weeks; if a "lesser" right type starts showing up at meaningful volume for you, flip its toggle then.

How a right's automation works

Click any right's card to open its configuration. Each right is set up as a short flow: a data subject submits a request, then Superset runs the steps you've turned on, in order.

The Right to Erasure automation: User submits request, then an API Call step, then a Send confirmation email step.
A right's automation, top to bottom: the request comes in, Superset calls your endpoint, then sends the confirmation email on a 2xx success response.
  1. Enable automation for this right. The master toggle at the top. When it's off, nothing below runs and the request waits in your queue.
  2. API Call. Turn this on to have Superset call one of your own endpoints when a qualifying request comes in. You set the Request Type (GET, POST, PUT, DELETE, or PATCH), the URL, the Headers (raw JSON, e.g. an Authorization bearer token), and the Body (raw JSON). This is how Superset tells your systems to actually carry out the deletion, opt-out, or other action on your side. You can drop request data into the URL, headers, and body with variables (see below).
  3. Send confirmation email. Turn this on to email the requester once the API call succeeds. It's triggered by 2xx (success) response codes from your endpoint, so the data subject only hears "done" once your systems confirm it. You set the Reply-To, the To address (the submitter's email or the data subject's email), the Subject, and the Email Body. Whichever To setting you choose, the email goes to that one address only: if the original request was emailed to several companies at once, Superset never replies to or CCs the other recipients. Reply-To, Subject, and Email Body support request variables. Email steps also provide {{right_name}} and {{data_subject_name}}, which aren't available in API calls.

Who gets auto-executed

The gear icon at the top right of a right's page opens Configure Automation. Even when a right's automation is on, Superset checks two requester-specific toggles before it executes:

  • Authorized agents. Auto-execute for requests that come in through authorized-agent services.
  • Data subjects. Auto-execute for requests that come straight from the individual.

Leave both on for true hands-off processing. If you'd rather review one source manually at first, turn that one off and those requests will wait in your queue instead.

The Configure Automation modal, with Authorized agents and Data subjects auto-execute toggles.
The gear opens Configure Automation: scope auto-execution to authorized agents, data subjects, or both.
Don't leave automation half-on The most common reason a queue quietly backs up: automation is enabled, but the requests that need a follow-up never get one. Turn on Auto-Reply on the Privacy Inbox so requests missing required fields get chased automatically, and turn on the right's auto-execute toggles above so qualifying requests actually run. With those off, "needs info" and "submitted" requests pile up untouched and your response-time clock keeps ticking. If you're not sure what's on, open each right and the inbox settings and check.

Using variables in your automations

You can insert request data into an automation with a variable: wrap the field name in double curly braces, like {{primary_email}}. When a request runs, Superset replaces the variable with that request's value. Use them in the API call URL, headers, and body, and in the confirmation email subject, body, and reply-to.

So an API call body like this:

{
  "email": "{{primary_email}}",
  "request": "{{request_type}}",
  "received": "{{created_at}}"
}

goes out to your endpoint with the real values filled in, for example "email": "[email protected]". The same works in a confirmation email: "Hi {{first_name}}, we've completed your {{request_type}} request."

Tip You don't have to memorize the list. Type {{ in the URL, Headers, Body, or an email field and Superset pops up the full menu of variables, grouped and labelled, to pick from.
Renamed in this release These variable names are new. {{email}} is now {{primary_email}}, {{address_1}} is now {{primary_address_1}}, and so on. Nothing you have configured needs to change — we updated every saved automation template for you. See the release note for the full before/after list and the one behavior change to know about.

One data subject, several identities

A data subject can present more than one identity: several email addresses, several phone numbers, a current home and a previous one. So the variables come in pairs — a primary_* scalar holding the single best value, and an all-inclusive plural array holding everything Superset has for that request.

The plural always leads with the primary. {{emails}} starts with the address {{primary_email}} gives you, {{phones}} starts with {{primary_phone}}, and {{addresses}} starts with the current address. Reach for the scalar when your system takes one identifier at a time, and for the array when it can act on all of them at once.

Variable reference

These are the variables available in DSAR automation steps, in the two groups the in-app menu uses. The Type column tells you whether the value lands as a JSON string, array, or object — which matters when you're writing a body (see Arrays and objects in a JSON body).

VariableTypeWhat it is
Data Subject
{{first_name}}stringFirst name.
{{middle_name}}stringMiddle name.
{{last_name}}stringLast name.
{{full_name}}stringFull name, derived from first + last.
{{primary_email}}stringThe data subject's email address — the same value as the first entry of {{emails}}.
{{emails}}arrayEvery email address held for the request, primary first.
{{business_email}}stringEmail at a non-personal domain, when present.
{{primary_phone}}stringThe data subject's phone number — the same value as the first entry of {{phones}}.
{{phones}}arrayEvery phone number held for the request, primary first.
{{primary_address_1}}stringStreet address line 1, e.g. "123 Main St".
{{primary_address_2}}stringStreet address line 2, e.g. "Ste 120".
{{primary_city}}stringCity.
{{primary_state}}stringState, abbreviation or full name.
{{primary_region}}stringState, province, or region.
{{primary_zip_code}}stringZIP / postal code.
{{primary_postal_code}}stringPostal code, for addresses outside the US.
{{primary_country}}stringCountry.
{{primary_address}}objectThe eight components above as one object — the same value as the first entry of {{addresses}}.
{{addresses}}array of objectEvery address held for the request, current first.
{{maids}}arrayMobile advertising IDs (Apple IDFA, Google GAID/AAID).
{{date_of_birth}}stringDate of birth, as YYYY-MM-DD.
{{linkedin_url}}stringLinkedIn profile URL (contains linkedin.com/in/).
{{ip_address}}stringRequester IP. Populated for GPC and webform origins.
{{request_type}}stringThe right being exercised: erasure, rectification, restriction, portability, automated, optout, sensitive.
{{requester_type}}stringWho filed it: individual or authorized_agent.
{{applicable_law}}stringGoverning law, e.g. GDPR, CCPA, CPRA, LGPD, VCDPA, CPA, CTDPA.
{{authorized_agent_name}}stringName or company of the authorized agent, when a request comes through one.
Metadata
{{created_at}}stringWhen the request was received. ISO 8601 datetime, e.g. 2026-05-04T10:30:00Z.
{{status}}stringOne of: submitted, processing, unverified, error, completed.
{{origin}}stringHow the request arrived: API, webform, email, gpc, or drop.
{{type}}stringThe right being exercised, same values as {{request_type}}.
{{processed_at}}stringWhen Superset finished processing the request. ISO 8601 datetime.
{{email_type}}stringHow the inbound was classified: dsr_request, authorized_agent, bulk_request, outgoing, other.

An address object always carries all eight components — address_1, address_2, city, state, region, zip_code, postal_code, country — using a blank string for anything we don't hold. The shape doesn't vary, so you can read a key without checking whether it's there.

Two extras in email steps

Confirmation emails get two variables the API call doesn't: {{right_name}}, the readable name of the right being exercised (e.g. "Right to Deletion"), and {{data_subject_name}}. Both resolve in the subject, body, and reply-to of an email step, and both are already used in the default confirmation template. They resolve to nothing in an API step, so don't reach for them in a URL, header, or body.

Arrays and objects in a JSON body

{{emails}}, {{phones}}, {{addresses}}, {{maids}}, and {{primary_address}} substitute as real JSON rather than as a string. Write them unquoted, the way you'd write the literal array or object:

{
  "email": "{{primary_email}}",
  "all_emails": {{emails}},
  "all_phones": {{phones}},
  "address": {{primary_address}}
}

which reaches your endpoint as:

{
  "email": "[email protected]",
  "all_emails": ["[email protected]", "[email protected]"],
  "all_phones": ["+1 555 123 4567"],
  "address": {
    "address_1": "40 Corsi Road", "address_2": "", "city": "Bloomfield",
    "state": "NJ", "region": "", "zip_code": "07003", "postal_code": "",
    "country": "United States"
  }
}

Quoting them works too and produces exactly the same result, so an existing template that wraps one in quotes keeps rendering valid JSON. Every other variable substitutes as a string and has to be quoted.

Several phone numbers on one request

Superset used to hold one phone field, so a data subject with more than one number arrived as a single string with semicolons in it. There's now a real list: {{phones}} gives you every number, {{primary_phone}} gives you the first. Historical requests work without any backfill on your side — an old packed value is split when it's read.

An extension stays attached to its number: "555-123-4567, ext 89" is one number, not two. The rule, if you want it precisely, is that we only split on a semicolon or comma when every resulting piece holds at least seven digits.

Form fields and template variables are different vocabularies

Two similar-looking lists of names, doing two different jobs. The field ids on your DSR formemail, phone, address_1 — describe the question you ask a data subject, and they are unchanged. The template variables on this page describe the value Superset sends you. Renaming the variables didn't touch the form: a form still asks for email, and the automation that fires afterwards reads {{primary_email}}.

Typing two curly braces in a Body field opens a grouped menu of available variables.
Type {{ in a URL, Headers, Body, or email field and Superset lists the available variables to pick from.

One call per request

A request reaches your endpoint as a single API call carrying every identity Superset holds for it, rather than one call per email address. One call, one status code, one unambiguous outcome to record — and the confirmation email fires off that one result.

That's what the all-inclusive arrays are for: {{emails}}, {{phones}}, and {{addresses}} put every identity in the one payload, so nothing is lost by not fanning out. If your endpoint can only accept a single identifier per call, we can configure per-identity delivery for your organization — get in touch and we'll set it up.

Going further with the API

Everything on this page works without writing any code. The form, the inbox, and the automation toggles all run on their own, and the API Call step above already pushes each qualifying request to your endpoint as it arrives. That covers most teams.

If your engineering team wants Superset wired more directly into your systems — pulling request data on your own schedule, or creating, updating, and deleting requests programmatically — there's a REST API for that. It's an optional, developer-focused path, not a required step to finish your setup.

Using the API → — the full endpoint reference for pulling, creating, updating, and deleting requests.