

How to Set Up Emergency Issue Escalation with n8n
Automatically send urgent Basecamp messages to specific Slack channels or DM project managers when high-priority items are posted.
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 alerts when critical issues are posted in Basecamp projects
Not ideal for
Teams that prefer email notifications or check Basecamp regularly throughout the day
Sync type
real-timeUse case type
notificationReal-World Example
A 25-person software agency uses this to alert their #emergencies Slack channel whenever a client posts a message containing 'urgent' or 'down' in Basecamp. Before automation, project managers checked Basecamp every 30 minutes and critical client issues sat unnoticed for hours. Now urgent messages trigger immediate Slack notifications with the client name and issue details.
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 | ||
| Message Content | ||
| Project Name | ||
| Message Author | ||
| Message URL | ||
| Timestamp | ||
| Project ID | ||
| Message ID | ||
Step-by-Step Setup
Launchpad > Account Settings > Integrations
Enable Basecamp webhooks
Log into your Basecamp account and navigate to the Launchpad. Click on your account settings in the top right dropdown. Find the 'Integrations' section and enable webhook support for your account. This creates the foundation for real-time notifications.
- 1Click your avatar in the top right corner
- 2Select 'Account & Setup' from dropdown
- 3Navigate to 'Integrations' tab
- 4Toggle 'Enable webhooks' to ON
Account Settings > My Info > API Access
Create Basecamp API token
Navigate to the 'My Info' section in Basecamp settings. Scroll down to find 'API Access' and click 'Create new token'. Give it a descriptive name like 'n8n Emergency Alerts' and copy the generated token immediately. You won't be able to see it again.
- 1Click 'Create new token' button
- 2Enter name: 'n8n Emergency Alerts'
- 3Click 'Create token'
- 4Copy the token string immediately
Slack Workspace > Settings > Configure Apps > Incoming Webhooks
Set up Slack webhook URL
In Slack, go to your workspace settings and create a new incoming webhook. Choose the channel where emergency alerts should appear. Copy the webhook URL that Slack generates. This URL will receive the formatted emergency notifications from n8n.
- 1Navigate to slack.com/apps and search 'Incoming Webhooks'
- 2Click 'Add to Slack' button
- 3Select your target channel from dropdown
- 4Click 'Add Incoming Webhooks integration'
- 5Copy the webhook URL
Workflows > + > Webhook
Create new n8n workflow
Open n8n and create a fresh workflow. Add a Webhook node as your trigger by clicking the plus button and searching for 'Webhook'. Configure it to listen for POST requests from Basecamp. Set the path to something memorable like '/basecamp-emergency'.
- 1Click the '+' button to add first node
- 2Search and select 'Webhook' node
- 3Set HTTP Method to 'POST'
- 4Set Path to '/basecamp-emergency'
- 5Click 'Copy URL' to get your webhook endpoint
Nodes > Logic > If
Add message filtering logic
Connect an 'If' node after your webhook to filter for emergency keywords. Configure it to check if the message content contains words like 'urgent', 'emergency', 'down', or 'critical'. This prevents every Basecamp message from triggering alerts.
- 1Click '+' after the webhook node
- 2Select 'If' from the Logic section
- 3Set Condition to 'String' → 'Contains'
- 4Set Value 1 to '{{ $json.content }}'
- 5Set Value 2 to 'urgent,emergency,down,critical'
Credentials > + > Basecamp 3
Configure Basecamp credentials in n8n
Add a Basecamp node and configure authentication using your API token. You'll need your Basecamp account ID and the API token you created earlier. n8n will verify the connection and show available projects.
- 1Click on 'Credentials' in left sidebar
- 2Click '+ Add Credential' button
- 3Select 'Basecamp 3' from the list
- 4Enter your Account ID and API Token
- 5Click 'Test' to verify connection
Nodes > Apps > Basecamp 3
Add Basecamp data enrichment
Connect a Basecamp node to the 'true' path of your If statement. Configure it to fetch additional project details like project name and participant information. This gives you context about who posted the urgent message and which project it affects.
- 1Connect Basecamp node to 'true' output of If node
- 2Set Resource to 'Message'
- 3Set Operation to 'Get'
- 4Set Project ID to '{{ $json.project_id }}'
- 5Set Message ID to '{{ $json.id }}'
Nodes > Data > Function
Format Slack notification
Add a Function node to format your alert message. Create a rich Slack message with the project name, author, message preview, and direct links back to Basecamp. Include urgency indicators like emoji and color coding.
- 1Add Function node after Basecamp node
- 2Paste the formatting code in JavaScript mode
- 3Configure message template with project details
- 4Add Basecamp URL for click-through
Nodes > Network > HTTP Request
Connect Slack notification
Add an HTTP Request node to send the formatted message to your Slack webhook. Configure it to POST the JSON payload to your Slack webhook URL. Set the content type to application/json.
- 1Add HTTP Request node after Function node
- 2Set Method to 'POST'
- 3Set URL to your Slack webhook URL
- 4Set Body to '{{ $json.payload }}'
- 5Add header: Content-Type: application/json
External API Call
Register webhook with Basecamp
Use Basecamp's API or a tool like Postman to register your n8n webhook URL. You'll POST to the Basecamp webhooks endpoint with your project IDs and the n8n webhook URL. This tells Basecamp where to send message notifications.
- 1Open Postman or similar API client
- 2POST to https://3.basecampapi.com/YOUR_ACCOUNT/webhooks.json
- 3Include Authorization header with your token
- 4Send JSON body with payload_url and project filters
Workflow > Activate Toggle
Test and activate workflow
Activate your n8n workflow and test it by posting a message with 'urgent' in a monitored Basecamp project. Check that the Slack notification appears with proper formatting and clickable links back to Basecamp.
- 1Click the 'Inactive' toggle to activate workflow
- 2Go to Basecamp and post test message with 'urgent'
- 3Check Slack channel for notification
- 4Verify Basecamp link works in Slack message
This JavaScript code goes in your Function node to format rich Slack messages with proper emergency styling and handle HTML content from Basecamp.
JavaScript — Code Nodeconst message = $input.all()[0].json;▸ Show code
const message = $input.all()[0].json; const basecampData = $input.all()[1].json; // Strip HTML and extract plain text
... expand to see full code
const message = $input.all()[0].json;
const basecampData = $input.all()[1].json;
// Strip HTML and extract plain text
const cleanContent = message.content.replace(/<[^>]*>/g, '').trim();
// Determine urgency level based on keywords
const urgencyKeywords = {
critical: ['down', 'outage', 'critical', 'broken'],
high: ['urgent', 'emergency', 'asap', 'immediately'],
medium: ['important', 'priority', 'soon']
};
let urgencyLevel = 'medium';
let alertEmoji = '⚠️';
let messageColor = '#ff9500';
const lowerContent = cleanContent.toLowerCase();
if (urgencyKeywords.critical.some(keyword => lowerContent.includes(keyword))) {
urgencyLevel = 'critical';
alertEmoji = '🚨';
messageColor = '#ff3333';
} else if (urgencyKeywords.high.some(keyword => lowerContent.includes(keyword))) {
urgencyLevel = 'high';
alertEmoji = '🔥';
messageColor = '#ff6600';
}
// Build Basecamp URL
const basecampUrl = `https://3.basecamp.com/${basecampData.account_id}/buckets/${message.project_id}/messages/${message.id}`;
// Format timestamp
const timestamp = new Date(message.created_at).toLocaleTimeString('en-US', {
hour: 'numeric',
minute: '2-digit',
hour12: true
});
// Create rich Slack payload
const payload = {
text: `${alertEmoji} ${urgencyLevel.toUpperCase()} MESSAGE`,
attachments: [{
color: messageColor,
fields: [
{
title: 'Project',
value: basecampData.name,
short: true
},
{
title: 'Posted by',
value: message.creator.name,
short: true
},
{
title: 'Message',
value: cleanContent.substring(0, 200) + (cleanContent.length > 200 ? '...' : ''),
short: false
}
],
actions: [{
type: 'button',
text: 'View in Basecamp',
url: basecampUrl
}],
ts: Math.floor(new Date(message.created_at).getTime() / 1000)
}]
};
return { payload };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 need custom keyword detection beyond simple text matching or want to enrich alerts with additional Basecamp project data. The Function nodes let you build sophisticated urgency scoring based on message patterns, author roles, or project types. Skip n8n if you just want basic keyword alerts - Zapier handles simple Basecamp-to-Slack notifications in 3 clicks.
Running 50 emergency alerts per month costs nothing on n8n's free tier since each execution uses 2-3 operations maximum. Zapier burns through 100-150 tasks for the same volume due to multi-step enrichment, pushing you to their $20/month plan. Make handles this cheaper at high volume but lacks Basecamp's native webhook support.
Zapier wins on setup speed with pre-built Basecamp triggers that handle webhook registration automatically. Make offers better Slack formatting tools with visual message builders. Power Automate integrates better if you're already using Microsoft Teams instead of Slack. Pipedream matches n8n's flexibility but requires more JavaScript knowledge for message parsing. n8n strikes the right balance of power and usability for teams that want custom logic without complex coding.
You'll hit Basecamp's webhook delivery retries after your n8n instance restarts - they give up after 48 hours of failed attempts. Message content sometimes includes HTML formatting that breaks keyword detection unless you strip tags first. Slack's webhook rate limits kick in around 1 message per second, so batch multiple urgent messages if your team posts rapidly during incidents.
Ideas for what to build next
- →Add SMS escalation — Connect Twilio to send text messages for critical issues when Slack notifications go unread for 5+ minutes.
- →Create digest notifications — Build a daily summary workflow that reports escalation frequency and response times to project managers.
- →Integrate with ticketing — Automatically create support tickets in your helpdesk when customer-related emergencies are detected in Basecamp.
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