n8n-integration-with-slack-google-sheets-and-email
Sub-skill of n8n: Integration with Slack, Google Sheets, and Email.
Best use case
n8n-integration-with-slack-google-sheets-and-email is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Sub-skill of n8n: Integration with Slack, Google Sheets, and Email.
Teams using n8n-integration-with-slack-google-sheets-and-email should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/integration-with-slack-google-sheets-and-email/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How n8n-integration-with-slack-google-sheets-and-email Compares
| Feature / Agent | n8n-integration-with-slack-google-sheets-and-email | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Sub-skill of n8n: Integration with Slack, Google Sheets, and Email.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Integration with Slack, Google Sheets, and Email
## Integration with Slack, Google Sheets, and Email
```json
{
"name": "Multi-Channel Notification System",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "notify",
"responseMode": "responseNode"
},
"id": "webhook",
"name": "Incoming Notification",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1.1,
"position": [240, 300]
},
{
"parameters": {
"jsCode": "// Determine notification channels\nconst payload = $input.item.json;\n\nconst channels = [];\n\n// Add channels based on priority\nif (payload.priority === 'high' || payload.priority === 'critical') {\n channels.push('slack');\n channels.push('email');\n}\n\nif (payload.log_to_sheet) {\n channels.push('sheets');\n}\n\nif (channels.length === 0) {\n channels.push('slack'); // Default\n}\n\nreturn {\n ...payload,\n channels,\n processed_at: new Date().toISOString()\n};"
},
"id": "router",
"name": "Route Notification",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [460, 300]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.channels.join(',') }}",
"operation": "contains",
"value2": "slack"
}
]
}
},
"id": "slack-filter",
"name": "Send to Slack?",
"type": "n8n-nodes-base.filter",
"typeVersion": 2,
"position": [680, 200]
},
{
"parameters": {
"channel": "={{ $json.priority === 'critical' ? '#critical-alerts' : '#notifications' }}",
"text": "=*{{ $json.title }}*\n\n{{ $json.message }}\n\nPriority: {{ $json.priority }}\nSource: {{ $json.source }}",
"attachments": [],
"otherOptions": {}
},
"id": "slack",
"name": "Post to Slack",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.1,
"position": [900, 200],
"credentials": {
"slackApi": {
"id": "3",
"name": "Slack Bot"
}
}
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.channels.join(',') }}",
"operation": "contains",
"value2": "email"
}
]
}
},
"id": "email-filter",
"name": "Send Email?",
"type": "n8n-nodes-base.filter",
"typeVersion": 2,
"position": [680, 300]
},
{
"parameters": {
"sendTo": "={{ $json.recipient_email || 'team@example.com' }}",
"subject": "=[{{ $json.priority.toUpperCase() }}] {{ $json.title }}",
"emailType": "html",
"html": "=<h2>{{ $json.title }}</h2>\n<p>{{ $json.message }}</p>\n<hr>\n<p><strong>Priority:</strong> {{ $json.priority }}</p>\n<p><strong>Source:</strong> {{ $json.source }}</p>\n<p><strong>Time:</strong> {{ $json.processed_at }}</p>"
},
"id": "email",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2.1,
"position": [900, 300],
"credentials": {
"smtp": {
"id": "5",
"name": "SMTP"
}
}
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.channels.join(',') }}",
"operation": "contains",
"value2": "sheets"
}
]
}
},
"id": "sheets-filter",
"name": "Log to Sheets?",
"type": "n8n-nodes-base.filter",
"typeVersion": 2,
"position": [680, 400]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "={{ $env.GOOGLE_SHEET_ID }}",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Notifications",
"mode": "list"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Timestamp": "={{ $json.processed_at }}",
"Title": "={{ $json.title }}",
"Message": "={{ $json.message }}",
"Priority": "={{ $json.priority }}",
"Source": "={{ $json.source }}"
}
}
},
"id": "sheets",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.1,
"position": [900, 400],
"credentials": {
"googleSheetsOAuth2Api": {
"id": "6",
"name": "Google Sheets"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ success: true, channels: $json.channels }) }}"
},
"id": "respond",
"name": "Respond",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [1120, 300]
}
],
"connections": {
"Incoming Notification": {
"main": [
[{ "node": "Route Notification", "type": "main", "index": 0 }]
]
},
"Route Notification": {
"main": [
[
{ "node": "Send to Slack?", "type": "main", "index": 0 },
{ "node": "Send Email?", "type": "main", "index": 0 },
{ "node": "Log to Sheets?", "type": "main", "index": 0 }
]
]
},
"Send to Slack?": {
"main": [
[{ "node": "Post to Slack", "type": "main", "index": 0 }]
*Content truncated — see parent skill for full reference.*Related Skills
library-evaluation-integration
Create evaluation scripts and integration tests for Python scientific libraries in the digitalmodel package. Follows the established pattern from fluids, ht, meshio, sectionproperties, and pygmt evaluations.
clean-worktree-integration-from-dirty-main
Land validated issue work from isolated worktrees when the main checkout is dirty by creating a fresh integration worktree, cherry-picking only implementation commits, re-running combined validation, and preparing push/closeout artifacts.
google-workspace
Gmail, Calendar, Drive, Contacts, Sheets, and Docs integration via Python. Uses OAuth2 with automatic token refresh. No external binaries needed — runs entirely with Google's Python client libraries in the Hermes venv.
gmail-email-to-repo-extraction
Extract structured data from Gmail inbox emails, enrich with domain-specific classification, legal-scan against deny list, commit to appropriate repo, then optionally delete originals.
hermes-ecosystem-integration
Wire Hermes into workspace-hub ecosystem — multi-repo skills, config sync, session export to learning pipeline, memory cross-pollination, skill patch tracking, and cross-machine health checks.
api-integration
Integrate offshore engineering software APIs with mock testing for OrcaFlex, AQWA, and WAMIT
llm-wiki-roadmap-integration
Integrate repo-ecosystem work into an existing llm-wiki / knowledge-roadmap issue without creating duplicate GitHub issues.
slack-gif-creator
Create custom animated GIFs for Slack reactions and celebrations. Use for team milestones, custom emoji reactions, inside jokes, and workplace fun.
mkdocs-integration-with-python-package
Sub-skill of mkdocs: Integration with Python Package (+2).
improve-integration
Sub-skill of improve: Integration.
clean-code-pre-commit-integration
Sub-skill of clean-code: Pre-commit Integration.
agent-teams-work-queue-integration
Sub-skill of agent-teams: Work Queue Integration.