The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"schemaVersion": 1,
"trigger": {
"id": "t_cz_risk",
"type": "webhook",
"graphCoordinates": {
"x": 0,
"y": 0
},
"appEvent": "churnzero.risk",
"options": {
"path": "/webhooks/churnzero-risk",
"method": "POST",
"authentication": "header",
"authHeaderName": "X-CZ-Token",
"responseMode": "immediately",
"enabled": true
}
},
"nodes": [
{
"id": "n_webhook",
"name": "ChurnZero Risk",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
0,
0
],
"parameters": {
"httpMethod": "POST",
"path": "churnzero-risk",
"responseMode": "onReceived",
"options": {}
}
},
{
"id": "n_extract",
"name": "Extract Risk Signal",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
240,
0
],
"parameters": {
"values": {
"string": [
{
"name": "accountName",
"value": "={{ $json.account.name }}"
},
{
"name": "score",
"value": "={{ $json.risk.score }}"
},
{
"name": "reason",
"value": "={{ $json.risk.reason }}"
}
]
}
}
},
{
"id": "n_slack",
"name": "Slack CS Leadership",
"type": "n8n-nodes-base.slack",
"typeVersion": 2,
"position": [
480,
-120
],
"parameters": {
"authentication": "oAuth2",
"resource": "message",
"operation": "post",
"channel": "={{ $vars.SLACK_CHANNEL }}",
"text": ":warning: At-risk: *{{ $json.accountName }}* (score {{ $json.score }}) \u2014 {{ $json.reason }}"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"id": "n_linear",
"name": "Linear Playbook Ticket",
"type": "n8n-nodes-base.linear",
"typeVersion": 1,
"position": [
480,
120
],
"parameters": {
"resource": "issue",
"operation": "create",
"teamId": "={{ $vars.LINEAR_TEAM_ID }}",
"title": "Run save-play: {{ $json.accountName }}",
"description": "Reason: {{ $json.reason }}\nScore: {{ $json.score }}"
},
"credentials": {
"linearApi": {
"name": "<your credential>"
}
}
},
{
"id": "n_merge",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"typeVersion": 2,
"position": [
720,
0
],
"parameters": {
"mode": "combine",
"combinationMode": "mergeByPosition"
}
},
{
"id": "n_log",
"name": "Airtable Log",
"type": "n8n-nodes-base.airtable",
"typeVersion": 2,
"position": [
960,
0
],
"parameters": {
"operation": "append",
"application": "={{ $vars.AIRTABLE_BASE }}",
"table": "RiskLog",
"fields": {
"Account": "={{ $node['Extract Risk Signal'].json.accountName }}"
}
},
"credentials": {
"airtableApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"n_webhook": {
"main": [
[
{
"node": "n_extract",
"type": "main",
"index": 0
}
]
]
},
"n_extract": {
"main": [
[
{
"node": "n_slack",
"type": "main",
"index": 0
},
{
"node": "n_linear",
"type": "main",
"index": 0
}
]
]
},
"n_slack": {
"main": [
[
{
"node": "n_merge",
"type": "main",
"index": 0
}
]
]
},
"n_linear": {
"main": [
[
{
"node": "n_merge",
"type": "main",
"index": 1
}
]
]
},
"n_merge": {
"main": [
[
{
"node": "n_log",
"type": "main",
"index": 0
}
]
]
}
},
"groups": [
{
"id": "g_main",
"title": "Main",
"graphCoordinates": {
"x": 0,
"y": 0
},
"blockIds": [
"n_webhook",
"n_extract",
"n_slack",
"n_linear",
"n_merge",
"n_log"
]
}
],
"variables": [
{
"id": "v_slack",
"name": "SLACK_CHANNEL",
"defaultValue": "#cs-leadership"
},
{
"id": "v_lin",
"name": "LINEAR_TEAM_ID",
"defaultValue": ""
},
{
"id": "v_at",
"name": "AIRTABLE_BASE",
"defaultValue": ""
}
],
"events": [],
"settings": {
"executionOrder": "v1"
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
sendGridApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Flow. Uses httpRequest, sendGrid. Scheduled trigger; 5 nodes.
Source: https://github.com/shaktisingh204/wachat/blob/0e465515a2c0fefc81bdd0da6692127e7e9bd789/templates/metabase-snapshot-email/flow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Competitor Monitor. Uses schedule, httpRequest, telegram, sendGrid. Scheduled trigger; 10 nodes.
Executive KPI Dashboard - Automated Weekly Report. Uses googleSheets, httpRequest, sendGrid, slack. Scheduled trigger; 21 nodes.
Flow. Uses httpRequest, sendGrid. Scheduled trigger; 6 nodes.
Flow. Uses mongoDb, stripe, intercom, mailchimp. Webhook trigger; 10 nodes.
[](https://youtu.be/mMEX4Zsz4XY)