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

How to Create Wrike Tasks from Slack with Power Automate

When a Slack message is flagged with a specific emoji reaction or posted in a designated channel, Power Automate instantly creates a Wrike task with the message text as the title, assigns it to the sender, and sets a due date parsed from the message.

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

Best for

Teams already on Microsoft 365 who want to capture Slack action items as Wrike tasks without switching tools or writing code.

Not ideal for

Teams who need two-way sync between Slack threads and Wrike task comments — that requires a more complex bidirectional flow.

Sync type

real-time

Use case type

routing

Real-World Example

💡

A 22-person product team at a mid-stage SaaS company used Slack for all sprint planning discussions but lost action items in thread history. Engineers missed tasks assigned verbally in #dev-standups. After setting up this flow, any message reacted with 📋 in that channel becomes a Wrike task within 90 seconds, assigned to the person who sent the message, with no manual copy-paste.

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 Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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.

Slack workspace admin access or permission to install third-party apps (required to authorize the Power Automate Slack connector)
Wrike account with permissions to create tasks in the target folder or project
Microsoft 365 account with Power Automate access (any plan that includes standard connectors — both Slack and Wrike connectors are standard tier)
Wrike folder or project ID where tasks will be created (found in the Wrike URL when you open the target folder)
Team agreement on which emoji reaction triggers task creation — communicate this to the team before turning the flow on

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Titletitle
Folder or Project IDfolderId
6 optional fields▸ show
Assignee (Wrike User ID)responsibleIds
Due Datedates/due
Task Descriptiondescription
Slack Message Permalink
Slack Channel Name
Statusstatus

Step-by-Step Setup

1

make.powerautomate.com > Create > Automated cloud flow

Open Power Automate and start a new Automated flow

Go to make.powerautomate.com and sign in with your Microsoft 365 account. Click 'Create' in the left sidebar, then select 'Automated cloud flow' from the three options shown. This flow type fires immediately when a trigger event occurs — which is what you need for real-time Slack capture. Give the flow a name like 'Slack Emoji → Wrike Task' so it's identifiable later.

  1. 1Sign in at make.powerautomate.com
  2. 2Click 'Create' in the left sidebar
  3. 3Select 'Automated cloud flow'
  4. 4Enter a flow name in the 'Flow name' field
  5. 5Click 'Skip' on the trigger picker — you'll set it manually in the next step
What you should see: You should see the flow canvas open with an empty trigger block labeled 'Add a trigger'.
Common mistake — Do not pick 'Instant cloud flow' — that requires manual button clicks. 'Automated cloud flow' is the correct type for event-driven Slack triggers.
2

Flow canvas > Add a trigger > Search 'Slack' > When a reaction is added to a message

Add the Slack trigger for a new reaction added

Click the empty trigger block on the canvas. In the connector search bar, type 'Slack' and select the Slack connector from the results. You'll see a list of available triggers — select 'When a reaction is added to a message'. This trigger fires the moment any user reacts to a Slack message, giving you a reliable, zero-polling hook into conversations.

  1. 1Click the 'Add a trigger' block on the canvas
  2. 2Type 'Slack' in the search bar
  3. 3Click the Slack connector icon
  4. 4Select 'When a reaction is added to a message' from the trigger list
What you should see: The trigger block should expand showing fields for 'Channel Name' and 'Reaction Name'.
Common mistake — The Slack connector for Power Automate uses OAuth and connects to your Slack workspace — not a webhook URL. You must authorize it against the correct workspace. If you have multiple workspaces, check the connection dropdown carefully before proceeding.
Power Automate
+
click +
search apps
Slack
SL
Slack
Add the Slack trigger for a …
Slack
SL
module added
3

Trigger block > Sign in > Slack OAuth popup > Channel Name dropdown > Reaction Name field

Connect your Slack account and configure the trigger

Click 'Sign in' inside the trigger block to authenticate the Slack connector. Power Automate will open a browser popup asking you to authorize with your Slack workspace. After authorizing, select the specific channel you want to monitor from the 'Channel Name' dropdown — for example, #dev-standups. In the 'Reaction Name' field, type the emoji name without colons, such as clipboard. Only messages reacted with that exact emoji will trigger the flow.

  1. 1Click 'Sign in' in the trigger block
  2. 2Complete Slack OAuth in the popup window
  3. 3Select your target channel from the 'Channel Name' dropdown
  4. 4Type your chosen emoji name (e.g., clipboard) in the 'Reaction Name' field
What you should see: The trigger block should show your Slack connection name, selected channel, and emoji name filled in. No red validation errors should be visible.
Common mistake — The Slack connector's 'When a reaction is added' trigger only fires for public channels and private channels the connected bot user has been explicitly invited to. If your target channel is private, add the Slack app to it first via /invite @Power Automate in Slack.
Power Automate settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Power Automate
popup window
Connected
green checkmark
4

Flow canvas > + New step > Slack > Get message

Fetch the full message text using 'Get message'

The reaction trigger only returns a message timestamp and channel — not the actual message text. You need to add a Slack action to retrieve the full message. Click '+ New step', search for Slack, and select the action 'Get message'. Map the 'Channel' field to the Channel output from your trigger and map the 'Message Timestamp' field to the Message Timestamp output from the trigger. This gives you the raw message text to use as your Wrike task title.

  1. 1Click '+ New step' below the trigger block
  2. 2Search 'Slack' and select the Slack connector
  3. 3Choose the 'Get message' action
  4. 4Click the 'Channel' field and select 'Channel' from the dynamic content panel
  5. 5Click the 'Message Timestamp' field and select 'Message Timestamp' from the dynamic content panel
What you should see: The 'Get message' action block should show both fields populated with dynamic content tokens shown as blue pills.
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.
5

Flow canvas > + New step > Built-in > Data Operation > Compose

Parse the message for due date using a Compose action

Wrike needs a due date in YYYY-MM-DD format. Rather than passing raw message text to Wrike, add a 'Compose' action to extract a date if one is mentioned in the message. In the 'Inputs' field, use the expression editor to write a formula that extracts a date substring or defaults to 7 days from now. This step makes the flow production-ready — Wrike will reject task creation without a properly formatted date if your Wrike folder requires it.

  1. 1Click '+ New step'
  2. 2Under 'Built-in', select 'Data Operation'
  3. 3Choose 'Compose'
  4. 4Click the 'Inputs' field, then click 'Expression' tab in the dynamic content panel
  5. 5Enter: formatDateTime(addDays(utcNow(), 7), 'yyyy-MM-dd')
What you should see: The Compose block should show the expression formula in the Inputs field. You can test it by clicking 'Test' — it should output a date like 2025-02-14.
Common mistake — Power Automate's formatDateTime() uses .NET format strings, not ISO standard codes. Use 'yyyy-MM-dd' (lowercase y and d) — uppercase 'YYYY' or 'DD' will produce wrong output silently.
6

Flow canvas > + New step > Slack > Get user profile

Resolve the Slack user ID to a display name

The reaction trigger returns a Slack user ID like U04XYZABC, not a human name. Wrike's 'Create task' action has an Assignees field that accepts Wrike user IDs — not Slack user IDs. For now, add another Slack action: 'Get user profile'. Map the 'User' field to the 'User' output from the trigger. This gives you the user's real name and email, which you'll use in the next step to find the matching Wrike user.

  1. 1Click '+ New step'
  2. 2Search 'Slack' and select the Slack connector
  3. 3Choose 'Get user profile'
  4. 4Map the 'User' field to the 'User' dynamic content from the reaction trigger
What you should see: The action block should show the User field populated. After a test run, this step will return fields like 'Display Name', 'Email', and 'Real Name' in the run history.
Common mistake — Wrike does not accept Slack user IDs for assignment. You must match on email. If a Wrike user's email doesn't match their Slack email exactly, assignment will silently fail and the task will be created unassigned.

Paste this expression into a Compose action placed after the 'Get message' Slack step. It extracts a date in MM/DD or MM-DD format from the message text and formats it correctly for Wrike, falling back to 7 days from now if no date is found. Reference the Compose output in the 'Create task' Due Date field using the Outputs token.

JavaScript — Code Stepif(
▸ Show code
if(
  greater(
    length(

... expand to see full code

if(
  greater(
    length(
      trim(
        replace(
          replace(body('Get_message')?['text'], '-', '/'),
          '.', '/'
        )
      )
    ),
    0
  ),
  formatDateTime(
    if(
      contains(body('Get_message')?['text'], '/'),
      concat(
        substring(body('Get_message')?['text'],
          indexOf(body('Get_message')?['text'], '/') - 2, 5
        ),
        '/', utcNow('yyyy')
      ),
      addDays(utcNow(), 7)
    ),
    'yyyy-MM-dd'
  ),
  formatDateTime(addDays(utcNow(), 7), 'yyyy-MM-dd')
)
7

Flow canvas > + New step > Wrike > Get contacts

Look up the Wrike user by email

Add the Wrike action 'Get contacts' to find the Wrike account user whose email matches the Slack user's email. Map no filter fields — this returns all contacts. You'll then use a Filter Array action in the next step to isolate the right user. Alternatively, if your team is small and stable, you can build a manual mapping table in a SharePoint list and look up the Wrike user ID directly. The Wrike connector requires an active connection — authorize it now if you haven't already.

  1. 1Click '+ New step'
  2. 2Search 'Wrike' in the connector search bar
  3. 3Select the Wrike connector
  4. 4Choose 'Get contacts' action
  5. 5Sign in to Wrike via OAuth when prompted
  6. 6Leave filter fields empty to return all contacts
What you should see: The Wrike connector block should show your Wrike account connected with a green indicator. The action has no required inputs beyond authentication.
Common mistake — Wrike's Power Automate connector returns contacts from your entire Wrike account, not just one folder or space. If your organization has hundreds of users, the response payload can be large. For teams over 200 people, consider the SharePoint lookup table approach instead.
8

Flow canvas > + New step > Built-in > Data Operation > Filter array

Filter Wrike contacts to find the matching user

Add a 'Filter array' action from the 'Data Operation' built-in group. Set the 'From' field to the 'data' array output from the 'Get contacts' Wrike action. In the filter condition, set the left side to the 'profiles/email' field from each contact item, set the operator to 'is equal to', and set the right side to the 'Email' output from the Slack 'Get user profile' step. This returns only the one Wrike contact whose email matches.

  1. 1Click '+ New step'
  2. 2Select 'Built-in' > 'Data Operation' > 'Filter array'
  3. 3Set 'From' to the 'data' array from 'Get contacts'
  4. 4Click 'Add dynamic content' in the left filter field and select 'Current item' then append '/profiles/0/email' via the expression editor
  5. 5Set the operator to 'is equal to'
  6. 6Set the right side to 'Email' from 'Get user profile'
What you should see: The Filter array block should show a condition row with both sides populated. After a test run, the output should be an array with one contact object containing the Wrike user ID.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Wrike
WR
notified
9

Flow canvas > + New step > Wrike > Create task

Create the Wrike task with mapped fields

Add the Wrike action 'Create task'. Set the 'Folder or Project ID' to the Wrike folder or project where tasks should land — you'll need to copy this ID from your Wrike URL (open the folder in Wrike, the ID is the alphanumeric string after /open/). Set the 'Title' to the 'Text' output from the Slack 'Get message' action. Set 'Due Date' to the output of your Compose action. For 'Assignees', use the expression: first(body('Filter_array'))?['id'] to pull the Wrike user ID from the filtered contacts array.

  1. 1Click '+ New step'
  2. 2Search 'Wrike' and select 'Create task'
  3. 3Paste your Wrike folder ID into 'Folder or Project ID'
  4. 4Set 'Title' to the 'Text' dynamic content from 'Get message'
  5. 5Set 'Due Date' to the 'Outputs' from the Compose action
  6. 6Click the 'Assignees' field, switch to 'Expression', and enter: first(body('Filter_array'))?['id']
What you should see: The Create task block should show all four key fields populated — Folder ID, Title, Due Date, and Assignees — with no red validation errors.
Common mistake — Wrike folder IDs are case-sensitive. Copy the ID directly from the URL — do not retype it. A single wrong character will cause a 404 from the Wrike API and the flow will fail silently if you haven't set up error handling.
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

Flow canvas > + New step > Slack > Post message

Post a Slack confirmation back to the channel

Add a final Slack action: 'Post message'. Set the 'Channel' to the same channel from your trigger. In the 'Message Text' field, write something like: '✅ Task created in Wrike: ' followed by the 'Title' from your Wrike 'Create task' response, then append the Wrike task permalink. This closes the loop — the person who added the emoji reaction sees immediate confirmation that the task was captured, without leaving Slack.

  1. 1Click '+ New step'
  2. 2Search 'Slack' and select 'Post message'
  3. 3Set 'Channel' to the Channel output from the reaction trigger
  4. 4In 'Message Text', type '✅ Task created in Wrike: ' then insert 'Title' from the Create task response
  5. 5Optionally append 'Permalink' from the Create task response if available
What you should see: After saving and testing, you should see a Slack message posted in your target channel with the Wrike task title included in the text.
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.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
11

Flow canvas > Save > Test > Manually > [trigger in Slack]

Test the flow end-to-end and turn it on

Click 'Save' in the top right, then click 'Test' and select 'Manually'. Open Slack and react to a message in your configured channel with the emoji you specified. Switch back to Power Automate — the test panel should show each step turning green as the flow runs. Check your Wrike folder to confirm the task appeared with the correct title, assignee, and due date. If all steps pass, click 'Turn on' to make the flow live.

  1. 1Click 'Save' in the top right corner
  2. 2Click 'Test', then select 'Manually'
  3. 3Click 'Test Flow'
  4. 4In Slack, react to any message in your configured channel with the configured emoji
  5. 5Return to Power Automate and watch each step complete
  6. 6Verify the task in Wrike, then click 'Turn on'
What you should see: Every step in the test panel should show a green checkmark. Your Wrike folder should contain a new task with the Slack message text as its title, assigned to the correct user, with a due date 7 days out.
Common mistake — Power Automate's test mode only captures one trigger event. If you reacted to the wrong message during the test and want to retest, you must click 'Test' again — the canvas does not re-use the previous trigger event.
Power Automate
▶ Test flow
executed
Slack
Wrike
Wrike
🔔 notification
received

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 Power Automate for this if your team is already on Microsoft 365 and your IT department controls app approvals. The Slack and Wrike connectors are both standard tier — no premium connector fees, which saves $15/user/month compared to a setup involving premium connectors. Power Automate also fits here if you want the flow managed under your organization's tenant, with connection credentials owned by a service account rather than an individual's personal Zapier or Make login. If your team has no Microsoft 365 dependency and wants faster setup, Make will build this same flow in about half the time.

Cost

Power Automate pricing for this flow: each run consumes approximately 8 actions (trigger, get message, get user profile, get contacts, filter array, compose, create task, post message). The Microsoft 365 included plan gives 6,000 flow runs per month at no extra cost. At 50 Slack reactions per day — a busy team — you're at 1,500 runs/month, well inside the free tier. If your team generates 300+ flagged messages per day, you'll approach the 6,000 limit and may need a per-user Power Automate plan at $15/user/month. Make would handle 1,000 operations for free and costs $9/month for 10,000 — meaningfully cheaper at high volume.

Tradeoffs

Zapier's equivalent is a two-Zap chain (one for the reaction, one for Wrike task creation) and its 'New Reaction Added' trigger works cleanly, but the user-ID-to-name resolution requires a third Zap step that burns through task limits fast. Make handles the entire flow in one scenario with fewer operations counted. n8n gives you full control over the user lookup logic with a Function node, and if you're self-hosting, the cost is effectively zero — the right call if your team has a developer on staff. Pipedream's Slack source triggers via true webhooks and processes faster than Power Automate's connector polling interval. Power Automate is still the right pick when the decision is made by an IT admin who wants everything inside the Microsoft tenant and auditable via the admin center.

Three things you'll hit post-setup. First, the Slack connector's 'Get message' action occasionally returns the message before Slack finishes rendering link previews, which means the text field includes raw Slack markup like <https://example.com|link text> instead of plain text — you'll need a replace() expression to clean it before it lands in Wrike as the task title. Second, Wrike's API rejects due dates in the past, so if someone reacts to a message that mentions 'yesterday' and your date parser picks it up, the task creation will fail. Add a condition that compares the parsed date to utcNow() and falls back to the default if it's in the past. Third, Power Automate's Wrike connector caches the contacts list aggressively — if a new team member joins Wrike mid-week, the 'Get contacts' action may not return them for several hours, meaning their tasks get created unassigned until the cache refreshes.

Ideas for what to build next

  • Post Wrike task updates back to SlackBuild a second flow that triggers when a Wrike task's status changes and posts the update to the originating Slack channel. This closes the loop so the team sees progress without opening Wrike.
  • Add a priority parser to the messageExtend the Compose step to detect keywords like 'urgent', 'blocking', or 'P0' in the Slack message and map them to Wrike task priority levels. This eliminates manual priority-setting after task creation.
  • Expand to multiple channels with a single flowReplace the hardcoded channel in the trigger with a condition block that maps different Slack channels to different Wrike folders — for example, #design goes to the Design project, #backend goes to the Engineering project.

Related guides

Was this guide helpful?
Slack + Wrike overviewPower Automate profile →