Intermediate~20 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Wrike logo

How to Send Wrike Task Updates to Slack with n8n

Automatically posts a formatted Slack message to the right project channel whenever a Wrike task changes status, is completed, or hits its due date.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Engineering or ops teams running 10–50 active Wrike projects who want real-time Slack alerts without anyone manually posting updates.

Not ideal for

Teams needing two-way sync — this sends Wrike events to Slack only, and won't create Wrike tasks from Slack messages.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 22-person product agency manages client sprints in Wrike across 15 active projects. Before this workflow, a project manager copy-pasted status updates into Slack twice a day — and the team regularly worked on stale info. Now, every time a task moves to In Progress, Active Review, or Completed in Wrike, the assigned Slack project channel gets an automatic message within 30 seconds, including the task name, assignee, and due date.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

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

Skip the setup

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.

Wrike account with API access enabled and permission to create webhooks (available on Business plan and above)
Wrike API token or OAuth2 credentials with scopes: wsReadWrite (to read task details via API)
Slack workspace with a bot app that has chat:write and chat:write.public OAuth scopes granted
n8n instance (self-hosted or n8n Cloud) with a publicly reachable URL so Wrike can POST webhook events to it
A mapping of Wrike project/space names to Slack channel IDs prepared in advance — the Code node uses this to route messages to the right channel

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Event TypeeventType
Task IDtaskId
Task Titletitle
Task Statusstatus
Project / Parent Folder NameparentIds
Slack Channel ID
5 optional fields▸ show
Assignee IDresponsibleIds
Assignee Name
Due Datedates.due
Task Permalinkpermalink
Changed By (User ID)authorId

Step-by-Step Setup

1

n8n Dashboard > + New Workflow

Create a new n8n workflow

Open your n8n instance and click the '+ New Workflow' button in the top-right corner of the Workflows dashboard. Give it a clear name like 'Wrike → Slack Task Notifications'. This name shows up in execution logs, so being specific saves time when debugging. You'll land on a blank canvas with a single gray 'Add first step' node in the center.

  1. 1Click '+ New Workflow' in the top-right of the Workflows list
  2. 2Click the pencil icon next to 'My workflow' and rename it to 'Wrike → Slack Task Notifications'
  3. 3Press Enter to save the name
What you should see: You see a blank workflow canvas with your chosen name in the top-left header bar.
2

Canvas > + Node > Search 'Webhook' > Webhook

Add the Webhook trigger node

