9 Airtable automations for three businesses. Run every one yourself.
Airtable is a database that looks like a spreadsheet. Its tables link to each other, so a pitch knows its speaker and a client knows its fees, and its formulas keep every total up to date. On top sit forms, interfaces for the people who use it, and automations that act when a form is sent, a record changes or a schedule fires.
I built a base and 9 automations for three made-up businesses: a conference team, a film-equipment rental house and a small recruiting firm. Each has a form you can fill in. Everything runs here in your browser, on test events or on your own answers. Need this for your business, or hiring for Airtable? Get in touch.
How to use this page
- Pick a business. New to Airtable? Start with the conference team, and open The base to see how the tables link.
- Fill in its form, or pick a test event. Ready-made ones include “the Slack connection has expired” and “an item with no vendor”.
- Press Run automation. Watch every step run, with every field it writes, every rollup and formula that changes with it, and every email and Slack message it sends.
Short on time? Each automation opens with The problem and What I built in plain words. The editor, the base and the Build notes are the detail an Airtable builder would check. Words you may not know
- Automations you can run
- 9
- Linked tables behind them
- 15
- Test events to run them on
- 28
- Actions and branches, each reached by a test
- 68/68
Are these real businesses?
No. Brightwater Summits, Kestrel Grip & Lighting and Larkspur Talent, and everyone who works there, are made up, so every base and automation can be shown end to end with its data and tried by anyone. The bases use Airtable’s real field types, views, interfaces, triggers and actions, and the scripts use Airtable’s scripting API, so each one can be rebuilt in a real base. Nothing on this page sends a message or keeps what you type.
Who built this
I’m Nick Soderstrom, a project and operations lead who builds the systems teams run on. My client automation work so far has been in GoHighLevel and Zapier (see recent contracts), and there are GoHighLevel and n8n versions of this page. These Airtable cases are not client work: I built them to show how I design, test and hand off an Airtable base. This page and its simulator were built by directing AI, like the projects on my AI Projects page.
Airtable words in plain English (22)
- Airtable
- A database that looks like a spreadsheet. Each table holds one kind of thing, and records in different tables can be linked, so a pitch knows its speaker and a speaker knows all their pitches.
- Base
- One Airtable database: a set of tables that belong together, with their views, interfaces and automations.
- Table, record, field
- A table is like a sheet; a record is a row; a field is a column with a type, such as text, date, single select or attachment.
- Link to another record
- A field that points at records in another table. Airtable keeps both sides: link a pitch to a speaker and the speaker’s record lists the pitch.
- Lookup
- A field that shows a field from linked records, like the speaker’s email on the pitch.
- Rollup
- A field that combines a field from linked records with a formula such as SUM(values), MAX(values) or MIN(values).
- Count
- A field that counts linked records, optionally only those that meet a condition.
- Formula
- A field computed from the record’s other fields, such as DATEADD({Event date}, -7, 'days').
- View
- A saved way of looking at a table: Grid, Kanban, Calendar, Gallery, Timeline, List or Form, with its own filters, sorting and grouping.
- Form view
- A form that creates a record in its table. It can be shared publicly, and a link can prefill or hide fields.
- Interface
- A simple app built on the base with the Interface Designer: dashboards, record review pages, lists and buttons. People can be invited to an interface only, without access to the rest of the base.
- Automation
- A trigger and a list of actions that run on their own in Airtable, such as “when a form is submitted, create a record and send an email”.
- Trigger
- What starts an automation: a form submission, a record that starts to match conditions, a record that is updated, a schedule, and others.
- When a record matches conditions
- A trigger that fires when a record starts to meet a set of conditions. It does not fire again until the record stops matching and matches again.
- Action
- One step of an automation: Find records, Create record, Update record, Send email, Run a script, Send a Slack message, and others.
- Conditional group
- A step with branches: If, Otherwise if, and an optional Otherwise. The first branch whose conditions are met runs its actions. It is always the last step, so actions every branch needs go before it.
- Repeating group
- A set of steps that runs once for each item in a list, such as each record Find records returned. Like a conditional group, it is the last step of its list; it can sit inside a branch.
- Token
- A value from an earlier step dropped into an action’s setting, like {Trigger › Speaker email}. Shown here in braces.
- Run a script
- An action that runs JavaScript with Airtable’s scripting API, for logic the built-in actions do not cover. It takes input variables and sets outputs.
- Run history
- The list of an automation’s runs, each Successful or Failed, with what every step received and returned.
- Synced table
- A read-only copy of a view from another base (or another app) that stays up to date on its own.
- Interface-only collaborator
- Someone invited to an interface but not to the base behind it.
Brightwater Summits
Brightwater runs a two-day summit on running greener operations each spring, plus half-day workshops around the region. Around 120 people pitch a talk each year and about 40 get a slot. Pitches used to arrive through a survey tool, land in a spreadsheet, and get answered by hand weeks later; slides were chased in reply-all threads until the night before. Now one Airtable base holds the program: pitches, speakers, events and the tasks that get a session on stage, with three automations doing the follow-up.
- Tables
- 4
- Fields
- 48
- Automations
- 3
- Test events
- 9
- Where
- Portland, Oregon; events across the Pacific Northwest
The sample team
- Priya Raman Program director
- Hannah Lee Speaker coordinator
- Dev Castillo Event producer
- Marcus Webb Operations (owns the base)
How the base is set up
One base, “Brightwater Program”, on the Team plan. The team edits it directly; outside reviewers see only an interface page with the pitches to score. Slack is connected through the automation’s own Slack action, so nothing else needs to run.
Airtable formAirtable automationsInterfacesScriptingSlackSynced table
Brightwater Summits is a fictional business. The people, sessions, emails and links are samples.
Brightwater Program: 4 tables, linked
Every table, field and view the automations rely on. Links are what make it a database rather than a spreadsheet: a lookup reads a field through a link, a rollup adds up or picks from linked records, a count counts them, and a formula works from the record’s own fields. The sample records below are computed by the same code as the simulator.
Sessions › Event → Events Sessions › Speaker → Speakers Tasks › Session → Sessions
Sessions
One record per pitch. The form creates them; the ones accepted become the program.
| Field | Type | Set up as |
|---|---|---|
| Titleprimary | Single line text | Primary field: the talk’s title, as the speaker wrote it. |
| Speaker name | Single line text | As typed on the form. The link to Speakers is set by automation 01. |
| Speaker email | ||
| Company | Single line text | |
| Format | Single select | Keynote · Talk · Panel · Workshop |
| Track | Single select | Operations · Supply chain · Finance · People |
| Abstract | Long text | |
| Headshot | Attachment | |
| Event | Link to another record | Links to EventsOn the form, limited to the Events view “Open for pitches”, so nobody pitches to a locked program. |
| Speaker | Link to another record | Links to SpeakersOne speaker record per person, however many times they pitch. |
| Status | Single select | In review · Accepted · DeclinedSet to In review by automation 01; reviewers move it from the Review queue interface. |
| Score | Rating | Reviewers’ score, 1 to 5. |
| Needs travel | Checkbox | Asked on the form. Decides whether a travel task is made. |
| Event date | Rollup | Rolls up Event › StartsMIN(values)A rollup, not a lookup, so formulas get one date instead of a list. |
| Slides due | Formula | DATEADD({Event date}, -7, 'days') |
| Book travel by | Formula | DATEADD({Event date}, -30, 'days') |
| Slides | Attachment | |
| Slides status | Formula | IF({Status} != "Accepted", "",
IF({Slides}, "Received",
IF(IS_BEFORE({Slides due}, TODAY()), "Overdue", "Waiting"))) |
| Welcome extras | Formula | IF({Needs travel}, "• Travel: Dev will be in touch to book it by " & DATETIME_FORMAT({Book travel by}, 'MMM D') & ".") &
IF(AND({Needs travel}, {Format} = "Workshop"), "\n") &
IF({Format} = "Workshop", "• Workshop room: tell Marcus what you need on the tables by " & DATETIME_FORMAT({Slides due}, 'MMM D') & ".")The lines of the welcome email that depend on the session. An email’s text cannot branch, so a formula writes them. |
| Welcome sent | Checkbox | Ticked by automation 02 and part of its conditions, so moving Status away and back cannot send the welcome twice. |
| Status changed | Last modified time | Watches StatusOnly watches Status, so it dates the decision, not the last typo fix. |
| Submitted | Created time | |
| Tasks | Link to another record | Links to Tasks; the other side of Tasks › Session |
Views
- GridAll pitchesThe whole pipeline, for Priya.Group: Event, then Status · Sort: Submitted, newest first
- KanbanReview boardWhere the team talks through pitches on Tuesdays.Stacked by: Status · Card cover: Headshot · Filter: Status is not Declined
- FormCall for speakersThe public pitch form, linked from the website.Event picker limited to the Events view “Open for pitches” · Redirect after submit: the speaker FAQ page · Fields: Title, Speaker name, Speaker email, Company, Format, Track, Abstract, Headshot, Event, Needs travel
- GridMissing slides · next 14 daysWhat automation 03 reads every Monday. Also Hannah’s to-do list.Filter: Status is Accepted · Filter: Slides is empty · Filter: Event date is within the next 14 days · Sort: Slides due, earliest first
Sample records (7)
| Title | Speaker name | Speaker email | Company | Format | Track | Abstract | Headshot | Event | Speaker | Status | Score | Needs travel | Event date | Slides due | Book travel by | Slides | Slides status | Welcome extras | Welcome sent | Status changed | Submitted | Tasks |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Supplier scorecards suppliers actually like | Mara Okafor | mara@tidewell.example | Tidewell Logistics | Talk | Supply chain | Workshop day · Seattle | Mara Okafor | Accepted | ★★★★★ | 3/12/2026 | 3/5/2026 | 2/10/2026 | Waiting | ✓ | 1/28/2026 10:12am | 1/9/2026 8:40am | Slides · Supplier scorecards suppliers actually like | |||||
| Closing the books in three days | Jun Watanabe | jun@ferncastle.example | Ferncastle Foods | Talk | Finance | Workshop day · Seattle | Jun Watanabe | Accepted | ★★★★ | 3/12/2026 | 3/5/2026 | 2/10/2026 | Waiting | ✓ | 1/28/2026 10:15am | 1/12/2026 3:02pm | Slides · Closing the books in three days | |||||
| Hiring operations people who stay | Ana Lima | ana.lima@northrow.example | Northrow Apparel | Panel | People | Workshop day · Seattle | Ana Lima | Accepted | ★★★★ | 3/12/2026 | 3/5/2026 | 2/10/2026 | ops-hiring-panel.pdf | Received | ✓ | 1/28/2026 10:20am | 1/14/2026 11:30am | Slides · Hiring operations people who stay | ||||
| Heat pumps for warehouses, hands on | Tomas Berg | tomas@gridleaf.example | Gridleaf Energy | Workshop | Operations | Workshop day · Seattle | Tomas Berg | Accepted | ★★★★★ | ✓ | 3/12/2026 | 3/5/2026 | 2/10/2026 | Waiting | • Travel: Dev will be in touch to book it by Feb 10. • Workshop room: tell Marcus what you need on the tables by Mar 5. | ✓ | 1/29/2026 9:05am | 1/15/2026 4:45pm | Travel · Tomas Berg, Room setup · Heat pumps for warehouses, hands on | |||
| Packaging returns without the waste | Ana Lima | ana.lima@northrow.example | Northrow Apparel | Talk | Supply chain | Brightwater Summit 2026 | Ana Lima | In review | ★★★★ | 5/20/2026 | 5/13/2026 | 4/20/2026 | 2/16/2026 1:00pm | 2/16/2026 12:58pm | ||||||||
| Running a repair café at work | Jun Watanabe | jun@ferncastle.example | Ferncastle Foods | Workshop | People | Brightwater Summit 2026 | Jun Watanabe | In review | ★★★★★ | ✓ | 5/20/2026 | 5/13/2026 | 4/20/2026 | • Travel: Dev will be in touch to book it by Apr 20. • Workshop room: tell Marcus what you need on the tables by May 13. | 2/20/2026 9:31am | 2/20/2026 9:30am | ||||||
| Carbon accounting for small teams | Tomas Berg | tomas@gridleaf.example | Gridleaf Energy | Talk | Finance | Brightwater Summit 2026 | Tomas Berg | Declined | ★★ | 5/20/2026 | 5/13/2026 | 4/20/2026 | 2/25/2026 5:40pm | 2/11/2026 10:10am |
Dates are from the sample week; the simulator moves them to the week you are in.
Speakers
One record per person. Pitches link here, so a speaker’s history is in one place.
| Field | Type | Set up as |
|---|---|---|
| Nameprimary | Single line text | |
| Company | Single line text | |
| Headshot | Attachment | |
| Sessions | Link to another record | Links to Sessions; the other side of Sessions › Speaker |
| Pitches | Count | Counts linked Sessions |
| Accepted talks | Count | Counts linked Sessions, only where Status is AcceptedA count with a condition: only linked sessions whose Status is Accepted. |
| Name key | Formula | LOWER(TRIM({Name}))For the Duplicates view. |
Views
- GallerySpeaker wallHeadshots and bios for the website team.Card cover: Headshot · Fields: Company, Accepted talks · Filter: Accepted talks > 0
- GridDuplicatesChecked monthly: the same person under two records gets merged by hand.Group: Name key · Sort: Name
Sample records (4)
| Name | Company | Headshot | Sessions | Pitches | Accepted talks | Name key | |
|---|---|---|---|---|---|---|---|
| Mara Okafor | mara@tidewell.example | Tidewell Logistics | mara-okafor.jpg | Supplier scorecards suppliers actually like | 1 | 1 | mara okafor |
| Jun Watanabe | jun@ferncastle.example | Ferncastle Foods | jun-watanabe.jpg | Closing the books in three days, Running a repair café at work | 2 | 1 | jun watanabe |
| Ana Lima | ana.lima@northrow.example | Northrow Apparel | ana-lima.jpg | Hiring operations people who stay, Packaging returns without the waste | 2 | 1 | ana lima |
| Tomas Berg | tomas@gridleaf.example | Gridleaf Energy | Heat pumps for warehouses, hands on, Carbon accounting for small teams | 2 | 1 | tomas berg |
Dates are from the sample week; the simulator moves them to the week you are in.
Events
The summit and each workshop. Shared out to the marketing base as a synced table.
| Field | Type | Set up as |
|---|---|---|
| Nameprimary | Single line text | |
| Starts | Date | |
| Ends | Date | |
| City | Single select | Portland · Seattle · Boise |
| Status | Single select | Planning · Open for pitches · Program locked · Done |
| Producer | User | |
| Sessions | Link to another record | Links to Sessions; the other side of Sessions › Event |
| Accepted sessions | Count | Counts linked Sessions, only where Status is Accepted |
| Slides received | Count | Counts linked Sessions, only where Status is Accepted and Slides status is Received |
| Days to go | Formula | DATETIME_DIFF({Starts}, TODAY(), 'days') |
Views
- TimelineSeasonThe year at a glance; the view the marketing base syncs.Start: Starts · End: Ends · Group: City
- GridOpen for pitchesLimits the form’s Event picker.Filter: Status is Open for pitches
Sample records (3)
| Name | Starts | Ends | City | Status | Producer | Sessions | Accepted sessions | Slides received | Days to go |
|---|---|---|---|---|---|---|---|---|---|
| Workshop day · Seattle | 3/12/2026 | 3/12/2026 | Seattle | Program locked | Dev Castillo | Supplier scorecards suppliers actually like, Closing the books in three days, Hiring operations people who stay, Heat pumps for warehouses, hands on | 4 | 1 | 10 |
| Workshop day · Portland | 4/16/2026 | 4/16/2026 | Portland | Open for pitches | Dev Castillo | 0 | 0 | 45 | |
| Brightwater Summit 2026 | 5/20/2026 | 5/21/2026 | Portland | Open for pitches | Dev Castillo | Packaging returns without the waste, Running a repair café at work, Carbon accounting for small teams | 0 | 0 | 79 |
Dates are from the sample week; the simulator moves them to the week you are in.
Tasks
What has to happen before a session is on stage. Created by automation 02.
| Field | Type | Set up as |
|---|---|---|
| Taskprimary | Single line text | |
| Session | Link to another record | Links to Sessions |
| Event | Lookup | Looks up Session › Event |
| Type | Single select | Slides · Travel · Room setup |
| Owner | User | |
| Due | Date | |
| Done | Checkbox |
Views
- GridOpen by ownerThe team’s stand-up list.Filter: Done is unchecked · Group: Owner · Sort: Due, earliest first
- CalendarTask calendarDeadlines by day.Date field: Due · Filter: Done is unchecked · Color: Type
Sample records (5)
| Task | Session | Event | Type | Owner | Due | Done |
|---|---|---|---|---|---|---|
| Slides · Supplier scorecards suppliers actually like | Supplier scorecards suppliers actually like | Workshop day · Seattle | Slides | Hannah Lee | 3/5/2026 | |
| Slides · Closing the books in three days | Closing the books in three days | Workshop day · Seattle | Slides | Hannah Lee | 3/5/2026 | |
| Slides · Hiring operations people who stay | Hiring operations people who stay | Workshop day · Seattle | Slides | Hannah Lee | 3/5/2026 | ✓ |
| Travel · Tomas Berg | Heat pumps for warehouses, hands on | Workshop day · Seattle | Travel | Dev Castillo | 2/10/2026 | ✓ |
| Room setup · Heat pumps for warehouses, hands on | Heat pumps for warehouses, hands on | Workshop day · Seattle | Room setup | Marcus Webb | 3/5/2026 |
Dates are from the sample week; the simulator moves them to the week you are in.
Interfaces
Program
The team as editors. Two advisory-board reviewers are invited to the interface only, so they see the pitches to score and nothing else in the base.
- Review queue Record reviewReviewers read one pitch at a time and score it.Source: Sessions where Status is In review · Fields: Title, Abstract, Format, Track, Event, Headshot · Editable: Score · Buttons: Accept (sets Status to Accepted), Decline (sets Status to Declined)
- Event dashboard DashboardDev’s view of each event’s readiness.Filter: Event (picker) · Number: Accepted sessions · Number: Slides received · Bar chart: Sessions by Track · Grid: Missing slides · next 14 days
- My tasks ListEach person’s own open tasks.Source: Tasks where Owner is the current user and Done is unchecked · Group: Due · Editable: Done
Sync
- Events synced out to Brightwater Marketing. The Season view is shared as a sync source. The marketing base syncs it as a read-only table, so campaign dates follow the event dates without anyone retyping them.
Three automations, one way of working
Each automation does one job. The line with the lightning bolt on each card is its trigger: a form, a record that starts to match, a field that changes, or a schedule. Pick a card to open that automation below.
Fill in the base’s form yourself
This is the base’s form view. Fill it in and press Submit. Use any name and a made-up email: nothing is sent or stored. Then press Watch the automation run, which appears once you submit, to see every step automation 01 · New pitch takes on your record, what it writes to the base and what each person would receive.
Sent
Thank you for pitching. A confirmation is on its way to your inbox.
How the form is set up in Airtable, and the settings that matter.
How it is set up (4 notes for builders)
- A form view on SessionsEach answer goes straight into a field of a new Sessions record. Fields the public should not see, like Status and Score, are simply not on the form.
- Linked-record picker, limited to a viewEvent is a link field. On the form its picker is limited to the Events view “Open for pitches”, so locked events cannot be chosen.
- Required fields and help textRequired fields are set on the form, not the table, so the team can still add a half-finished pitch by hand. Field descriptions show under each question.
- Prefilled linksThe website’s “Pitch for Portland” button opens the form with ?prefill_Event=Workshop%20day%20%C2%B7%20Portland, so the event is chosen already.
Pick an automation, pick a test event, press Run
Each tab below is one automation. Read The problem and What I built for the short version. Then pick a test event and press Run automation: the log lists every step in order, with the time it ran and what it changed in the base, and the editor ticks off each step as it runs.
For Airtable builders: the simulator follows Airtable’s rules. A “matches conditions” trigger fires only when a record starts to match; a conditional group runs the first branch whose conditions are met, or its Otherwise branch; a repeating group runs once per item; either group is the last step, since nothing can follow it in Airtable; computed and synced fields cannot be written; and a failed action stops the run without undoing earlier steps. This case has 26 steps across its automations, triggers included. New to the words? Open the decoder.
New pitch
Every pitch is tied to one speaker record, answered in a minute, and in front of the team on Slack.
The problem
Pitches came in through a survey tool and sat in a spreadsheet. People who pitched twice showed up as two strangers, nobody knew a pitch had arrived until someone looked, and speakers waited weeks without hearing a word.
What I built
The pitch form is an Airtable form on the Sessions table. When it is sent, the automation looks for the speaker by email. A conditional group then takes one of two branches: for a new speaker it creates the speaker record and links the pitch to it; otherwise it links the pitch to the speaker already there. Either way the pitch moves into review, the speaker is thanked, and the pitch is posted to the team’s #program channel.
- Trigger
- When a form is submitted
- Failure emails to
- Marcus Webb
The automation as it reads in Airtable’s editor. Each step gets a green tick when the run reaches it; branches that did not run fade. Open a step for its settings.
- TriggerWhen a form is submitted
Runs once for each pitch sent through the form. A record typed into the grid by hand does not start it.
Settings
- Table
- Sessions
- Form
- Call for speakers
- Action · Find recordsIs this speaker already in the base?
Looks in Speakers for a record with the email from the form.
Settings
- Table
- Speakers
- Find records based on
- Condition
- Condition
- Email is
Trigger › Speaker email
- Conditional group2 branches
Runs the first branch whose conditions are met, or Otherwise. Nothing comes after it.
If · New speakerFind records › Records is empty- Action · Create recordAdd the new speaker
Creates the speaker from the form’s answers, headshot included.
Settings
- Table
- Speakers
- Name
Trigger › Speaker nameTrigger › Speaker email- Company
Trigger › Company- Headshot
Trigger › Headshot
- Action · Update recordLink the pitch to the new speaker
Links the pitch to its speaker by record ID and moves it into review.
Settings
- Table
- Sessions
- Record ID
Trigger › Airtable record ID- Speaker
Create record › Airtable record ID- Status
- In review
- Action · Send emailThank the speaker
A plain note from the program team, with a real person to reply to.
Settings
- To
Trigger › Speaker email- From name
- Brightwater Program
- Reply to
- hannah@brightwatersummits.example
- Subject
- We have your pitch: “
Trigger › Title”
- Action · Send a Slack messageTell the team
Posts the pitch to #program with a link to the record.
Settings
- Slack account
- Brightwater (connected by Marcus)
- Channel
- #program
- Message
- New pitch for
Trigger › Event: “Trigger › Title” ·Trigger › Format,Trigger › Track·Trigger › Speaker name,Trigger › Company
- End of branch
Otherwise · Returning speaker- Action · Update recordLink the pitch to the existing speaker
Links the pitch to its speaker by record ID and moves it into review.
Settings
- Table
- Sessions
- Record ID
Trigger › Airtable record ID- Speaker
Find records › Records › Airtable record ID- Status
- In review
- Action · Send emailThank the speaker
A plain note from the program team, with a real person to reply to.
Settings
- To
Trigger › Speaker email- From name
- Brightwater Program
- Reply to
- hannah@brightwatersummits.example
- Subject
- We have your pitch: “
Trigger › Title”
- Action · Send a Slack messageTell the team
Posts the pitch to #program with a link to the record.
Settings
- Slack account
- Brightwater (connected by Marcus)
- Channel
- #program
- Message
- New pitch for
Trigger › Event: “Trigger › Title” ·Trigger › Format,Trigger › Track·Trigger › Speaker name,Trigger › Company
- End of branch
Running on your own form answers, at your local time. What the rest of the world does: (your choice under the form). Nothing is sent or stored.
- Pick a test event above, then press Run automation. Each line is one step, with the time it ran; open Base changes to see every field it wrote, and every lookup, rollup and formula that changed with it. Emails and Slack messages are shown as they would arrive.
Build notes
The detail an Airtable builder would check before trusting this automation. Start with What if… for the unusual cases in plain words. Words you may not know
- Two pitches from a new speaker a minute apartRuns can overlap, so both can find no speaker and create two. The Speakers view “Duplicates”, grouped by a LOWER(TRIM(Name)) formula, shows them; Marcus merges them monthly.
- A second pitch from a different addressA personal address instead of a work one does not match, so a second speaker record is made. The same Duplicates view catches it by name.
- Slack is disconnectedThe run stops at the Slack step and shows as Failed in the run history. The record and the email are not undone. Airtable emails Marcus, who reconnects Slack; the missed post is in the Review queue anyway.
- Someone types a pitch into the gridNothing runs, by design: only form submissions start this automation. Pitches taken by phone go through the form too.
- A pitch for an event that just closedThe form’s Event picker reads the Events view “Open for pitches”. When Dev sets an event to Program locked, it disappears from the picker for the next visitor.
- A form trigger, not “record created”. “When a record is created” fires the moment someone presses + in the grid, before anything is typed. “When a form is submitted” fires only for the form, with every answer in place.
- Find, then one group with two branches. The If branch runs when Find records came back empty; Otherwise covers the returning speaker, so exactly one runs. The new-speaker branch creates the speaker first, then uses its record ID in the update.
- The group is the last step. In Airtable nothing can follow a conditional group, so the thank-you email and the Slack post sit inside both branches. They read the same in each; only the step IDs differ.
- Links by record ID. Update record sets Speaker from Create record › Airtable record ID or Find records › Records › Airtable record ID. Setting a link field from typed text would match on the primary field’s name and could pick the wrong Ana.
- The automation sets Status. The form does not show Status. The automation sets In review, so a pitch with an empty Status is a sign the run failed, and the All pitches view groups it where it stands out.
- Slack goes last in each branch. It is the one step that depends on an outside connection. If it fails, the pitch is already linked and the speaker already thanked; only the Slack post is missing.
- A person behind the email. From name is “Brightwater Program” and Reply to is Hannah’s address, so a speaker’s reply reaches someone instead of a no-reply box.
| Table | Field | How it is used |
|---|---|---|
| Sessions | Speaker email | Matched against Speakers › Email. |
| Sessions | Speaker | Set by record ID, from Create record or Find records. |
| Sessions | Status | Set to In review, which puts the pitch in the Review queue interface. |
| Speakers | Name, Email, Company, Headshot | Filled from the form when the speaker is new. |
| Speakers | Pitches | A count of linked sessions, quoted in the Slack post. |
Failure emails go to Marcus Webb, who owns the automation. Each run is kept in the automation’s Run history with what every step received and returned.
- A new email creates exactly one speaker and links the pitch to it.
- A known email links to the existing speaker and creates nothing in Speakers.
- Status is In review after every successful run.
- The thank-you email names the right event and the reply goes to Hannah.
- With Slack disconnected, the run fails at Slack only and Marcus gets the failure email.
- A record added in the grid does not start the automation.
Airtable features in this build
Pitch accepted
The moment a pitch is accepted, the work it creates has an owner and a date, and the speaker knows what is due when.
The problem
Accepting a talk set off a dozen small jobs that lived in people’s heads: get the slides, book a flight, set up the room for a workshop. Deadlines were worked out by hand from the event date, and the welcome email went out whenever Hannah got to it.
What I built
When a session’s Status becomes Accepted, the automation creates a slides task for Hannah, emails the speaker every date that matters to them, and ticks Welcome sent. A conditional group then adds a travel task for Dev if the speaker needs travel, a room-setup task for Marcus if it is a workshop, or both. Every due date comes from a formula on the session.
Loading the editor, simulator and build notes…
Monday slides chase
One email tells the team what is missing; each speaker gets their own reminder. When everything is in, nobody hears a thing.
The problem
Slides were chased in reply-all threads, so speakers who had sent theirs got nagged and the ones who had not slipped through. Dev found out what was missing the night before an event.
What I built
Every Monday at 8 AM the automation reads the view of accepted sessions with no slides and an event in the next 14 days. If the list has anything in it, a conditional group runs: a short script groups the list by event for one digest to Dev and Hannah, then a repeating group sends each of those speakers their own reminder with their own due date.
Loading the editor, simulator and build notes…
Kestrel Grip & Lighting
Kestrel rents cameras, lenses, lights and grip to film and TV productions around Atlanta. Every piece of gear has an asset tag, and the warehouse crew of five checks it out and back in. The problems were the expensive kind: a light with a frayed cable went back on the shelf because the note about it was on a whiteboard; the warehouse ran out of gaffer tape mid-week; and twice a year two productions turned up for the same light. The base tracks the assets, bookings, repairs and supplies, with the vendor list synced in from the finance team’s base.
- Tables
- 6
- Fields
- 58
- Automations
- 3
- Test events
- 9
- Where
- Atlanta, Georgia
The sample team
- Rosa Delgado Owner
- Andre Mills Rental desk lead
- Kim Tran Warehouse and repairs
- Jordan Price Operations (owns the base)
How the base is set up
One base, “Kestrel Inventory”, on the Team plan. The rental desk and the owner edit it; the warehouse crew are interface-only collaborators who count, check in and report damage from a tablet without seeing prices. Vendors come in as a synced table from the finance base, so there is one list of approved vendors and their addresses.
Airtable formAirtable automationsInterfacesScriptingSynced tableSlack
Kestrel Grip & Lighting is a fictional business. The people, productions, gear, prices and links are samples.
Kestrel Inventory: 6 tables, linked
Every table, field and view the automations rely on. Links are what make it a database rather than a spreadsheet: a lookup reads a field through a link, a rollup adds up or picks from linked records, a count counts them, and a formula works from the record’s own fields. The sample records below are computed by the same code as the simulator.
Assets › Vendor → Vendors Bookings › Assets → Assets Maintenance › Asset → Assets Supplies › Vendor → Vendors Purchase orders › Supply → Supplies
Loading the tables…
Interfaces
Warehouse
The warehouse crew, invited as interface-only collaborators: they count, check in and report damage, and never see prices or client details.
- Returns today ListThe check-in bench’s list.Source: Bookings where Return is today and Status is Out · Fields: Booking, Assets · Button: Mark returned (sets Status to Returned)
- Count supplies Record reviewMonday and Thursday counts on the tablet.Source: Supplies, sorted by Item · Editable: On hand · Shown: Reorder point
- Report damage FormThe same fields as the Damage report form, inside the interface.Creates a Maintenance record · Fields: Asset, Issue, Severity, Details, Photos, Reported by
Owner
Rosa and Jordan.
- Repairs and spend DashboardWhere repair money goes.Number: Open repairs (sum) · Bar chart: Repair spend by Category · Grid: Replace, don’t repair · Number: Open POs total
Sync
- Vendors synced in from Kestrel Finance. One-way sync of the finance base’s “Approved vendors” view. The finance team owns vendor details; here they are read-only, and links from Assets and Supplies point at the synced records.
Three automations, one way of working
Each automation does one job. The line with the lightning bolt on each card is its trigger: a form, a record that starts to match, a field that changes, or a schedule. Pick a card to open that automation below.
Fill in the base’s form yourself
This is the base’s form view. Fill it in and press Submit. Use any name and a made-up email: nothing is sent or stored. Then press Watch the automation run, which appears once you submit, to see every step automation 01 · Damage report takes on your record, what it writes to the base and what each person would receive.
Loading the form…
How the form is set up in Airtable, and the settings that matter.
How it is set up (4 notes for builders)
- A form on MaintenanceEach report is a new Maintenance record. Status, Cost and the vendor lookups are not on the form; the automation and the repair board handle those.
- Asset picker limited to a viewAsset is a link field. Its picker reads the Assets view “Active assets”, so retired gear cannot be reported, and the asset tag is the primary field, so typing the tag finds it.
- Photos as attachmentsThe real form has a Photos attachment field; the crew take pictures on the tablet. This demo leaves it out because nothing you pick here is uploaded.
- The same form in an interfaceThe Warehouse interface has a Form page with the same fields, so interface-only crew can report damage without access to the base.
Pick an automation, pick a test event, press Run
Each tab below is one automation. Read The problem and What I built for the short version. Then pick a test event and press Run automation: the log lists every step in order, with the time it ran and what it changed in the base, and the editor ticks off each step as it runs.
For Airtable builders: the simulator follows Airtable’s rules. A “matches conditions” trigger fires only when a record starts to match; a conditional group runs the first branch whose conditions are met, or its Otherwise branch; a repeating group runs once per item; either group is the last step, since nothing can follow it in Airtable; computed and synced fields cannot be written; and a failed action stops the run without undoing earlier steps. This case has 19 steps across its automations, triggers included. New to the words? Open the decoder.
Damage report
A damaged light is off the shelf the second it is reported, the repair shop has the details, and the desk knows which jobs it affects.
The problem
Damage was written on a whiteboard at the check-in bench. A light with a frayed cable went out to a set because nobody had changed its status, repair quotes waited until Kim had time to write an email, and the desk learned a booked item was broken when the client came to pick it up.
What I built
The crew report damage on an Airtable form at the bench. The automation sets the asset to In repair straight away, so it cannot be booked. Then one conditional group branches on severity. Unsafe: email the asset’s repair vendor for a quote, and run a short script to find bookings in the next week that include the item and post them to the desk’s Slack channel. Major: just the quote request. Otherwise, for minor damage: onto Kim’s repair board.
Loading the editor, simulator and build notes…
Reorder supplies
The count that crosses the reorder point raises a purchase order and emails the vendor. An item already on order is left alone.
The problem
Supplies were reordered when someone noticed the shelf was empty, usually mid-week with three trucks going out. Twice the same order was placed by two people, and gel ran out the day before a big lighting job.
What I built
The crew count supplies twice a week in the Warehouse interface. When an item’s count drops to its reorder point and nothing is on order for it, the automation creates a purchase order for the standard quantity and emails it to the item’s vendor. If the count hit zero, the warehouse Slack channel hears about it too.
Loading the editor, simulator and build notes…
Nightly conflict check
Every night a script compares every live booking with every other. Clashes are flagged on the records and emailed to the desk; fixed ones are unflagged without a word.
The problem
Twice a year two productions turned up for the same light. Each booking looked fine on its own, and nobody compares forty bookings by hand.
What I built
At 9 PM every night a script reads the confirmed and outgoing bookings, finds pairs that share an asset on overlapping dates, ticks Conflict and writes a note on both, and clears the flag on bookings that no longer clash. If it found any, Andre gets one email with the list for the morning.
Loading the editor, simulator and build notes…
Larkspur Talent
Larkspur places controllers, FP&A managers and operations leaders with mid-size companies, about 30 placements a year. Its pipeline lived in a spreadsheet per role, so a candidate who applied twice was two strangers, stage emails were typed fresh each time, and the fee for a placement was worked out from a calculator when Leo remembered to invoice. The base links clients, roles, candidates, applications and placements, so a fee is computed the moment someone is placed and rolls up to the client.
- Tables
- 5
- Fields
- 61
- Automations
- 3
- Test events
- 10
- Where
- Denver, Colorado; clients across the Mountain West
The sample team
- Nadia Hassan Founder and senior recruiter
- Owen Fitch Recruiter
- Grace Kim Recruiting coordinator
- Leo Marsh Operations and billing (owns the base)
How the base is set up
One base, “Larkspur Desk”, on the Team plan. Recruiters work from a Kanban interface page; Leo works from a billing dashboard. The public apply form is an Airtable form opened from each role’s own link, with the role filled in and hidden.
Airtable formAirtable automationsInterfacesScriptingSlack
Larkspur Talent is a fictional business. The people, clients, roles, salaries, fees and links are samples.
Larkspur Desk: 5 tables, linked
Every table, field and view the automations rely on. Links are what make it a database rather than a spreadsheet: a lookup reads a field through a link, a rollup adds up or picks from linked records, a count counts them, and a formula works from the record’s own fields. The sample records below are computed by the same code as the simulator.
Roles › Client → Clients Applications › Role → Roles Applications › Candidate → Candidates Placements › Application → Applications
Loading the tables…
Interfaces
Desk
The recruiters and Grace, as editors.
- Pipeline KanbanWhere stages are moved, which is what starts automation 02.Source: Applications, stacked by Stage · Filter: Role (picker) · Record detail: Resume, Cover note, LinkedIn, Days in stage, Send decline
- My roles ListEach recruiter’s own searches.Source: Roles where Recruiter is the current user and Status is Open · Fields: Active candidates, Days open, Apply link
Billing
Leo and Nadia.
- Fees DashboardInvoices and cash.Number: Fee, sum, where Invoice status is To invoice · Bar chart: Fees placed by Client · Grid: Invoices over 30 days · Button on each row: Mark paid (sets Invoice status to Paid)
Three automations, one way of working
Each automation does one job. The line with the lightning bolt on each card is its trigger: a form, a record that starts to match, a field that changes, or a schedule. Pick a card to open that automation below.
Fill in the base’s form yourself
This is the base’s form view. Fill it in and press Submit. Use any name and a made-up email: nothing is sent or stored. Then press Watch the automation run, which appears once you submit, to see every step automation 01 · New application takes on your record, what it writes to the base and what each person would receive.
Loading the form…
How the form is set up in Airtable, and the settings that matter.
How it is set up (3 notes for builders)
- One form for every roleRole is a link field, filled in and hidden by each role’s Apply link (prefill_Role and hide_Role=true), so one form serves every search.
- Resume uploadThe real form has a Resume attachment field. The demo leaves it out because nothing is uploaded here.
- The candidate is not on the formForms create one record in one table. The applicant’s details land on the Application; the automation’s script links or creates the Candidate.
Pick an automation, pick a test event, press Run
Each tab below is one automation. Read The problem and What I built for the short version. Then pick a test event and press Run automation: the log lists every step in order, with the time it ran and what it changed in the base, and the editor ticks off each step as it runs.
For Airtable builders: the simulator follows Airtable’s rules. A “matches conditions” trigger fires only when a record starts to match; a conditional group runs the first branch whose conditions are met, or its Otherwise branch; a repeating group runs once per item; either group is the last step, since nothing can follow it in Airtable; computed and synced fields cannot be written; and a failed action stops the run without undoing earlier steps. This case has 23 steps across its automations, triggers included. New to the words? Open the decoder.
New application
However someone types their email, they end up as one candidate with every application they have made, and they hear back in a minute.
The problem
Each role had its own spreadsheet, so someone who applied for two roles, or came back a year later, was a stranger every time. “Jamie.Ortiz@” and “jamie.ortiz@” were two people. Applicants heard nothing until a recruiter got to them.
What I built
Every role has an Apply link that opens the Airtable form with the role filled in and hidden. When an application arrives, a short script looks the applicant up by email, ignoring capitals and spaces, links the application to the existing candidate or creates one, and reports whether they are returning. The applicant gets an acknowledgement, and a returning applicant is flagged to the desk on Slack.
Loading the editor, simulator and build notes…
Stage changes
Recruiters move cards; the automation writes the emails. A placement turns into a fee and an invoice request the same minute.
The problem
Every stage meant an email typed from scratch: a call invitation, a candidate summary for the client, a polite no. Some went out late, some never. Placements were invoiced when Leo noticed them, and fees were worked out by hand from the client agreement.
What I built
One automation watches the Stage field, and its one conditional group has a branch for each move that needs something: Screen sends the candidate the recruiter’s booking link; Client interview sends the client contact a short summary; Placed creates the placement record, whose fee is computed from the offer and the client’s rate, and emails Leo to invoice it; Rejected sends the standard decline only when the recruiter ticked Send decline.
Loading the editor, simulator and build notes…
Guarantee check-ins
Two weeks before a placement’s 90-day guarantee ends, the client gets a check-in, once. Invoices unpaid after 30 days land in Leo’s inbox.
The problem
Larkspur replaces a hire for free if they leave within 90 days. Nobody asked clients how a new hire was doing until it was too late to help, and unpaid invoices were noticed when the bank balance looked low.
What I built
Every morning the automation reads two views: placements whose guarantee ends in the next 14 days with no check-in yet, and invoices unpaid for more than 30 days. A conditional group then branches. If any invoice is overdue, Leo gets one email listing them. Either way, the branch ends with a repeating group that emails each client contact and ticks Check-in sent.
Loading the editor, simulator and build notes…
Built so the team can forget about it
A base that works in a demo is easy. One a team can rely on has to survive records moved back and forth, empty fields, outside connections that expire and people who rename things. These habits are in every case study. In plain words: each event is handled once, the rules are visible, nothing important waits on a fragile step, and nobody is emailed unless they need to act.
The rules live in views and formulas
Find records reads a view, not a copy of its filters, and dates and thresholds are formula fields. The team sees exactly what the automation will act on, and changing a rule is one edit in one place.
See Brightwater Summits 03 · Monday slides chase, Larkspur Talent 03 · Guarantee check-ins, Kestrel Grip & Lighting 02 · Reorder supplies
Every run fires once
“Matches conditions” fires when a record starts to match, so each one carries a guard the automation itself switches off: a Welcome sent box, an Open POs count, a Check-in sent box. Moving a record back and forth cannot repeat the work.
See Brightwater Summits 02 · Pitch accepted, Kestrel Grip & Lighting 02 · Reorder supplies, Larkspur Talent 03 · Guarantee check-ins
Links by record ID, never by name
Automations link records with the IDs that Find records, Create record or a script hand them. Two speakers called Ana, or a tag typed with a space, cannot link the wrong record.
See Brightwater Summits 01 · New pitch, Larkspur Talent 01 · New application, Kestrel Grip & Lighting 01 · Damage report
The important step first, the fragile one last
An action that fails stops the run but does not undo earlier steps. So the step that protects the business goes first (pull the damaged light), and the one that depends on an outside connection (Slack) goes last.
See Kestrel Grip & Lighting 01 · Damage report, Brightwater Summits 01 · New pitch
Quiet when nothing is wrong
Digests and alerts sit in a conditional group branch that needs a non-empty list or a count above zero. A Monday with every slide in, or a night with no double bookings, ends with a successful run and no email.
See Brightwater Summits 03 · Monday slides chase, Kestrel Grip & Lighting 03 · Nightly conflict check, Larkspur Talent 03 · Guarantee check-ins
Scripts only where actions fall short
Comparing every booking with every other, or matching an email whatever its capitals: these are scripts, short and commented, with inputs and outputs the next step reads. Everything a built-in action can do stays a built-in action.
See Kestrel Grip & Lighting 03 · Nightly conflict check, Larkspur Talent 01 · New application, Brightwater Summits 03 · Monday slides chase
One owner per fact
Vendor addresses come from the finance base through a sync, fees come from the client’s agreement through lookups, and nothing is typed twice. When a fact changes in its one home, every email that quotes it changes too.
See Kestrel Grip & Lighting 02 · Reorder supplies, Larkspur Talent 02 · Stage changes
People see what they need
Interface-only collaborators report damage and count stock without seeing prices; reviewers score pitches without seeing the rest of the base. Interfaces are the front door; the grid is for the people who maintain it.
See Kestrel Grip & Lighting 01 · Damage report, Brightwater Summits 01 · New pitch
What I check first when I inherit an Airtable base
Most fragile bases fail in the same few ways. This is the order I look in, and what I do about each.
- Automations nobody ownsBuilt by someone who left, failing quietly, with failure emails going to an old inbox. I list every automation with its owner, last run and failures, and turn off the ones nobody can explain.
- Text where a link should beClient names typed into a text field in five spellings. I add a linked table, match the text to it, and replace the field, so lookups and rollups can work.
- Lookups used as numbersA lookup returns a list, so a formula that multiplies it gives odd results or errors. A rollup with SUM, MAX or MIN returns one value and fixes it.
- “Record created” on a gridAn automation that fires the moment someone presses + and sends an email with empty fields. Form submissions get the form trigger; everything else gets “matches conditions” with the required fields in the conditions.
- Triggers that fire twice“Matches conditions” automations with no guard, so a record moved back and forth sends everything again. I add a checkbox or a count to the conditions that the automation itself switches off.
- One giant tableForty columns, half of them empty on any row, because two things were stored as one. I split them into linked tables and keep the old view working while people switch.
- Everyone is a creatorField types changed by accident, views filtered for one person and broken for the rest. I narrow permissions, lock the views automations read, and give most people an interface instead.
- Attachment links in emailsAirtable’s attachment URLs expire after a few hours, so emailed links break by the next day. The email points people to an interface page or the file is sent another way.
From a brief to a base the team trusts
Scope
What the base must answer, who uses it and how, which events need a person to hear about them. Written down before a field is made.
Model the data
Tables for things, links for relationships, one owner per fact. Sketched on paper first, with the views each person will live in.
Build on sample records
A dozen realistic records per table, so every lookup, rollup and formula is checked against data that looks like the real thing.
Break it on purpose
A form with half the answers, a record moved back and forth, a vendor with no email, a disconnected Slack: each test event on this page is one I would run before switching an automation on.
Switch on and hand off
Automations turned on one at a time, failure emails pointed at the owner. Then a short recorded walkthrough and a one-page guide: what each automation does, which views it reads, what never to rename.
Watch it
Run history checked daily in the first week, then monthly. Field and view changes go through the owner, because an automation reads them by name.
Naming, so the next person can find things
- Tables
Sessions,Speakers: plural nouns for the things they hold- Fields
Slides due, notDate 2: automations and formulas refer to fields by name- Views
Missing slides · next 14 days: says what it shows, and a view an automation reads is never renamed casually- Automations
02 · Pitch accepted: numbered in the order a record meets them
Hiring for Airtable, or need a base built?
I design, build, fix and document Airtable bases: the data model, the interfaces people work in, the automations around them, and the handoff so a team can run it. If you’re hiring for an operations or systems role or need this for your business, I’d like to hear about it.