The first Airtable automation a team builds is linear: trigger → one action → done. The second one needs to branch — different actions for different conditions. Most teams handle this badly: they build five separate automations with overlapping triggers and try to make them not step on each other. The right answer is conditional logic inside a single automation.
This guide covers every pattern Airtable supports for conditional automation logic: simple IF/THEN, multi-condition AND/OR, nested branches, IF/ELSE-IF/ELSE structures, and the routing-table pattern that scales to dozens of paths without becoming a nightmare.
The Three Places Conditions Live
Airtable conditional logic shows up in three distinct places. Knowing which one to reach for is half the battle.
| Location | Purpose | Best For |
|---|---|---|
| Trigger condition ("When record matches conditions") | Decides if the automation fires at all | Filtering the universe of records |
| Conditional logic action | Branches the action flow inside a running automation | Different actions for different record states |
| Find records filter | Filters which records a Find step returns | Operating on subsets within one run |
Use trigger conditions when you want narrow trigger control. Use action conditions when the automation should always run but take different paths. Use Find record filters when you need to operate on filtered sets of related records.
Pattern 1: Simple IF/THEN Conditional
The most common pattern. Run an action only when a condition is met.
Setup
- In the automation, click + Add advanced logic → Conditional.
- Set the condition: e.g.
{Priority} = "High". - Inside the conditional branch, add the action — e.g. Send Slack message to the on-call channel.
- Save.
If the condition is true, the action runs. If false, the branch is skipped silently. Other actions in the automation continue regardless.
Real-world example: VIP alert routing
Trigger: New support ticket created.
Conditional: {Customer Tier} = "Enterprise".
- Inside the conditional: Send urgent Slack message to #enterprise-support and create a high-priority follow-up task.
Below the conditional: Send standard email confirmation to the customer.
The conditional fires only for Enterprise tickets; the confirmation email goes out for all tickets.
Pattern 2: Multi-Condition AND / OR
Conditions can be joined with AND (all must match) or OR (any must match), and groups of conditions can themselves be combined.
AND example
{Status} = "Open" AND {Priority} = "High" AND {Customer Tier} = "Enterprise"
All three must be true for the branch to fire.
OR example
{Status} = "Open" OR {Status} = "Escalated"
Either status triggers the branch.
Mixed AND/OR with grouping
({Status} = "Open" AND {Priority} = "High") OR {Status} = "Escalated"
To build this in Airtable, click + Add condition group inside the conditional. Each group has its own internal AND/OR, and groups are joined with AND/OR at the parent level.
Without grouping, conditions are evaluated left-to-right with implicit ordering — almost always not what you want. Always use explicit groups for anything beyond two conditions.
Pattern 3: IF / ELSE-IF / ELSE Branching
To take different actions in mutually exclusive scenarios, stack conditional actions.
Setup
- Conditional 1:
{Customer Tier} = "Enterprise"→ send to Enterprise team Slack. - Conditional 2:
{Customer Tier} = "Business"→ send to Business team Slack. - Conditional 3:
{Customer Tier} = "Starter"OR is empty → send to Starter team Slack.
Each conditional is evaluated independently. As long as your conditions are mutually exclusive, exactly one branch will fire.
Airtable doesn't have a literal "else" keyword — you express it as "all the cases not covered above." The cleanest way is an explicit condition like {Tier} != "Enterprise" AND {Tier} != "Business" for the catch-all branch.
Pattern 4: Nested Conditionals
For two-dimensional routing (region × plan tier, status × department), nest conditionals.
Setup
Conditional: Region = "EMEA"
Conditional: Plan = "Enterprise"
→ Notify EMEA Enterprise team
Conditional: Plan = "Business"
→ Notify EMEA Business team
Conditional: Region = "AMER"
Conditional: Plan = "Enterprise"
→ Notify AMER Enterprise team
Conditional: Plan = "Business"
→ Notify AMER Business team
This works for 2-by-2 or 3-by-3 routing. Beyond that, nesting becomes hard to read. Switch to Pattern 5.
Pattern 5: The Routing Table Pattern
For 10+ branches, hardcoded conditionals become unmaintainable. The right pattern is a Routing Table — a small Airtable table that defines the mapping from inputs to outputs.
Schema
A Notification Routes table:
| Customer Tier | Region | Slack Channel | Email Template |
|---|---|---|---|
| Enterprise | EMEA | #ent-emea | enterprise-emea-v2 |
| Enterprise | AMER | #ent-amer | enterprise-amer-v2 |
| Business | EMEA | #biz-emea | business-emea |
| ... | ... | ... | ... |
The automation
- Trigger: Record matches conditions.
- Find records: Notification Routes where
Customer Tier = {Trigger.Tier}ANDRegion = {Trigger.Region}. - Actions: Send Slack message to
{FoundRecord.Slack Channel}. Send email using{FoundRecord.Email Template}.
Now adding a new region or tier means adding a row to the Routing Table — no automation edit required. The automation has zero conditionals; the data drives the logic.
This is the pattern we use for any routing with more than 5 paths.
Comparison: When to Use Which Pattern
| Branches | Best Pattern |
|---|---|
| 1–2 | Simple IF/THEN |
| 3–5 | IF/ELSE-IF/ELSE stack |
| 6–10 | Nested or split into 2 automations |
| 10+ | Routing Table |
Common Mistakes
Mistake 1: Stacking 15 conditionals in one automation. Unreadable, untestable, breaks under maintenance. Use the routing table pattern.
Mistake 2: Forgetting to handle empty fields. A condition {Tier} = "Enterprise" silently skips records where Tier is empty. If "empty" is a meaningful state, add a condition for it explicitly.
Mistake 3: Implicit operator precedence. A AND B OR C evaluates ambiguously. Always group with parentheses.
Mistake 4: Conditional triggers AND conditional actions for the same logic. Pick one. Trigger conditions filter what fires; action conditions branch how it runs. Mixing causes double-filtering bugs.
Mistake 5: Not testing every branch. Test runner shows which branches were entered for the test record. Confirm every branch has been hit with an appropriate test record.
Troubleshooting
Conditional skipped unexpectedly. Open the automation run history and inspect the condition's evaluated value. Empty fields, type mismatches (text "5" vs number 5), and trailing whitespace are the most common culprits.
Two mutually exclusive conditionals both fire. They weren't actually mutually exclusive. Add explicit AND NOT clauses to make them so.
Routing table returns no records. The Find filter formula is too strict or the lookup keys don't match exactly. Use formula fields to normalize keys (LOWER, TRIM) on both sides.
Conditional always evaluates false. Field references are case-sensitive. {tier} is not the same as {Tier}.
Nested conditional behaves unexpectedly. Test each level independently with the run-history view to see what each level evaluated to.
Next Steps
Conditional logic is the bridge between "one automation does one thing" and "one automation handles a real business process." Once branching is comfortable, the next steps are usually building approval workflows, multi-step processing pipelines, and intelligent routing systems.
For deeper patterns, see our Airtable automation guide, approval workflow guide, and IF statements guide. For complex routing across teams, get in touch.