Skip to content
PostyDashboardFinish setupGet started

n8n social media approval workflow with Slack

This n8n social media approval workflow sends every post waiting for review to a Slack channel, waits for someone to approve or decline it there, and records the decision on the post in Posty. It uses n8n’s Schedule Trigger, the Posty community node, Remove Duplicates and Slack’s Send and Wait for Response operation.

What you need before you start

The workflow uses three credentials and one workspace setting. Set them up first and the build takes one sitting.

n8n with community nodes
An n8n instance where community nodes are allowed, with n8n-nodes-posty installed. Install the Posty node
A Posty API key
Created on Posty’s API keys page by an organization owner or admin, and stored in an n8n Posty API credential. API keys come with Growth and Accelerate.
Required approval
The workspace’s approval mode set to required approval, or team then client, so posts wait in review instead of being scheduled.
A Slack credential
A Slack app in n8n, added to the channel where reviews happen. For buttons that answer inside Slack, follow n8n’s Slack approvals setup; without it, n8n sends link buttons that open a confirmation page.

Step 1: Run the workflow on a schedule

Add a Schedule Trigger node and set it to run every 15 minutes, or at whatever delay your team accepts between a post entering review and the question reaching Slack.

A schedule is needed because the Posty node has no trigger: the workflow asks Posty what is waiting rather than being told.

Step 2: Find the posts waiting for review

Add the Posty node. Choose Resource Post and operation Get Many, then add the Status filter and select Pending Approval. If the API key reaches every workspace in your organization, choose the workspace on the node.

Each post comes out as its own item, with its id, status, scheduled time and a summary of its text.

Step 3: Skip posts you have already asked about

Without this step, every run would ask about the same posts again. Add a Remove Duplicates node, choose Remove Items Processed in Previous Executions, keep items where the value is new, and dedupe on the expression below.

Combining the id with updatedAt means a post that was edited and sent back for review counts as new and is asked about again.

Value to Dedupe On
{{ $json.id }}:{{ $json.updatedAt }}

Step 4: Ask for a decision in Slack

Add a Slack node with Resource Message and operation Send and Wait for Response. Pick the review channel and set Response Type to Approval, so the message carries approve and decline buttons.

Put what the reviewer needs in the message: the copy, when it is due and the post id. The workflow pauses here until someone answers.

Message
Review needed: {{ $json.body }}
Scheduled for: {{ $json.scheduledAt }}
Post ID: {{ $json.id }}

Step 5: Approve the post in Posty

Add an If node that checks whether the reply approved the post. On the true branch, add the Posty node with Resource Post and operation Approve, and set Post ID from the Remove Duplicates item.

Then add a Posty node with Resource Comment and operation Create on the same post, naming who approved it in Slack, so the decision has a name on it.

If condition, then Post ID
{{ $json.data.approved }}
{{ $('Remove Duplicates').item.json.id }}
Two-step approval, Harbour YogaTry it
Draft
Team Review
Client Review
Approved
Scheduled
Posted

Sunrise flow, Saturday 6am

Only your team can see it.

Step 6: Request changes when the answer is no

On the false branch, add a second Slack node with Send and Wait for Response and Response Type set to Free Text, asking what needs to change.

Then add the Posty node with Resource Post and operation Request Changes. Set Post ID as before, map the Slack reply into Feedback, and leave Visibility on Team Only.

Fernhill Outdoor: approval ruleTry it
Draft
Review
Approved
Scheduled
Posted

Spring trail range launch, Monday 9am

Only your team can see it.

Step 7: Test with one post, then activate

Create a test draft in Posty, submit it for approval, and run the workflow once by hand. Answer in Slack, then check the post’s status in Posty.

Try both answers. When both branches work, activate the workflow.

Every node in the workflow

The finished workflow, in order. Names are as n8n and the Posty node show them; rename the nodes if you like, and update the expressions that refer to them.

Schedule Trigger
Every 15 minutes, or whatever delay your team accepts.
Posty
Resource Post, operation Get Many, filter Status: Pending Approval. Pick the workspace if the key reaches the whole organization.
Remove Duplicates
Remove Items Processed in Previous Executions, keeping items where the value is new, deduped on the post id and updatedAt.
Slack
Resource Message, operation Send and Wait for Response, response type Approval.
If
Continues on true when the Slack reply approved the post.
Posty, on true
Resource Post, operation Approve, then Resource Comment, operation Create, naming who approved.
Slack, then Posty, on false
Send and Wait for Response with response type Free Text, then Resource Post, operation Request Changes, with the reply as Feedback.

Questions and answers

Can an n8n workflow approve posts for a client?
An API key approves as your team. With required approval, that completes the review and schedules the post if it has a date. With team then client approval on Accelerate, it completes your team’s stage and sends the post to the client, who approves in their own workspace.
Why does the workflow run on a schedule instead of a webhook?
The Posty node has no trigger, and Posty does not call n8n when a post enters review, so the workflow checks for new posts on a schedule. Every few minutes is well inside the API’s limit of 600 reads a minute per key.
What happens if nobody answers in Slack?
The post stays in review until someone decides, in Slack or in Posty. If someone approves it in Posty first, the Approve step in n8n fails because the post is no longer waiting for review, and the post is not changed twice.
Can I approve from somewhere other than Slack?
Yes. n8n offers Send and Wait for Response on other nodes too, such as Discord. Swap the Slack node for one of those and keep the rest of the workflow.
Which Posty plans include the API for n8n?
API keys come with Growth at $39 a month per workspace and Accelerate at $49. Both include approval workflows.

Connect n8n to your approval flow

Create a workspace on Growth or Accelerate, set required approval and create an API key for n8n. Paid plans start with a 7 day trial that needs a card and bills the plan you chose automatically unless you cancel.

Compare Posty’s plans