Skip to content

The moment it happens

Delete a person's records on request

Send an email address and every record about that person is deleted, logged and confirmed to you.

Runs
The moment it happens
Apps
Airtable
AI
Not needed
Access
data.records:read, data.records:write

Send this to your assistant

Create a ClickRuntime automation: give me a private link where I can send an email address. Delete every record with that email from my Airtable Customers table, log the request with a hashed copy of the email, and email me a confirmation.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Under GDPR, a person can ask you to erase their personal data, and you generally have about a month to do it. In a growing Airtable workspace, one person's email might appear in a contacts table, a signups table, a support log and an event attendee list. Searching each table manually is slow, and it is easy to miss one. Missing a record is a compliance risk, and there is often no proof afterwards that the request was handled.

When you send an email address, the automation finds the records that contain it, deletes them, and writes a log record that stores a hash of the email rather than the address itself, so the log does not hold the data it is proof of deleting. You then receive a confirmation email.

It helps small businesses, nonprofits and agencies that keep customer information in Airtable and need a repeatable way to answer erasure requests.

What you get out of it

  • Erasure requests are answered within the deadline

    A process that takes seconds, not an afternoon of searching, means requests are not left at the bottom of a to-do list until the legal window is almost over. The statutory clock keeps running whether or not the request is on anyone's radar.

  • No table is forgotten

    Records are found by email address across the tables you configure, so the person's data is removed from every place you decided to cover, not only the one you remembered. That is the difference between a clean erasure and a partial one.

  • You can prove it was done

    The log record shows that a deletion took place and when. If the person or a regulator asks, you can show a dated entry, without keeping the personal data itself.

  • The log does not hold personal data

    Storing a hash of the email means the proof of deletion cannot be used to identify the person later, which keeps your compliance record itself compliant. Your log stays safe even if someone gains access to it.

  • Mistakes from manual deletion are avoided

    A fixed, tested process deletes the right records for the email you give it, not the wrong person with a similar name. Exact matching on one key avoids that risk.

How it works

What happens, step by step

  1. When you send ClickRuntime an email address for a deletion request, the automation starts right away.

  2. It finds every record in your Airtable table that belongs to that email address and deletes them.

  3. It writes a log record of the deletion that stores a scrambled version of the email, not the address itself.

  4. You get an email confirming how many records were deleted.

Before it runs live

  • Connect Airtable
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Delete a person's records on requestjust nowSucceeded
Email · Data deletion request completedDeleted 3 record(s) from Customers. Hash: 4f9a1c22b0e7…

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Airtable steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
delete_a_person_s_data_on_request_gdpr.pyexample
import hashlib
from datetime import datetime, timezone
from clickruntime import on_event, credentials, http, notify

BASE_ID = "appXXXXXXXXXXXXXX"

@on_event
def handle(event):
    email = ((event.json or {}).get("email") or "").strip().lower()
    if not email:
        return {"deleted": 0}
    api = f"https://api.airtable.com/v0/{BASE_ID}"
    headers = {"Authorization": f"Bearer {credentials.connection('airtable', 'work')}"}
    found = http.get(f"{api}/Customers", headers=headers, params={
        "filterByFormula": f"LOWER({{Email}}) = '{email.replace(chr(39), '')}'"}).json()["records"]
    ids = [r["id"] for r in found]
    for i in range(0, len(ids), 10):
        http.delete(f"{api}/Customers", headers=headers, params={"records[]": ids[i:i + 10]}).raise_for_status()
    digest = hashlib.sha256(email.encode()).hexdigest()
    http.post(f"{api}/Deletion Log", headers=headers, json={"records": [{"fields": {
        "Email Hash": digest, "Records Deleted": len(ids),
        "Date": datetime.now(timezone.utc).isoformat(timespec="seconds")}}]}).raise_for_status()
    notify.email_me("Data deletion request completed", f"Deleted {len(ids)} record(s). Hash: {digest[:12]}…")
    return {"deleted": len(ids)}

FAQ

Common questions

Does deleting in Airtable remove all traces?
Airtable keeps deleted records in a trash for a limited time and in snapshots according to your plan. Check your plan's retention settings, and remember that backups you made elsewhere also need to be handled.
How does it find records for one person?
It searches the tables and email fields you list, for an exact match on the address you send. Records stored under a different address or only by name are not found, so decide which fields to cover.
Should I verify the requester before sending the email?
Yes. The automation deletes whatever address it receives, so confirm the identity of the person asking before you send the request. Deletion is hard to undo. The confirmation email lists what was removed, so you can check the result before replying to the person who asked.
What permissions does it need?
data.records:read, data.records:write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Delete a person's records on request” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.