Skip to content

Weekly

Find duplicate records in Airtable

Each week you get a list of records that share the same email, so you can merge them.

Runs
Weekly
Apps
Airtable
AI
Not needed
Access
data.records:read (+write to tag)

Send this to your assistant

Create a ClickRuntime automation: every Monday at 9am, find records in my Airtable Contacts table with the same email address, ignoring case, and email me the duplicates.

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

Duplicates build up in any Airtable base that takes data from several sources. The same customer signs up twice with different capitalization, a contact is imported again after a trade show, or a company is entered as Acme Inc and ACME, Inc. Every duplicate distorts counts, sends two emails to one person and splits history across two records. Finding them by eye in a table of thousands is not realistic, and Airtable has no built-in scheduled duplicate check.

Once a week, the automation reads all records, normalizes the key field (lowercasing, trimming spaces and removing punctuation), groups records that share the same key, and emails you the groups. If you want, it can also tag the duplicates in the base so you can filter them and merge or delete.

It works best on CRM-style bases, mailing lists, inventories and any table where each real-world thing should appear once.

What you get out of it

  • Customers are not contacted twice

    Removing duplicate contacts means one email per person. Fewer repeat messages means fewer annoyed recipients and fewer unsubscribes caused by sloppy data. Nothing damages trust in a brand faster than being emailed twice by it.

  • Counts and reports become accurate

    Revenue per customer, number of leads and headcount are only right when each entity is one record. Cleaning duplicates before a quarterly review prevents embarrassing corrections. A report that double-counts customers will not survive a careful question.

  • History stays in one place

    When two records for the same client are merged, notes, orders and conversations are together, so whoever picks up the account has the full story. That context makes follow-up calls better informed and shorter.

  • Small differences are caught

    Normalizing spacing, case and punctuation finds duplicates that a simple exact match misses, such as trailing spaces or Inc versus Inc. Typical examples are an extra space after a name or a different capital letter.

  • Cleaning happens weekly, not once a year

    Small batches of duplicates are quick to resolve. A weekly check stops a messy backlog from growing into a multi-day clean-up project. A weekly review takes minutes, not days. It keeps the base clean for everyone who uses it.

How it works

What happens, step by step

  1. Once a week, the automation reads every record in your Airtable table.

  2. It tidies up each email address, ignoring capital letters and extra spaces, so near-matches are caught.

  3. Records that share the same email are grouped together.

  4. You get an email listing each shared email and the records using it, ready to merge.

Before it runs live

  • Connect Airtable

What you get

RunsWeekly
Find duplicate records in Airtabletoday, 9:00Succeeded
Email · 4 duplicate emails in Contactsops@acme.example: Acme Ops, ACME Operations lee@northwind.example: Lee Park, Lee P.

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

  • Run it at a different time, more or less often, or only on weekdays
  • 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.
duplicate_record_finder.pyexample
from collections import defaultdict
from clickruntime import on_trigger, credentials, http, notify

BASE_ID = "appXXXXXXXXXXXXXX"

@on_trigger
def run(event):
    headers = {"Authorization": f"Bearer {credentials.connection('airtable', 'work')}"}
    groups, params = defaultdict(list), {"fields[]": ["Name", "Email"], "pageSize": 100}
    while True:
        page = http.get(f"https://api.airtable.com/v0/{BASE_ID}/Contacts", headers=headers, params=params).json()
        for r in page["records"]:
            email = (r["fields"].get("Email") or "").strip().lower()
            if email:
                groups[email].append(r["fields"].get("Name", r["id"]))
        if "offset" not in page:
            break
        params["offset"] = page["offset"]
    dupes = {e: names for e, names in groups.items() if len(names) > 1}
    if dupes:
        notify.email_me(f"{len(dupes)} duplicate emails in Contacts",
                        "\n".join(f"{e}: {', '.join(n)}" for e, n in sorted(dupes.items())))
    return {"duplicates": len(dupes)}

FAQ

Common questions

Which field is used to decide that two records match?
You choose, typically email for people and company name or domain for organizations. The automation normalizes that field before comparing, so you can pick the one that best identifies a unique record. It is easy to use a different key for a different table if you have several.
Will it delete or merge duplicates automatically?
No. It reports them and optionally tags them. Merging is a judgment call, since you need to decide which values to keep, so a person makes the final choice. The tag simply makes them easy to filter into one view, where you review each group and keep what you need.
Does it work on very large tables?
It pages through all records in batches, so large tables are supported. A table with tens of thousands of rows takes longer, but the weekly schedule leaves plenty of time to finish. The weekly cadence is a good match for lists that are updated every day.
What permissions does it need?
data.records:read (+write to tag). 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 each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
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 “Find duplicate records in Airtable” from your assistant

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