

How to Send Airtable Status Change Alerts to Slack with n8n
Automatically send Slack DMs to assigned team members when record status fields change in Airtable.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams that need instant notifications when project status, task status, or approval workflows change in Airtable.
Not ideal for
Teams wanting batch digest notifications or status changes that happen more than 100 times per day.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person marketing agency tracks client projects in Airtable with statuses like Draft, Review, Approved, Complete. When a project moves from Draft to Review, the assigned account manager gets a Slack DM within 30 seconds. Before automation, managers checked Airtable every few hours and delayed client feedback by half a day on average.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Record ID | ||
| Status Field | ||
| Assigned User Email | ||
| Record Name | ||
4 optional fields▸ show
| Previous Status | |
| Project Name | |
| Due Date | |
| Priority Level |
Step-by-Step Setup
Base > Automations > Create automation
Enable Airtable webhooks
Open your Airtable base and navigate to the Automations tab. You need webhook functionality to trigger n8n when records change. Airtable's webhook feature sends HTTP requests to n8n whenever your specified field changes. This replaces the old polling method that checked for changes every 5-15 minutes.
- 1Click the Automations tab in your Airtable base
- 2Click 'Create automation' button
- 3Select 'When record matches conditions' trigger
- 4Choose your table and set condition to Status field changes
Workflows > + > Add node
Create n8n workflow
Log into your n8n instance and create a new workflow. Start with a Webhook node to receive Airtable's status change notifications. The webhook URL you generate here goes back to Airtable in the next step. n8n will parse the incoming JSON payload and extract the changed record data.
- 1Click the + button to add a node
- 2Search and select 'Webhook' node
- 3Set HTTP Method to POST
- 4Copy the webhook URL from the node panel
Automations > Add action > Send webhook
Configure Airtable webhook action
Return to your Airtable automation and add a webhook action that calls n8n. Paste the webhook URL from step 2 into the URL field. Configure the JSON payload to include record ID, status field value, assigned user, and any other fields you need for the Slack message. Test the webhook connection to verify n8n receives the data.
- 1Click 'Add action' in your Airtable automation
- 2Select 'Send a webhook' action
- 3Paste your n8n webhook URL
- 4Set Method to POST and add record data to JSON payload
Credentials > + > Slack OAuth2 API
Add Slack credential
Create a Slack app credential in n8n to send direct messages. You need a bot token with chat:write and users:read scopes. The users:read scope lets you look up team members by email if your Airtable stores email addresses instead of Slack user IDs. Generate the bot token in your Slack app settings, not your workspace settings.
- 1Go to Credentials in the left sidebar
- 2Click + and search for 'Slack OAuth2 API'
- 3Enter your Slack bot token
- 4Test the connection
Add node > Code > JavaScript
Parse webhook data
Add a Code node after your webhook to clean up the incoming Airtable data. Airtable sends nested JSON with field IDs that need transformation. Extract the record ID, new status value, and assigned user information. Convert field IDs to readable field names and handle any data type conversions needed for the Slack message.
- 1Add a Code node after the webhook
- 2Select 'Run Once for All Items' mode
- 3Write JavaScript to parse the Airtable payload
- 4Return clean data structure for Slack
Add node > Slack > User > Get User by Email
Look up Slack user
Add a Slack node to find the user ID for your assigned team member. If Airtable stores email addresses, use the 'Get User by Email' operation. If it stores names, use 'List Users' and filter by display name. You need the Slack user ID (starts with U) to send direct messages, not the email or display name.
- 1Add a Slack node after the Code node
- 2Select 'User' resource and 'Get User by Email' operation
- 3Map the email field from your parsed data
- 4Use your Slack credential from step 4
Add node > Slack > Message > Post Message
Send Slack DM
Add another Slack node to send the direct message. Use the 'Post Message' operation and set the channel to the user ID from the previous step. Format your message with the record details, old vs new status, and a link back to the Airtable record. Include relevant context like project name or deadline if available in your data.
- 1Add another Slack node
- 2Select 'Message' resource and 'Post Message' operation
- 3Set Channel to the user ID from previous node
- 4Format your message text with status change details
Airtable > Your base > Change status field
Test status change
Return to Airtable and change a record's status field to trigger the workflow. Watch the n8n execution log to verify each step completes successfully. Check that the assigned user receives the Slack DM with correct information. Test with different status transitions and users to verify the mapping works consistently.
- 1Open a record in your Airtable base
- 2Change the status field value
- 3Check n8n executions page for new runs
- 4Verify Slack DM was delivered
Airtable > Automations > Toggle automation on
Activate Airtable automation
Turn on your Airtable automation to start sending webhooks for all status changes. The automation runs continuously once activated and will trigger n8n whenever matching records change. Monitor the first few executions to catch any edge cases or data format issues before rolling out to your full team.
- 1Return to your Airtable automation
- 2Click the toggle switch to activate it
- 3Confirm activation in the popup dialog
- 4Check automation run history
Add this JavaScript code to the Code node to handle missing users gracefully and format status change messages with context. Paste this after the webhook node to parse Airtable data and add fallback logic.
JavaScript — Code Node// Parse Airtable webhook payload and format for Slack▸ Show code
// Parse Airtable webhook payload and format for Slack const items = $input.all(); const results = [];
... expand to see full code
// Parse Airtable webhook payload and format for Slack
const items = $input.all();
const results = [];
for (const item of items) {
const payload = item.json;
// Extract record data from Airtable webhook
const recordId = payload.record?.id;
const fields = payload.record?.fields || {};
// Map field IDs to readable names (update these IDs for your base)
const status = fields['fldSTATUS123']; // Replace with your status field ID
const assignedEmail = fields['fldUSER456']; // Replace with your user field ID
const recordName = fields['fldNAME789']; // Replace with your name field ID
const project = fields['fldPROJ012']; // Replace with your project field ID
// Build Airtable record URL
const baseId = payload.base?.id;
const tableId = payload.table?.id;
const recordUrl = `https://airtable.com/${baseId}/${tableId}/${recordId}`;
// Format status change message with emoji
const statusEmoji = {
'Draft': '📝',
'Review': '👀',
'Approved': '✅',
'Complete': '🎉',
'Blocked': '🚫'
};
const emoji = statusEmoji[status] || '📋';
const messageText = `${emoji} ${recordName} status changed to ${status}.`;
const fullMessage = project ?
`${messageText} Project: ${project}. View: ${recordUrl}` :
`${messageText} View: ${recordUrl}`;
// Skip if missing required fields
if (!assignedEmail || !status || !recordName) {
console.log('Skipping record due to missing required fields');
continue;
}
results.push({
json: {
assigned_email: assignedEmail,
status: status,
record_name: recordName,
project: project || '',
record_url: recordUrl,
message_text: fullMessage,
record_id: recordId
}
});
}
return results;Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use n8n for this if you want real-time status notifications without monthly per-execution costs. n8n's webhook handling is instant and you control the hosting costs regardless of volume. The JavaScript code nodes let you customize message formatting beyond what Zapier's built-in formatters offer. Skip n8n if you need a managed solution — Zapier's Airtable triggers work fine for teams under 1,000 notifications per month.
This workflow costs you basically nothing after n8n hosting. Each status change triggers one execution using webhook → code → two Slack API calls. At 200 notifications per month, that's 200 executions total. Self-hosted n8n handles this for free while Zapier would cost $20/month and Make would cost $9/month for the same volume.
Zapier's Airtable integration includes a cleaner "Record Updated" trigger that filters field changes without Airtable automations, but you lose real-time speed. Make handles conditional message formatting better through its visual router system. Power Automate integrates well if you're already using Microsoft 365 but requires premium connectors for Airtable. Pipedream offers similar code flexibility to n8n but with per-execution pricing that adds up. n8n wins because you get real-time webhooks plus unlimited executions for a flat hosting fee.
You'll discover Airtable's webhook payload uses cryptic field IDs like "fldABC123" instead of readable field names. Map these correctly or your notifications will show raw IDs. Slack user lookups fail silently if email addresses don't match exactly between platforms — add fallback logic early. Status changes from Airtable's mobile app sometimes delay webhook delivery by 60+ seconds compared to web updates.
Ideas for what to build next
- →Add digest mode — Modify workflow to batch multiple status changes into hourly or daily digest messages instead of instant notifications.
- →Two-way sync feedback — Let users reply to Slack notifications to add comments or change status directly from Slack back to Airtable.
- →Escalation logic — Add time-based escalation that notifies managers if records stay in Review status longer than 24 hours.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup