AutomationFlowsSlack & Telegram › Automated Stripe Dispute Alert & Case Tracking with Slack + Clickup

Automated Stripe Dispute Alert & Case Tracking with Slack + Clickup

ByRahul Joshi @rahul08 on n8n.io

Stay ahead of payment disputes with this automated n8n workflow that integrates Stripe, Slack, and ClickUp. Perfect for finance teams, payment ops specialists, and SaaS businesses, this template fetches disputes directly from Stripe, analyzes urgency, and instantly notifies your…

Event trigger★★★★☆ complexity18 nodesHTTP RequestSlackClickUp
Slack & Telegram Trigger: Event Nodes: 18 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #8952 — we link there as the canonical source.

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 →

Download .json
{
  "id": "f9zTmUYtY72kArnG",
  "name": "Dispute Alert and Case track",
  "tags": [
    {
      "id": "BpF0Qmae1NRI1U4c",
      "name": "Dispute Management",
      "createdAt": "2025-09-23T11:26:26.687Z",
      "updatedAt": "2025-09-23T11:26:26.687Z"
    },
    {
      "id": "dgO0TsPr0SmRbCKq",
      "name": "Stripe Automation",
      "createdAt": "2025-09-23T11:26:26.712Z",
      "updatedAt": "2025-09-23T11:26:26.712Z"
    }
  ],
  "nodes": [
    {
      "id": "58fe9cc9-46d1-4f70-8d1d-cc0c0d844e26",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1328,
        736
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8409e177-a881-449b-8f03-384dcfa5da2b",
      "name": "\ud83d\udccb Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1280,
        416
      ],
      "parameters": {
        "width": 280,
        "height": 304,
        "content": "## \ud83d\udd04 WORKFLOW START\n\n**Purpose:** This workflow automatically monitors Stripe for payment disputes and creates alerts + tasks when disputes are found.\n\n**Trigger:** Manual execution (can be scheduled)\n\n**Next Step:** Fetch disputes from Stripe API"
      },
      "typeVersion": 1
    },
    {
      "id": "7d8379ef-39c1-4b8f-b78b-64a488d4eae2",
      "name": "1\ufe0f\u20e3 Fetch Stripe Disputes",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Retrieves all current payment disputes from your Stripe account. This includes disputes that customers have filed against payments.",
      "position": [
        -1056,
        736
      ],
      "parameters": {
        "url": "https://api.stripe.com/v1/disputes",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "stripeApi"
      },
      "credentials": {
        "stripeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "be8f6d05-cd3f-4ea0-a658-2ee402b92a9b",
      "name": "\ud83d\udcca Data Check Info",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1008,
        944
      ],
      "parameters": {
        "width": 260,
        "height": 332,
        "content": "## \ud83d\udd0d DATA VALIDATION\n\n**Purpose:** Checks if any disputes were found in the API response.\n\n**Logic:**\n- \u2705 TRUE: Disputes exist \u2192 Process them\n- \u274c FALSE: No disputes \u2192 Send summary notification\n\n**Why Important:** Prevents errors when no disputes exist"
      },
      "typeVersion": 1
    },
    {
      "id": "53483405-3ad7-4298-b3d2-5e9fb6e88e03",
      "name": "2\ufe0f\u20e3 Validate Disputes Data",
      "type": "n8n-nodes-base.if",
      "notes": "Checks if the Stripe API returned any disputes. If no disputes exist, workflow will notify and end gracefully.",
      "position": [
        -800,
        736
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "condition1",
              "operator": {
                "type": "boolean",
                "operation": "equal"
              },
              "leftValue": "={{ $json.data && $json.data.length > 0 }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "853ffdbf-ac1a-41dd-9c29-cd9ed36e4e37",
      "name": "\u26a0\ufe0f Priority Logic",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        304
      ],
      "parameters": {
        "width": 280,
        "height": 316,
        "content": "## \u26a1 PRIORITY ASSESSMENT\n\n**Purpose:** Determines if disputes need immediate attention.\n\n**High Priority Criteria:**\n- Status = 'needs_response'\n- Evidence deadline approaching\n- Large dispute amounts\n\n**Result:** Different notification types based on urgency"
      },
      "typeVersion": 1
    },
    {
      "id": "ed16b61a-4131-446e-aaa9-a5dae2d93dfb",
      "name": "3\ufe0f\u20e3 Determine Priority Level",
      "type": "n8n-nodes-base.if",
      "notes": "Analyzes dispute urgency. High priority disputes (needs_response status) get immediate alerts, others get standard notifications.",
      "position": [
        -368,
        640
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "condition1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data[0].status }}",
              "rightValue": "needs_response"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "99b8a90e-7421-4de5-aaa8-1b207c69fc33",
      "name": "\ud83d\udea8 Urgent Actions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        304
      ],
      "parameters": {
        "width": 280,
        "height": 300,
        "content": "## \ud83d\udea8 HIGH PRIORITY PATH\n\n**Triggers When:** \n- Dispute status = 'needs_response'\n- Immediate action required\n\n**Actions:**\n1. Send urgent Slack alert with full details\n2. Create high-priority ClickUp task\n3. Set due date to evidence deadline"
      },
      "typeVersion": 1
    },
    {
      "id": "f20b396e-13d8-4762-9378-5fe27a7b6c7a",
      "name": "4a\ufe0f\u20e3 Send Urgent Slack Alert",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends immediate alert to Slack with comprehensive dispute information. Formatted for high visibility and quick action.",
      "position": [
        -144,
        624
      ],
      "parameters": {
        "text": "=\ud83d\udea8 **HIGH PRIORITY DISPUTE ALERT** \ud83d\udea8\n\n*Dispute Details:*\n\u2022 **Amount:** {{ $json.formatted_amount }}\n\u2022 **Reason:** {{ $json.reason.charAt(0).toUpperCase() + $json.reason.slice(1) }}\n\u2022 **Status:** {{ $json.status.charAt(0).toUpperCase() + $json.status.slice(1) }}\n\u2022 **Priority:** {{ $json.priority }}\n\u2022 **Customer:** {{ $json.customer_info }}\n\n*Timeline:*\n\u2022 **Created:** {{ $json.created_date }}\n\u2022 **Evidence Due:** {{ $json.evidence_deadline }}\n\u2022 **Days Remaining:** {{ $json.days_until_deadline }} days\n\n*IDs for Reference:*\n\u2022 **Dispute ID:** `{{ $json.dispute_id }}`\n\u2022 **Charge ID:** `{{ $json.charge_id }}`\n\u2022 **Payment Intent:** `{{ $json.payment_intent_id }}`\n\n\u26a0\ufe0f Immediate action required for High Priority disputes!",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "37c7b6d3-9b83-4c89-a611-eb988d8f7523",
      "name": "5a\ufe0f\u20e3 Create Urgent ClickUp Task",
      "type": "n8n-nodes-base.clickUp",
      "notes": "Creates high-priority task in ClickUp with detailed action plan and evidence deadline as due date.",
      "position": [
        96,
        624
      ],
      "parameters": {
        "list": "901611225384",
        "name": "=\ud83d\udea8 URGENT: Dispute {{ $json.dispute_id }} - {{ $json.formatted_amount }}",
        "team": "90161261705",
        "space": "90165174252",
        "folderless": true,
        "additionalFields": {
          "status": "Open",
          "dueDate": "={{ $json.evidence_deadline }}",
          "priority": "1"
        }
      },
      "credentials": {
        "clickUpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9144129c-51ac-4fc7-bcfb-63c7076a5dfb",
      "name": "\ud83d\udcca Standard Process",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        1040
      ],
      "parameters": {
        "width": 280,
        "height": 316,
        "content": "## \ud83d\udccb REGULAR PRIORITY PATH\n\n**Triggers When:** \n- Standard dispute notifications\n- Non-urgent status\n\n**Actions:**\n1. Send standard Slack notification\n2. Create normal-priority ClickUp task\n3. Track for regular follow-up"
      },
      "typeVersion": 1
    },
    {
      "id": "874519fe-db61-42c9-894d-ae03fb65d1a0",
      "name": "4b\ufe0f\u20e3 Send Standard Slack Alert",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends standard dispute notification to Slack for non-urgent cases. Contains essential information for tracking.",
      "position": [
        -176,
        848
      ],
      "parameters": {
        "text": "=\ud83d\udccb **New Dispute Notification**\n\n*Details:*\n\u2022 **Amount:** {{ $json.formatted_amount }}\n\u2022 **Reason:** {{ $json.reason.charAt(0).toUpperCase() + $json.reason.slice(1) }}\n\u2022 **Priority:** {{ $json.priority }}\n\u2022 **Evidence Due:** {{ $json.evidence_deadline }} ({{ $json.days_until_deadline }} days)\n\u2022 **Customer:** {{ $json.customer_info }}\n\n*Reference:* `{{ $json.dispute_id }}`",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U09D7N46YLV",
          "cachedResultName": "herevivekpatidar"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "71e0651d-577e-4c10-a685-d0ba87fc27a0",
      "name": "5b\ufe0f\u20e3 Create Standard ClickUp Task",
      "type": "n8n-nodes-base.clickUp",
      "notes": "Creates standard priority task in ClickUp with appropriate priority level and comprehensive details.",
      "position": [
        112,
        848
      ],
      "parameters": {
        "list": "901611225384",
        "name": "=Dispute: {{ $json.dispute_id }} - {{ $json.formatted_amount }}",
        "team": "90161261705",
        "space": "90165174252",
        "folderless": true,
        "additionalFields": {
          "status": "To Do",
          "dueDate": "={{ $json.evidence_deadline }}",
          "priority": "={{ $json.priority === 'High' ? '1' : ($json.priority === 'Medium' ? '2' : '3') }}"
        }
      },
      "credentials": {
        "clickUpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "99c2b53a-5770-43d7-af23-c11e33c9a1ca",
      "name": "\u2705 No Action Needed",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        976
      ],
      "parameters": {
        "width": 264,
        "height": 348,
        "content": "## \u2139\ufe0f NO DISPUTES FOUND\n\n**Purpose:** Handles the case when no disputes are returned from Stripe.\n\n**Action:** \n- Sends informational message\n- Confirms workflow ran successfully\n- Provides timestamp for logging\n\n**Why Useful:** Confirms monitoring is working"
      },
      "typeVersion": 1
    },
    {
      "id": "d2afaf00-ef9a-4425-82b0-dc57f34f4424",
      "name": "6\ufe0f\u20e3 Send Status Summary",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends confirmation message when no disputes need processing. Provides audit trail of workflow execution.",
      "position": [
        -496,
        800
      ],
      "parameters": {
        "text": "=\u2139\ufe0f **Dispute Monitoring Summary**\n\n\u2022 **Total disputes found:** {{ $json.data.length }}\n\u2022 **Time:** {{ new Date().toLocaleString() }}\n\u2022 **Status:** No new disputes to process\n\nAll current disputes have been previously handled.\n\n\u2705 Monitoring system is working correctly.",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U09D7N46YLV",
          "cachedResultName": "herevivekpatidar"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b1126924-f2a8-491a-b42a-b17c66a4ef96",
      "name": "\u2699\ufe0f Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1712,
        592
      ],
      "parameters": {
        "width": 280,
        "height": 384,
        "content": "## \ud83d\ude80 AUTOMATION SETUP\n\n**How to Use:**\n1. Set up Stripe API credentials\n2. Configure Slack workspace & channels  \n3. Connect ClickUp workspace\n4. Test with manual trigger\n5. Set up schedule (recommended: every 4 hours)\n\n**Requirements:**\n- Stripe API access\n- Slack bot permissions\n- ClickUp API token"
      },
      "typeVersion": 1
    },
    {
      "id": "3264e793-2963-4a6d-aaa7-b3401bde76e5",
      "name": "\u2705 Workflow Complete",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        624
      ],
      "parameters": {
        "width": 280,
        "height": 368,
        "content": "## \ud83d\udd04 WORKFLOW COMPLETION\n\n**What Happens:**\n- Disputes are processed and tracked\n- Team is notified via Slack\n- Tasks created in ClickUp\n- Evidence deadlines set\n\n**Next Steps:**\n1. Review Slack notifications\n2. Check ClickUp tasks\n3. Respond to disputes in Stripe\n4. Monitor deadlines"
      },
      "typeVersion": 1
    },
    {
      "id": "cbf7a6c5-4829-421b-89a1-dfbe1f102c85",
      "name": "\ud83d\udd27 Format Dispute Data",
      "type": "n8n-nodes-base.code",
      "notes": "Transforms raw Stripe data into user-friendly format. Calculates priority, formats amounts, and prepares data for notifications.",
      "position": [
        -576,
        656
      ],
      "parameters": {
        "jsCode": "// Transform raw Stripe dispute data into formatted output for notifications\nconst items = $input.all();\n\nreturn items.map(item => {\n  const dispute = item.json.data[0]; // Get first dispute from array\n  \n  // Format amount with currency\n  const amount = dispute.amount / 100; // Convert from cents\n  const currency = dispute.currency.toUpperCase();\n  const formatted_amount = `${currency} ${amount.toFixed(2)}`;\n  \n  // Calculate days until evidence deadline\n  const evidenceDate = new Date(dispute.evidence_details.due_by * 1000);\n  const now = new Date();\n  const days_until_deadline = Math.ceil((evidenceDate - now) / (1000 * 60 * 60 * 24));\n  \n  // Determine priority based on days remaining and amount\n  let priority = 'Low';\n  if (days_until_deadline <= 3 || amount >= 500) {\n    priority = 'High';\n  } else if (days_until_deadline <= 7 || amount >= 100) {\n    priority = 'Medium';\n  }\n  \n  // Get customer information\n  const customer_info = dispute.charge?.billing_details?.email || \n                       dispute.charge?.customer || \n                       'Unknown customer';\n  \n  return {\n    json: {\n      ...dispute,\n      formatted_amount,\n      priority,\n      days_until_deadline,\n      evidence_deadline: evidenceDate.toLocaleDateString(),\n      created_date: new Date(dispute.created * 1000).toLocaleDateString(),\n      customer_info,\n      dispute_id: dispute.id,\n      charge_id: dispute.charge?.id || 'N/A',\n      payment_intent_id: dispute.payment_intent || 'N/A'\n    }\n  };\n});"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "31c94be9-7bf0-4cbb-8684-a5354a504073",
  "connections": {
    "\ud83d\udd27 Format Dispute Data": {
      "main": [
        [
          {
            "node": "3\ufe0f\u20e3 Determine Priority Level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1\ufe0f\u20e3 Fetch Stripe Disputes": {
      "main": [
        [
          {
            "node": "2\ufe0f\u20e3 Validate Disputes Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2\ufe0f\u20e3 Validate Disputes Data": {
      "main": [
        [
          {
            "node": "\ud83d\udd27 Format Dispute Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "6\ufe0f\u20e3 Send Status Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3\ufe0f\u20e3 Determine Priority Level": {
      "main": [
        [
          {
            "node": "4a\ufe0f\u20e3 Send Urgent Slack Alert",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "4b\ufe0f\u20e3 Send Standard Slack Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4a\ufe0f\u20e3 Send Urgent Slack Alert": {
      "main": [
        [
          {
            "node": "5a\ufe0f\u20e3 Create Urgent ClickUp Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4b\ufe0f\u20e3 Send Standard Slack Alert": {
      "main": [
        [
          {
            "node": "5b\ufe0f\u20e3 Create Standard ClickUp Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "1\ufe0f\u20e3 Fetch Stripe Disputes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Stay ahead of payment disputes with this automated n8n workflow that integrates Stripe, Slack, and ClickUp. Perfect for finance teams, payment ops specialists, and SaaS businesses, this template fetches disputes directly from Stripe, analyzes urgency, and instantly notifies your…

Source: https://n8n.io/workflows/8952/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

Track all n8n workflow failures with automatic error capture, severity classification, duplicate detection, Slack alerting, performance metrics, and log retention.

Error Trigger, HTTP Request, Slack
Slack & Telegram

Observe any n8n workflow and post rich error alerts to Slack. Uses httpRequest, n8n-nodes-org21, slack. Event-driven trigger; 11 nodes.

HTTP Request, N8N Nodes Org21, Slack
Slack & Telegram

Sends a Slack notification whenever a Trello card is moved between lists on a specific board. Message format (bolded parts): Get your API key here → Trello App Key On the same page, generate a Token (

Trello Trigger, Slack, HTTP Request
Slack & Telegram

This workflow is designed for engineering teams, project managers, and IT operations who need consistent visibility into team availability across multiple projects. It’s perfect for organizations that

HTTP Request, Execute Workflow Trigger, Slack
Slack & Telegram

This n8n workflow provides automated monitoring of Public Key Infrastructure (PKI) components including CA certificates, Certificate Revocation Lists (CRLs), and associated web services. It extracts c

Write Binary File, Execute Command, HTTP Request