This workflow follows the HTTP Request → Slack recipe pattern — see all workflows that pair these two integrations.
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 →
{
"backbrief_skeleton_version": "0.1.0",
"name": "Backbrief: TaskCrafter (sub-workflow)",
"nodes": [
{
"id": "bb-webhook-trigger",
"name": "Webhook trigger",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
200,
300
],
"parameters": {
"httpMethod": "POST",
"path": "backbrief-taskcrafter",
"responseMode": "onReceived"
}
},
{
"id": "bb-normalize-webhook-payload",
"name": "Normalize webhook payload",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
400,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/00-normalize-webhook-payload.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-normalizer-body",
"name": "Build normalizer body",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/01-build-normalizer-body.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-anthropic-api-call",
"name": "Anthropic API call",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
800,
300
],
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "anthropic-version",
"value": "2023-06-01"
},
{
"name": "content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.anthropic_body) }}",
"options": {
"timeout": 180000,
"response": {
"response": {
"fullResponse": false,
"responseFormat": "json"
}
}
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "bb-parse-normalizer-response",
"name": "Parse normalizer response",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/02-parse-normalizer-response.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-rerank-body",
"name": "Build rerank body",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1400,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/04-build-semantic-rerank-body.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-if-skip-rerank",
"name": "IF skip rerank",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1600,
300
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "skip-rerank-check",
"leftValue": "={{ $json.__skip_anthropic_rerank }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
}
}
},
{
"id": "bb-anthropic-rerank-call",
"name": "Anthropic rerank call",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1800,
400
],
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "anthropic-version",
"value": "2023-06-01"
},
{
"name": "content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.anthropic_body) }}",
"options": {
"timeout": 240000,
"response": {
"response": {
"fullResponse": false,
"responseFormat": "json",
"neverError": true
}
}
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "bb-matcher-decide",
"name": "Matcher decide",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2000,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/05-matcher-decide.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-team-queries",
"name": "Build team queries",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1200,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/03a-build-team-queries.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-linear-search",
"name": "Linear search",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1300,
300
],
"parameters": {
"method": "POST",
"url": "https://api.linear.app/graphql",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({query: $json.query, variables: $json.variables}) }}",
"options": {
"timeout": 30000,
"response": {
"response": {
"fullResponse": false,
"neverError": true,
"responseFormat": "json"
}
}
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "bb-aggregate-linear-results",
"name": "Aggregate Linear results",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1400,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/03c-aggregate-linear-results.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-router",
"name": "Router",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2200,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/06-router.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-composer-body",
"name": "Build composer body",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2400,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/07-build-composer-body.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-if-skip-composer",
"name": "IF skip composer",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
2600,
300
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "skip-composer-check",
"leftValue": "={{ $json.__skip_anthropic_composer }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
}
}
},
{
"id": "bb-anthropic-composer-call",
"name": "Anthropic composer call",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
2800,
400
],
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "anthropic-version",
"value": "2023-06-01"
},
{
"name": "content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.anthropic_body) }}",
"options": {
"timeout": 180000,
"response": {
"response": {
"fullResponse": false,
"responseFormat": "json"
}
}
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "bb-parse-composer-response",
"name": "Parse composer response",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3000,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/08-parse-composer-response.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-slack-blockkit",
"name": "Build Slack BlockKit",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3200,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/09b-build-slack-blockkit.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-slack-preview-post",
"name": "Slack preview post",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3400,
300
],
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"parameters": {
"method": "POST",
"url": "https://slack.com/api/chat.postMessage",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "slackApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\n channel: $json.slack_preview_channel,\n text: $json.slack_fallback_text,\n blocks: $json.slack_blocks,\n thread_ts: $json.slack_preview_thread_ts || undefined,\n unfurl_links: false,\n unfurl_media: false,\n mrkdwn: true\n}) }}",
"options": {
"timeout": 15000,
"response": {
"response": {
"fullResponse": false,
"responseFormat": "json"
}
}
}
}
},
{
"id": "bb-save-pending-state",
"name": "Save pending state",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3600,
300
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/10-save-pending-state.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-interactivity-webhook",
"name": "Interactivity webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
240,
700
],
"parameters": {
"httpMethod": "POST",
"path": "backbrief-taskcrafter-interaction",
"responseMode": "onReceived",
"options": {
"rawBody": true,
"responseCode": {
"values": {
"responseCode": 200
}
}
}
}
},
{
"id": "bb-parse-slack-action",
"name": "Parse Slack action",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
460,
700
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/11-parse-slack-action.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-build-linear-mutation",
"name": "Build Linear mutation",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
680,
700
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/12-build-linear-mutation.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-if-has-linear-mutation",
"name": "IF has Linear mutation",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
880,
700
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "has-mut",
"leftValue": "={{ $json.__linear_mutation }}",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
}
}
},
{
"id": "bb-linear-mutation-call",
"name": "Linear mutation call",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1080,
600
],
"parameters": {
"method": "POST",
"url": "https://api.linear.app/graphql",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({query: $json.query, variables: $json.variables}) }}",
"options": {
"timeout": 30000,
"response": {
"response": {
"fullResponse": false,
"neverError": true,
"responseFormat": "json"
}
}
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "bb-merge-linear-paths",
"name": "Merge Linear paths",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
1280,
700
],
"parameters": {
"mode": "append"
}
},
{
"id": "bb-handle-result",
"name": "Handle result",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1480,
700
],
"parameters": {
"mode": "runOnceForAllItems",
"language": "javaScript",
"jsCode": "// BACKBRIEF_SKELETON_PLACEHOLDER \u2014 this node body is DEPLOYED, not imported.\n// Source of truth: pipeline/code/taskcrafter/13-handle-result-and-reply.js (rendered per tenant + secrets injected\n// by plugin/scripts/deploy-pipeline.js). A skeleton import alone is not a\n// working pipeline \u2014 the throw below makes that loud instead of silent.\nthrow new Error('Backbrief skeleton not deployed \u2014 run: node plugin/scripts/deploy-pipeline.js --import');\n"
}
},
{
"id": "bb-slack-thread-reply-result",
"name": "Slack thread reply (result)",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.4,
"position": [
1680,
700
],
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"parameters": {
"authentication": "accessToken",
"resource": "message",
"operation": "post",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.channel }}"
},
"messageType": "text",
"text": "={{ $json.thread_text || $json.ephemeral_text || '_no message_' }}",
"otherOptions": {
"mrkdwn": true,
"unfurl_links": false,
"unfurl_media": false,
"includeLinkToWorkflow": false,
"thread_ts": {
"replyValues": {
"thread_ts": "={{ $json.thread_ts || $json.message_ts }}"
}
}
}
}
}
],
"connections": {
"Webhook trigger": {
"main": [
[
{
"node": "Normalize webhook payload",
"type": "main",
"index": 0
}
]
]
},
"Build normalizer body": {
"main": [
[
{
"node": "Anthropic API call",
"type": "main",
"index": 0
}
]
]
},
"Anthropic API call": {
"main": [
[
{
"node": "Parse normalizer response",
"type": "main",
"index": 0
}
]
]
},
"Parse normalizer response": {
"main": [
[
{
"node": "Build team queries",
"type": "main",
"index": 0
}
]
]
},
"Build rerank body": {
"main": [
[
{
"node": "IF skip rerank",
"type": "main",
"index": 0
}
]
]
},
"IF skip rerank": {
"main": [
[
{
"node": "Matcher decide",
"type": "main",
"index": 0
}
],
[
{
"node": "Anthropic rerank call",
"type": "main",
"index": 0
}
]
]
},
"Anthropic rerank call": {
"main": [
[
{
"node": "Matcher decide",
"type": "main",
"index": 0
}
]
]
},
"Build team queries": {
"main": [
[
{
"node": "Linear search",
"type": "main",
"index": 0
}
]
]
},
"Linear search": {
"main": [
[
{
"node": "Aggregate Linear results",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Linear results": {
"main": [
[
{
"node": "Build rerank body",
"type": "main",
"index": 0
}
]
]
},
"Matcher decide": {
"main": [
[
{
"node": "Router",
"type": "main",
"index": 0
}
]
]
},
"Router": {
"main": [
[
{
"node": "Build composer body",
"type": "main",
"index": 0
}
]
]
},
"Build composer body": {
"main": [
[
{
"node": "IF skip composer",
"type": "main",
"index": 0
}
]
]
},
"IF skip composer": {
"main": [
[
{
"node": "Parse composer response",
"type": "main",
"index": 0
}
],
[
{
"node": "Anthropic composer call",
"type": "main",
"index": 0
}
]
]
},
"Anthropic composer call": {
"main": [
[
{
"node": "Parse composer response",
"type": "main",
"index": 0
}
]
]
},
"Parse composer response": {
"main": [
[
{
"node": "Build Slack BlockKit",
"type": "main",
"index": 0
}
]
]
},
"Normalize webhook payload": {
"main": [
[
{
"node": "Build normalizer body",
"type": "main",
"index": 0
}
]
]
},
"Build Slack BlockKit": {
"main": [
[
{
"node": "Slack preview post",
"type": "main",
"index": 0
}
]
]
},
"Slack preview post": {
"main": [
[
{
"node": "Save pending state",
"type": "main",
"index": 0
}
]
]
},
"Interactivity webhook": {
"main": [
[
{
"node": "Parse Slack action",
"type": "main",
"index": 0
}
]
]
},
"Parse Slack action": {
"main": [
[
{
"node": "Build Linear mutation",
"type": "main",
"index": 0
}
]
]
},
"Build Linear mutation": {
"main": [
[
{
"node": "IF has Linear mutation",
"type": "main",
"index": 0
}
]
]
},
"IF has Linear mutation": {
"main": [
[
{
"node": "Linear mutation call",
"type": "main",
"index": 0
}
],
[
{
"node": "Merge Linear paths",
"type": "main",
"index": 1
}
]
]
},
"Linear mutation call": {
"main": [
[
{
"node": "Merge Linear paths",
"type": "main",
"index": 0
}
]
]
},
"Merge Linear paths": {
"main": [
[
{
"node": "Handle result",
"type": "main",
"index": 0
}
]
]
},
"Handle result": {
"main": [
[
{
"node": "Slack thread reply (result)",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveExecutionProgress": true,
"saveDataSuccessExecution": "all"
}
}
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.
httpHeaderAuthslackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Backbrief: TaskCrafter (sub-workflow). Uses httpRequest, slack. Webhook trigger; 28 nodes.
Source: https://github.com/EvgenSmith/backbrief/blob/main/pipeline/workflows/taskcrafter.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.
HR teams, IT Operations, and System Administrators managing employee onboarding at scale. It’s perfect if you use Odoo 18 to trigger account requests and need Redmine + GitLab accounts created instant
This workflow is a complete, production-ready solution for recovering abandoned carts in Shopify stores using a multi-channel, multi-touch approach. It automates personalized follow-ups via Email, SMS
Backbrief: transcripts (Zoom webhook -> Slack + vault). Uses httpRequest, slack. Webhook trigger; 52 nodes.
This workflow automates end-to-end research analysis by coordinating multiple AI models—including NVIDIA NIM (Llama), OpenAI GPT-4, and Claude to analyze uploaded documents, extract insights, and gene
Are you tired of the repetitive dance between git push, creating a pull request in GitHub, updating the corresponding task in JIRA, and then manually notifying your team in Slack, or Notion?