Click the '+' node on the canvas, search for 'Webhook', and select it. n8n will generate a unique webhook URL — this is what Wrike will call every time a task event fires. Set the HTTP Method to POST and Authentication to None for now (you'll lock this down in the production checklist). Copy the 'Test URL' shown in the node panel — you need it in the next step.

  1. 1Click the gray '+' node on the canvas
  2. 2Type 'Webhook' in the search bar
  3. 3Select the 'Webhook' trigger node
  4. 4Set HTTP Method to 'POST'
  5. 5Click 'Copy' next to the Test URL field
What you should see: The Webhook node appears on the canvas showing a Test URL like 'https://your-n8n.domain/webhook-test/abc123'. The node is orange, indicating it is in test mode.
Common mistake — n8n generates two URLs: a Test URL and a Production URL. They are different. Wrike must point to the Production URL once you activate the workflow — the Test URL stops working after you click 'Execute Workflow'.
n8n
+
click +
search apps
Slack
SL
Slack
Add the Webhook trigger node
Slack
SL
module added
3

Wrike > Account Settings > Apps & Integrations > API > Webhooks > Create Webhook

Register the webhook in Wrike

Go to your Wrike account and navigate to Apps & Integrations, then select API. From there, open the Webhooks tab and click 'Create Webhook'. Paste the n8n Test URL into the Hook URL field. Set the event filter to include 'Task Status Changed', 'Task Completed', and 'Task Due Date Reached'. You can scope the webhook to a specific Wrike Space or leave it account-wide — scoping it to one Space keeps noise down.

  1. 1In Wrike, click your avatar in the top-right and select 'Apps & Integrations'
  2. 2Click 'Wrike API' then navigate to the 'Webhooks' tab
  3. 3Click '+ Create Webhook'
  4. 4Paste the n8n Test URL into the 'Hook URL' field
  5. 5Check the boxes for 'TaskStatusChanged', 'TaskCompleted', and 'TaskDueDateReached'
  6. 6Click 'Create' to save
What you should see: Wrike shows the new webhook in the list with a green active status indicator and the three selected event types listed.
Common mistake — Wrike sends webhook events as an array — even for a single task change. Your n8n workflow must handle items[] array input, not a single object. If you skip this, your expressions will return undefined for every field.
4

n8n Canvas > Webhook Node > Listen for Test Event

Test the webhook by triggering a Wrike task change

Switch back to n8n and click 'Listen for Test Event' inside the Webhook node. Then go to Wrike and manually change any task status — for example, move a task from New to In Progress. Within a few seconds, n8n should receive the payload and display the raw JSON in the node output panel. Expand the data to confirm you can see fields like taskId, status, title, and assigneeId.

  1. 1Click the Webhook node to open its panel
  2. 2Click the 'Listen for Test Event' button
  3. 3Switch to Wrike and change a task's status
  4. 4Return to n8n and wait for the 'Event received' confirmation
What you should see: The Webhook node shows 'Event received' with a green checkmark. You can expand the Output tab and see the raw Wrike payload including taskId, status, title, and other fields.
Common mistake — Copy the webhook URL carefully — it expires if you regenerate it, and any scenarios using the old URL will silently stop working.
n8n
▶ Run once
executed
Slack
Wrike
Wrike
🔔 notification
received
5

Canvas > + Node > Search 'Switch' > Switch

Add a Switch node to route by event type

Wrike sends all three event types to the same webhook URL. You need to route them to different message templates. Click '+' after the Webhook node and add a 'Switch' node. Set it to match on the field {{ $json.body[0].eventType }} (or {{ $json.eventType }} depending on your Wrike API version — check the actual payload from Step 4). Create three output routes: one for TaskStatusChanged, one for TaskCompleted, one for TaskDueDateReached.

  1. 1Click '+' after the Webhook node
  2. 2Search for 'Switch' and select it
  3. 3Set Mode to 'Rules'
  4. 4Add Rule 1: Value = {{ $json.body[0].eventType }}, Operation = equals, Compare value = 'TaskStatusChanged'
  5. 5Add Rule 2: Compare value = 'TaskCompleted'
  6. 6Add Rule 3: Compare value = 'TaskDueDateReached'
What you should see: The Switch node shows three labeled output connectors: one per event type. The canvas shows three separate branches extending from the Switch node.
Common mistake — Wrike wraps the webhook payload in a 'body' array. Reference fields as $json.body[0].eventType — not $json.eventType. If you see undefined outputs here, check the raw payload structure from Step 4 first.
6

Canvas > + Node > Search 'Code' > Code

Add a Code node to build the Slack message

On each Switch branch, add a 'Code' node. This is where you format the Wrike data into a clean Slack Block Kit message. You can use a single shared Code node by merging branches before it, or keep three separate Code nodes for different message templates per event type. The pro tip below has a complete working script. Paste it into the Code node's JavaScript editor, which you access by clicking 'Edit Code' inside the node panel.

  1. 1Click '+' on the TaskStatusChanged branch
  2. 2Search for 'Code' and select it
  3. 3Click 'Edit Code' to open the JavaScript editor
  4. 4Paste in the transformation script from the Pro Tip section below
  5. 5Click 'Execute node' to test with the sample data from Step 4
What you should see: The Code node output shows a JSON object containing blocks (a Slack Block Kit array), channel, and text fields with real task data substituted in — no undefined values.
Common mistake — n8n's Code node uses Node.js. Do not use fetch() or require() for external calls inside it — those go in HTTP Request nodes. Keep the Code node purely for data transformation.

Paste this into the Code node added in Step 6. It handles all three Wrike event types with distinct Block Kit templates, maps project IDs to Slack channel IDs, formats the due date, and builds the full message object that feeds directly into the Slack node's channel, text, and blocks fields.

JavaScript — Code Node// n8n Code Node — Wrike → Slack Block Kit message builder
▸ Show code
// n8n Code Node — Wrike → Slack Block Kit message builder
// Expects HTTP Request node (Step 7) output merged before this node
// $input.first().json = Wrike webhook payload body[0]

... expand to see full code

// n8n Code Node — Wrike → Slack Block Kit message builder
// Expects HTTP Request node (Step 7) output merged before this node
// $input.first().json = Wrike webhook payload body[0]
// $('HTTP Request').first().json = Wrike contact API response

const payload = $input.first().json.body[0];
const contactData = $('HTTP Request').first().json.data[0];

// Project ID → Slack Channel ID mapping — update with your own values
const channelMap = {
  'FLGH1234': 'C04LANDING23',  // #project-landing-page
  'FLGH5678': 'C04ONBOARD56',  // #project-onboarding
  'FLGH9012': 'C04LEGAL789',   // #project-legal
};

const eventType = payload.eventType;
const taskTitle = payload.title || 'Untitled Task';
const taskStatus = payload.status || 'Unknown';
const projectId = payload.parentIds?.[0] || '';
const taskPermalink = payload.permalink || 'https://www.wrike.com';
const assigneeName = contactData
  ? `${contactData.firstName} ${contactData.lastName}`
  : 'Unassigned';

// Format due date from ISO to readable string
const rawDue = payload.dates?.due;
const dueDate = rawDue
  ? new Date(rawDue).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
  : 'No due date';

// Resolve Slack channel from project ID
const channel = channelMap[projectId] || 'C04GENERAL00'; // fallback to #general

// Build event-specific header and fallback text
let headerText, fallbackText, emoji;

if (eventType === 'TaskStatusChanged') {
  emoji = '📋';
  headerText = `Status Update: ${taskStatus}`;
  fallbackText = `${emoji} Task status changed: ${taskTitle} → ${taskStatus}`;
} else if (eventType === 'TaskCompleted') {
  emoji = '✅';
  headerText = 'Task Completed';
  fallbackText = `${emoji} Completed: ${taskTitle}`;
} else if (eventType === 'TaskDueDateReached') {
  emoji = '⏰';
  headerText = 'Due Today';
  fallbackText = `${emoji} Due today: ${taskTitle}`;
} else {
  emoji = 'ℹ️';
  headerText = 'Wrike Update';
  fallbackText = `${emoji} Update on: ${taskTitle}`;
}

// Build Slack Block Kit payload
const blocks = [
  {
    type: 'header',
    text: { type: 'plain_text', text: `${emoji} ${headerText}`, emoji: true }
  },
  {
    type: 'section',
    fields: [
      { type: 'mrkdwn', text: `*Task:*\n${taskTitle}` },
      { type: 'mrkdwn', text: `*Status:*\n${taskStatus}` },
      { type: 'mrkdwn', text: `*Assigned to:*\n${assigneeName}` },
      { type: 'mrkdwn', text: `*Due:*\n${dueDate}` }
    ]
  },
  { type: 'divider' },
  {
    type: 'actions',
    elements: [
      {
        type: 'button',
        text: { type: 'plain_text', text: 'Open in Wrike', emoji: true },
        url: taskPermalink,
        action_id: 'open_wrike_task'
      }
    ]
  }
];

return [{ json: { channel, text: fallbackText, blocks } }];
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

Canvas > + Node > HTTP Request

Resolve the Wrike assignee ID to a name

Wrike webhooks send assigneeId (a string like 'IEABC123'), not the person's name. Before posting to Slack, add an HTTP Request node to call the Wrike API GET /contacts/{assigneeId} endpoint. Authenticate with your Wrike OAuth token (stored as a credential in n8n). The response includes firstName, lastName, and optionally a Slack user handle if you've configured Wrike profiles — you can use this to @mention the right person.

  1. 1Click '+' after the Webhook node but before the Code node
  2. 2Add an 'HTTP Request' node
  3. 3Set Method to GET
  4. 4Set URL to https://www.wrike.com/api/v4/contacts/{{ $json.body[0].responsibleIds[0] }}
  5. 5Set Authentication to 'Header Auth' using your Wrike API token credential
  6. 6Click 'Execute node' and confirm firstName and lastName appear in the output
What you should see: The HTTP Request node output shows a data array with firstName, lastName, and profiles fields from the Wrike contacts API.
Common mistake — Wrike calls assignees 'responsibleIds' (plural array) in webhook payloads, not 'assigneeId'. If a task has multiple assignees, responsibleIds[0] only fetches the first one. For multi-assignee tasks, you'd need an additional loop — that's out of scope here but worth knowing.

Paste this into the Code node added in Step 6. It handles all three Wrike event types with distinct Block Kit templates, maps project IDs to Slack channel IDs, formats the due date, and builds the full message object that feeds directly into the Slack node's channel, text, and blocks fields.

JavaScript — Code Node// n8n Code Node — Wrike → Slack Block Kit message builder
▸ Show code
// n8n Code Node — Wrike → Slack Block Kit message builder
// Expects HTTP Request node (Step 7) output merged before this node
// $input.first().json = Wrike webhook payload body[0]

... expand to see full code

// n8n Code Node — Wrike → Slack Block Kit message builder
// Expects HTTP Request node (Step 7) output merged before this node
// $input.first().json = Wrike webhook payload body[0]
// $('HTTP Request').first().json = Wrike contact API response

const payload = $input.first().json.body[0];
const contactData = $('HTTP Request').first().json.data[0];

// Project ID → Slack Channel ID mapping — update with your own values
const channelMap = {
  'FLGH1234': 'C04LANDING23',  // #project-landing-page
  'FLGH5678': 'C04ONBOARD56',  // #project-onboarding
  'FLGH9012': 'C04LEGAL789',   // #project-legal
};

const eventType = payload.eventType;
const taskTitle = payload.title || 'Untitled Task';
const taskStatus = payload.status || 'Unknown';
const projectId = payload.parentIds?.[0] || '';
const taskPermalink = payload.permalink || 'https://www.wrike.com';
const assigneeName = contactData
  ? `${contactData.firstName} ${contactData.lastName}`
  : 'Unassigned';

// Format due date from ISO to readable string
const rawDue = payload.dates?.due;
const dueDate = rawDue
  ? new Date(rawDue).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
  : 'No due date';

// Resolve Slack channel from project ID
const channel = channelMap[projectId] || 'C04GENERAL00'; // fallback to #general

// Build event-specific header and fallback text
let headerText, fallbackText, emoji;

if (eventType === 'TaskStatusChanged') {
  emoji = '📋';
  headerText = `Status Update: ${taskStatus}`;
  fallbackText = `${emoji} Task status changed: ${taskTitle} → ${taskStatus}`;
} else if (eventType === 'TaskCompleted') {
  emoji = '✅';
  headerText = 'Task Completed';
  fallbackText = `${emoji} Completed: ${taskTitle}`;
} else if (eventType === 'TaskDueDateReached') {
  emoji = '⏰';
  headerText = 'Due Today';
  fallbackText = `${emoji} Due today: ${taskTitle}`;
} else {
  emoji = 'ℹ️';
  headerText = 'Wrike Update';
  fallbackText = `${emoji} Update on: ${taskTitle}`;
}

// Build Slack Block Kit payload
const blocks = [
  {
    type: 'header',
    text: { type: 'plain_text', text: `${emoji} ${headerText}`, emoji: true }
  },
  {
    type: 'section',
    fields: [
      { type: 'mrkdwn', text: `*Task:*\n${taskTitle}` },
      { type: 'mrkdwn', text: `*Status:*\n${taskStatus}` },
      { type: 'mrkdwn', text: `*Assigned to:*\n${assigneeName}` },
      { type: 'mrkdwn', text: `*Due:*\n${dueDate}` }
    ]
  },
  { type: 'divider' },
  {
    type: 'actions',
    elements: [
      {
        type: 'button',
        text: { type: 'plain_text', text: 'Open in Wrike', emoji: true },
        url: taskPermalink,
        action_id: 'open_wrike_task'
      }
    ]
  }
];

return [{ json: { channel, text: fallbackText, blocks } }];
8

Canvas > + Node > Slack > Credentials > Create New > OAuth2

Connect Slack credentials in n8n

Click '+' after your Code node and add a 'Slack' node. In the node panel, click 'Credential for Slack API' and select 'Create New'. n8n will prompt you to connect via OAuth2 — click Connect, authorize the n8n app in Slack, and select the workspace. Make sure the Slack app has the chat:write and chat:write.public OAuth scopes. Without chat:write.public, the bot cannot post to channels it hasn't been explicitly invited to.

  1. 1Add a 'Slack' node after the Code node
  2. 2Set Resource to 'Message' and Operation to 'Post'
  3. 3Click 'Credential for Slack API' dropdown and select 'Create New'
  4. 4Click 'Connect my account' and authorize in the Slack OAuth window
  5. 5Confirm the workspace name appears under the credential name
What you should see: The Slack credential field shows your workspace name with a green checkmark. The node panel is ready for you to configure the channel and message fields.
Common mistake — If you see 'not_in_channel' errors later, it means your Slack bot hasn't been invited to the target channel. Run /invite @YourBotName in each project channel — this only needs to happen once per channel.
9

Canvas > Slack Node > Message > Post

Configure the Slack message fields

Inside the Slack node, set Channel to {{ $json.channel }} — this comes from your Code node output, which maps Wrike project names to Slack channel IDs. Set Text to {{ $json.text }} as the fallback. For the Blocks field, enable it and paste {{ $json.blocks }} — this sends the full Block Kit message. Toggle 'As User' to false so the message posts as your bot with a consistent name and icon.

  1. 1In the Slack node, set 'Channel' to expression mode and type {{ $json.channel }}
  2. 2Set 'Text' to {{ $json.text }}
  3. 3Toggle on 'Blocks' and set the value to {{ JSON.stringify($json.blocks) }}
  4. 4Set 'As User' to false
  5. 5Set 'Username' to 'Wrike Bot' and optionally add an icon emoji like :wrike:
What you should see: The Slack node shows no red validation errors. When you click 'Execute node', a real Slack message appears in your test channel within 5 seconds.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
10

Canvas > Workflow Settings > Error Workflow

Add error handling with an Error Trigger node

Click the three-dot menu on your workflow canvas and select 'Settings'. Enable 'Error Workflow' and point it to a separate error-handler workflow (create a new one with an Error Trigger node and a Slack node that pings #ops-alerts). This way, if the Wrike API is down or a field is missing, your team gets notified instead of silently losing updates. Without this, failed executions are invisible unless you check the Executions log manually.

  1. 1Click the three-dot menu (⋯) at the top-right of the canvas
  2. 2Select 'Settings'
  3. 3Under 'Error Workflow', click the dropdown and select '+ Create New Workflow'
  4. 4In the new workflow, add an Error Trigger node and connect it to a Slack node targeting #ops-alerts
  5. 5Save and activate the error workflow, then return to your main workflow
What you should see: Your main workflow Settings panel shows the error workflow name in the Error Workflow field. If you deliberately break a node and run a test, a message appears in #ops-alerts.
11

n8n Canvas > Webhook Node > Production URL | Wrike > Webhooks > Edit

Activate the workflow and swap to the Production URL

Before activating, go back to Wrike and edit the webhook you created in Step 3. Replace the Test URL with the Production URL from your n8n Webhook node — find it by clicking the Webhook node and toggling from 'Test URL' to 'Production URL' at the top of the panel. Then return to n8n and toggle the workflow Active switch in the top-right to ON. The workflow is now live and will process real Wrike events.

  1. 1Click the Webhook node and copy the Production URL
  2. 2Go to Wrike > Apps & Integrations > API > Webhooks
  3. 3Click Edit on your webhook and replace the Test URL with the Production URL
  4. 4Save in Wrike
  5. 5Return to n8n and click the Active toggle to ON
What you should see: The workflow canvas shows a green 'Active' badge. Change a Wrike task status and confirm the Slack message appears in your project channel within 30 seconds.
Common mistake — If you skip the URL swap and leave the Test URL in Wrike, events will appear to work during testing but stop completely once the workflow is active — the Test URL is only functional while you're in test mode inside n8n.

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

VerdictWhy n8n for this workflow

Use n8n for this if you're already self-hosting it, if your team has someone comfortable with JavaScript, or if you need the Code node's flexibility to handle Wrike's quirky payload structure. The channelMap logic, Block Kit construction, and assignee ID resolution all benefit from real code — you'd spend more time fighting around limitations in a no-code tool than just writing the 40 lines this takes. The one scenario where you'd pick something else: if your team is non-technical and needs to maintain this workflow themselves without touching code, Make handles this use case with a cleaner visual interface and the Wrike module already parses event types for you.

Cost

Cost math is simple here. Each Wrike event = 1 n8n execution. At 50 task changes per day across your projects, that's roughly 1,500 executions per month. n8n Cloud's Starter plan ($20/month) includes 2,500 executions — you're well within that. Self-hosted n8n is free with no execution limits, just server costs (a $6/month VPS handles it easily). Compare that to Zapier: the same 1,500 tasks/month = 1,500 Zap runs, which burns through the free tier (100 tasks) in two days and costs $19.99/month minimum — and that's before you account for multi-step Zaps counting extra.

Tradeoffs

Make's Wrike module fires on task events natively without a custom webhook setup — that's a 10-minute advantage over n8n's manual webhook registration. Zapier has a 'Wrike: New Task Status' trigger that's cleaner for non-coders but limited to status changes only — you'd need three separate Zaps for all three event types. Power Automate has no native Wrike connector as of mid-2024 — you'd use the HTTP action with Wrike's REST API, which is exactly what n8n does but with less flexibility in the transformation layer. Pipedream offers a Wrike event source with pre-built OAuth handling, which saves the credential setup step. n8n wins on total control: the Code node handles all three event types in one place, the Block Kit output is fully customizable, and you're not paying per-task fees at scale.

Three things you'll discover after setup. First: Wrike's 'TaskDueDateReached' webhook fires at midnight UTC on the due date — not at the start of the working day in your timezone. Your team will get notifications at 8 PM Eastern if that's your offset. Fix it by adding a Wait node to hold the message until 9 AM local time, or just set stakeholder expectations. Second: Wrike sometimes sends a TaskStatusChanged event with the same status as before when a task is edited in other ways (description changes, attachment uploads). Add a check in your Code node that compares the incoming status against a stored previous value, or your channel will see 'Status: Active → Active' messages. Third: Slack's Block Kit button elements (the 'Open in Wrike' button) don't work in DMs sent by bots — only in channel messages. If you ever extend this to notify assignees directly via DM, drop the actions block and use a plain text link instead.

Ideas for what to build next

  • Add a daily digest for overdue tasksBuild a second n8n workflow with a Schedule trigger that runs at 9 AM, queries the Wrike API for tasks past their due date, and posts a single digest message to each project channel instead of one alert per task.
  • Route urgent tasks to a dedicated #escalations channelAdd an IF node after the Switch node that checks task priority — if Wrike marks a task as 'High' or 'Urgent', route it to #escalations in addition to the project channel so nothing gets buried.
  • Log all notifications to a Google Sheet for audit trackingBranch the workflow after the Slack node and add a Google Sheets node that appends a row for every notification sent — capturing task ID, event type, channel, timestamp, and assignee for weekly reporting.

Related guides

Was this guide helpful?
Slack + Wrike overviewn8n profile →