

How to Post Wrike Standup Summaries to Slack with Power Automate
A scheduled Power Automate flow pulls active task data from Wrike each morning, formats a project status summary, and posts it to a designated Slack channel before your team's standup.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams already inside the Microsoft 365 ecosystem who manage projects in Wrike and want a daily Slack digest without anyone manually writing it.
Not ideal for
Teams that need real-time task alerts rather than a once-daily digest — use Zapier's Wrike webhook trigger for that instead.
Sync type
scheduledUse case type
notificationReal-World Example
A 22-person product team at a SaaS company runs sprints in Wrike and coordinates in Slack. Before this flow, the project manager spent 10-15 minutes each morning copying task statuses into a #standup Slack message. Now the flow fires at 8:45 AM, pulls all tasks due within 48 hours, and posts a formatted summary to #product-standup before anyone opens their laptop. The PM reclaimed 45 minutes per week.
What Will This Cost?
Drag the slider to your expected monthly volume.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Task Title | title | |
| Task Status | status | |
| Due Date | dueDate | |
5 optional fields▸ show
| Assignee IDs | responsibleIds |
| Task Permalink | permalink |
| Project / Folder Name | parentIds |
| Task Description | description |
| Priority | importance |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Scheduled cloud flow
Create a new Scheduled cloud flow
Go to make.powerautomate.com and sign in with your Microsoft 365 account. From the left sidebar, click 'My flows', then click '+ New flow' at the top of the page. Select 'Scheduled cloud flow' from the dropdown — this is the correct type because the standup summary should fire on a fixed daily schedule, not in response to an event. Give the flow a name like 'Wrike Daily Standup to Slack'.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' near the top right of the page
- 3Select 'Scheduled cloud flow' from the menu
- 4Enter a name: 'Wrike Daily Standup to Slack'
- 5Set the start time to your desired first run (e.g., 8:45 AM) and set 'Repeat every' to 1 Day
Flow canvas > + New step > Search 'Wrike' > Get tasks > Sign in
Connect your Wrike account
Click '+ New step' below the Recurrence trigger. In the action search bar, type 'Wrike' and select the Wrike connector. Choose the action 'Get tasks' (or 'Search tasks' depending on your connector version). Power Automate will prompt you to create a new Wrike connection — click 'Sign in' and authenticate with your Wrike credentials in the popup window. The connection is saved globally and reused in future steps.
- 1Click '+ New step' under the Recurrence trigger
- 2Type 'Wrike' in the search bar and press Enter
- 3Select the Wrike connector from the results
- 4Click 'Get tasks' action
- 5Click 'Sign in' and complete Wrike OAuth in the popup window
Flow canvas > Get tasks action > Folder ID field / Status field / Due Date field
Filter tasks by folder and due date
Inside the 'Get tasks' action, you need to scope the query so you only pull relevant tasks — not every task in your entire Wrike account. Set the 'Folder ID' field to the ID of your target project or folder (find this in Wrike under the folder's URL). Set 'Status' to 'Active' and configure the due date range to pull tasks due in the next 48 hours. Use Power Automate's expression editor to set the due date dynamically using the formula: addDays(utcNow(), 2).
- 1Click inside the 'Folder ID' field and paste your Wrike folder ID
- 2Set the 'Status' dropdown to 'Active'
- 3Click inside the 'Due Date Before' field and switch to the Expression tab
- 4Enter: addDays(utcNow(), 2) and click OK
- 5Leave 'Due Date After' set to utcNow() to capture tasks due between now and 48 hours from now
Flow canvas > + New step > Data Operations > Parse JSON
Parse the Wrike task response
The Wrike 'Get tasks' action returns a JSON array of task objects. You need to parse this so later steps can reference individual fields. Add a new step and search for 'Parse JSON'. In the 'Content' field, insert the 'Body' dynamic value from the Wrike step. Click 'Generate from sample' and paste a sample Wrike task response — this tells Power Automate the schema so it can surface field names like title, status, dueDate, and assignee as dynamic values downstream.
- 1Click '+ New step'
- 2Search for 'Parse JSON' under Data Operations
- 3In the 'Content' field, select 'Body' from the Wrike dynamic values panel
- 4Click 'Generate from sample'
- 5Paste a raw Wrike task JSON response and click 'Done'
Flow canvas > + New step > Variables > Initialize variable
Initialize a variable to build the message string
Before looping through tasks, you need a variable to accumulate the message text. Add a new step, search for 'Initialize variable', and create a String variable named 'StandupMessage'. Set its initial value to a header string like '*Daily Standup Summary — @{formatDateTime(utcNow(), 'dddd, MMM d')}*\n'. This gives every Slack message a date-stamped header automatically.
- 1Click '+ New step'
- 2Search 'Initialize variable' and select it
- 3Set Name to: StandupMessage
- 4Set Type to: String
- 5In the Value field, type your header using the expression: concat('*Daily Standup — ', formatDateTime(utcNow(), 'dddd, MMM d'), '*', decodeUriComponent('%0A'))
Flow canvas > + New step > Control > Apply to each
Loop through tasks and append each to the message
Add an 'Apply to each' control action. Set the 'Select an output from previous steps' field to the parsed task array from your Parse JSON step — specifically the 'data' array. Inside the loop, add an 'Append to string variable' action targeting StandupMessage. Write a template that formats each task as a single line, e.g.: • [task title] — Due: [dueDate] — Status: [status]. Use dynamic values from the Parse JSON output to fill each field.
- 1Click '+ New step' and select 'Control' > 'Apply to each'
- 2In the input field, select the 'data' array from Parse JSON dynamic values
- 3Click 'Add an action' inside the loop
- 4Search 'Append to string variable' and select it
- 5Set Name to StandupMessage and build the Value with task dynamic fields: title, dueDate, status
Flow canvas > + New step > Control > Condition
Add a condition for empty task lists
After the loop, add a 'Condition' control to check whether StandupMessage still only contains the header (meaning no tasks were found). Use the expression length(variables('StandupMessage')) and compare it to the character count of your header string. If true (no tasks), set a separate string like 'No tasks due in the next 48 hours. Great shape!' to post instead. This prevents an empty-looking Slack message on low-activity days.
- 1Click '+ New step' and select 'Control' > 'Condition'
- 2In the left field, use Expression: length(variables('StandupMessage'))
- 3Set the operator to 'is less than or equal to'
- 4In the right field, enter the character count of your header string only (count the header characters manually)
- 5In the 'If yes' branch, add 'Set variable' to override StandupMessage with your fallback text
Flow canvas > + New step > Search 'Slack' > Post message > Sign in
Connect your Slack account
After the condition block, add a new step on both branches (or after merging) and search for 'Slack' in the action picker. Select 'Post message' action. Power Automate will prompt you to create a Slack connection — click 'Sign in' and authorize the Power Automate app in your Slack workspace in the OAuth popup. You need to be a Slack admin or have permission to install apps into the workspace.
- 1Click '+ New step' after the condition block
- 2Type 'Slack' in the search bar and press Enter
- 3Select the Slack connector
- 4Choose 'Post message' action
- 5Click 'Sign in' and authorize Power Automate in the Slack OAuth popup
Flow canvas > Post message action > Channel Name / Message Text fields
Configure the Slack post with channel and message
In the 'Post message' action, set the 'Channel Name' to your standup channel (e.g., #product-standup). In the 'Message Text' field, select StandupMessage from the dynamic values panel — this inserts the full formatted summary you built in the loop. Do not hardcode the message text here; always reference the variable so the flow is reusable across days.
- 1Click the 'Channel Name' field and type or select your Slack channel (e.g., product-standup)
- 2Click the 'Message Text' field
- 3Open the dynamic values panel on the right
- 4Select 'StandupMessage' from the Variables section
- 5Leave all other fields at default unless you need threaded replies
channel: {{channel}}
ts: {{ts}}
Flow canvas > Save > Test > Manually > Run flow
Test the flow with a manual run
Before enabling the schedule, run the flow manually to validate output. Click 'Save' in the top toolbar, then click 'Test' in the top right and select 'Manually'. Power Automate will execute the flow immediately and show each step's result in a green/red run detail view. Check the Parse JSON output to confirm tasks are being returned, check the StandupMessage variable value after the loop, and verify the Slack post appears in your channel.
- 1Click 'Save' in the top toolbar
- 2Click 'Test' in the top right corner
- 3Select 'Manually' and click 'Run flow'
- 4Watch each step turn green as it runs
- 5Check your Slack channel for the posted message within 30 seconds
make.powerautomate.com > My flows > [Flow name] > Run history
Enable the schedule and monitor run history
Once the manual test passes, the Recurrence trigger takes over automatically — no extra toggle is needed. The flow is live the moment it is saved and enabled. To monitor it, go to My flows, click the flow name, and scroll down to the 28-day run history. Check the first two scheduled runs to confirm the Slack messages look correct with real production data. Set up an email notification under 'Run-only users' if you want failure alerts.
- 1Go to My flows and click your flow name
- 2Scroll to the '28-day run history' section
- 3Click into the first scheduled run after it fires
- 4Confirm all steps show green and Slack message body looks correct
- 5Optionally click 'Edit' > 'Settings' on the Recurrence trigger to adjust timezone handling
This expression block goes inside the Apply to each loop in the 'Append to string variable' action's Value field. It formats the task title, due date, priority emoji, and a clickable Wrike permalink into a single Slack-compatible line with mrkdwn formatting. Replace 'Apply_to_each' with the exact name Power Automate assigns to your loop action if it differs.
JavaScript — Code Stepconcat(▸ Show code
concat(
if(
equals(items('Apply_to_each')?['importance'], 'High'),... expand to see full code
concat(
if(
equals(items('Apply_to_each')?['importance'], 'High'),
'🔴 ',
'⚪ '
),
'*',
items('Apply_to_each')?['title'],
'*',
' — Due: ',
formatDateTime(items('Apply_to_each')?['dueDate'], 'MMM d'),
' — ',
items('Apply_to_each')?['importance'],
' | <',
items('Apply_to_each')?['permalink'],
'|View in Wrike>',
decodeUriComponent('%0A')
)Scaling Beyond 100+ tasks per Wrike folder query+ Records
If your volume exceeds 100+ tasks per Wrike folder query records, apply these adjustments.
Handle the 100-task API cap
The Power Automate Wrike connector defaults to returning 100 tasks maximum per query. If your folder has more than 100 active tasks, results are silently truncated. Add a filter for due date within 48 hours and status = Active to keep the result set well under 100 before the cap hits.
Split large projects into multiple folder queries
If you manage 5+ active Wrike projects, run a separate Get tasks action for each folder and append results to a shared array variable. This keeps each individual API call small and avoids hitting truncation limits on any single project.
Respect Wrike API rate limits
Wrike enforces a rate limit of approximately 600 requests per minute per account. A flow that runs 10 folder queries plus 20 user lookups per run is fine in isolation. If multiple Power Automate flows share the same Wrike connection, they share that limit. Add Delay actions between Wrike calls if you see throttling errors.
Keep Slack messages under 4,000 characters
Slack's API rejects messages longer than 4,000 characters in a single post. If your task list is long, add a length check on the StandupMessage variable before posting and split into two Slack messages if it exceeds 3,500 characters — leaving a buffer for safety.
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
Use Power Automate for this if your organization is already on Microsoft 365. The Wrike connector is pre-built and the Slack connector works out of the box — no custom API calls needed for the core use case. Power Automate also handles scheduled flows more reliably than free-tier Make, and the run history UI makes it easy for non-technical managers to see what happened. The one scenario where you'd pick something else: if your team needs real-time task alerts (not a daily digest), Zapier's Wrike 'New Task' trigger fires within 1-2 minutes and requires zero expression writing.
The cost math is straightforward. This flow uses approximately 5-7 actions per run (Recurrence, Get tasks, Parse JSON, Initialize variable, Apply to each with Append, Condition, Post message). At one run per day, that is roughly 210 actions per month. Power Automate's Microsoft 365 plan includes 6,000 actions per month per user — this workflow consumes less than 4% of that. If you are on the standalone Power Automate plan at $15/user/month, the flow costs essentially nothing extra. Make's free tier gives you 1,000 operations per month, which covers this workflow easily too, but Make costs $9/month to get reliable scheduling at 1-minute intervals. Power Automate wins on cost here if you already pay for Microsoft 365.
Make handles the text formatting step more elegantly — its built-in text aggregator module is purpose-built for this pattern and requires no variable initialization or expression writing. Zapier has a cleaner UI for non-technical users and the Wrike trigger setup takes half the time, but Zapier's Formatter step for building multi-line messages is clunkier than Power Automate's expressions. n8n gives you full JavaScript inside a Code node, making the message formatting trivial and the due date math flexible — it is the better choice if you want complex grouping logic across many projects. Pipedream's native Wrike + Slack integration is slicker for developers but adds cold start latency to scheduled workflows. Power Automate wins specifically when the team is Microsoft-native and nobody wants to learn a new tool.
Three things you will hit after setup. First, Wrike's dueDate field returns in ISO 8601 UTC format, but most teams set due dates without a specific time in Wrike — which means the time component is 00:00:00Z, and if your standup runs at 8 AM EST (13:00 UTC), tasks due 'today' may look like they're due 'yesterday' depending on how you format the comparison. Test your date filter expressions carefully against your actual timezone. Second, Power Automate's Slack connector does not support Slack Block Kit — you get plain text or basic mrkdwn only. If you want buttons, section dividers, or interactive elements in the standup message, you have to bypass the native connector and call Slack's API directly via an HTTP action with a JSON body. Third, if someone renames or archives the target Slack channel, the flow fails with a generic error that does not name the channel — you will spend time debugging a connection that looks healthy. Add the channel name to the flow description field so future maintainers can find it in 10 seconds.
Ideas for what to build next
- →Add a Weekly Digest Variant — Clone the flow and set the Recurrence to weekly (Monday mornings). Expand the due date window to 7 days and add a section header grouping tasks by Wrike folder so the weekly digest gives a fuller picture across all active projects.
- →Route Overdue Tasks to a Separate Slack Channel — Add a Condition action before the Slack post that checks if any task's dueDate is before utcNow(). If overdue tasks exist, post a second targeted message to a #project-escalations channel so overdue items get separate visibility from upcoming ones.
- →Write Standup Replies Back to Wrike as Comments — After the Slack post, use the Slack 'Wait for reply' pattern (or a separate flow triggered by a Slack slash command) to collect team responses and write them back to Wrike tasks as comments — closing the loop so project history stays in Wrike, not only in Slack.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup