Intermediate~20 min setupProductivity & CommunicationVerified April 2026
Airtable logo
Slack logo

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-time

Use case type

notification

Real-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.

/mo
505005K50K

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

Skip the setup

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.

Airtable base with Pro plan or higher for automation features
Slack workspace admin access to create bot applications
n8n instance with webhook accessibility from internet
Assigned user field in Airtable (email addresses or names)

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Click the Automations tab in your Airtable base
  2. 2Click 'Create automation' button
  3. 3Select 'When record matches conditions' trigger
  4. 4Choose your table and set condition to Status field changes
What you should see: You should see a trigger configuration panel with condition fields visible.
Common mistake — Airtable webhooks fire for ALL field changes unless you set specific conditions. Set your status field condition now to avoid spam.
2

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.

  1. 1Click the + button to add a node
  2. 2Search and select 'Webhook' node
  3. 3Set HTTP Method to POST
  4. 4Copy the webhook URL from the node panel
What you should see: You should see a webhook URL like https://your-n8n.com/webhook/abc123 in the node settings.
3

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.

  1. 1Click 'Add action' in your Airtable automation
  2. 2Select 'Send a webhook' action
  3. 3Paste your n8n webhook URL
  4. 4Set Method to POST and add record data to JSON payload
What you should see: The webhook action shows 'Configured' status and test sends should appear in n8n's execution log.
Common mistake — Airtable's webhook payload uses field IDs, not field names. You'll need to map these in n8n using the field mapping from your base schema.
4

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.

  1. 1Go to Credentials in the left sidebar
  2. 2Click + and search for 'Slack OAuth2 API'
  3. 3Enter your Slack bot token
  4. 4Test the connection
What you should see: You should see 'Connection successful' with your Slack workspace name displayed.
Common mistake — Bot tokens start with 'xoxb-' while user tokens start with 'xoxp-'. n8n needs the bot token to post messages on behalf of your app.
5

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.

  1. 1Add a Code node after the webhook
  2. 2Select 'Run Once for All Items' mode
  3. 3Write JavaScript to parse the Airtable payload
  4. 4Return clean data structure for Slack
What you should see: The code node output should show parsed fields like status, assigned_email, record_url in readable format.
Common mistake — Airtable field IDs change if you rename fields. Hard-code the current field IDs or build a dynamic mapping system.
6

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.

  1. 1Add a Slack node after the Code node
  2. 2Select 'User' resource and 'Get User by Email' operation
  3. 3Map the email field from your parsed data
  4. 4Use your Slack credential from step 4
What you should see: The node should return a user object with id field starting with 'U' like U01234ABCD.
Common mistake — Users who haven't joined your Slack workspace won't be found. Add error handling for missing users or the workflow will fail.
7

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.

  1. 1Add another Slack node
  2. 2Select 'Message' resource and 'Post Message' operation
  3. 3Set Channel to the user ID from previous node
  4. 4Format your message text with status change details
What you should see: The message should appear in the assigned user's DM with your bot, containing status change details and record link.
8

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.

  1. 1Open a record in your Airtable base
  2. 2Change the status field value
  3. 3Check n8n executions page for new runs
  4. 4Verify Slack DM was delivered
What you should see: You should see a successful execution in n8n and the assigned user should receive a formatted DM within 30 seconds.
Common mistake — Airtable automation may take 30-60 seconds to fire after field changes. This isn't an n8n delay.
n8n
▶ Run once
executed
Airtable
Slack
Slack
🔔 notification
received
9

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.

  1. 1Return to your Airtable automation
  2. 2Click the toggle switch to activate it
  3. 3Confirm activation in the popup dialog
  4. 4Check automation run history
What you should see: The automation shows 'On' status and begins logging runs when status fields change.
Common mistake — Each Airtable automation counts toward your base's monthly automation run limit. Pro plans get 25,000 runs per base.

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 modeModify workflow to batch multiple status changes into hourly or daily digest messages instead of instant notifications.
  • Two-way sync feedbackLet users reply to Slack notifications to add comments or change status directly from Slack back to Airtable.
  • Escalation logicAdd time-based escalation that notifies managers if records stay in Review status longer than 24 hours.

Related guides

Was this guide helpful?
Airtable + Slack overviewn8n profile →