On a schedule
Remind me about Buffer posts waiting for approval
Every weekday at 10, an email lists Buffer posts still waiting for approval, oldest first, with the channel, who is waiting and when each post is due.
- Runs
- On a schedule
- Apps
- Buffer
- AI
- Not needed
- Access
- API key
Send this to your assistant
Create a ClickRuntime automation: every weekday at 10am, email me the Buffer posts waiting for approval, oldest first, with the channel, the due time and the first line, and mark any that are due within 24 hours.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Approval steps protect a brand, but they also create a queue that can stall. A contributor drafts a post for Wednesday, the approver is busy, and the post sits in "needs approval" past its slot.
This automation emails a short list of posts waiting for approval each weekday morning, oldest first, and marks anything due in the next 24 hours.
Approvers see the backlog in one place without opening Buffer, and time-sensitive posts get attention before they miss their slot.
What you get out of it
Fewer missed slots
Posts due soon are marked so they get approved in time.
One daily list
The whole backlog arrives together each weekday.
No email when clear
Nothing is sent if no posts are waiting.
Approval stays human
It reminds; it never approves.
All channels
Waiting posts from every channel are included.
How it works
What happens, step by step
Every weekday at 10am, ClickRuntime asks Buffer for posts that need approval.
It sorts them by due time and marks any due within the next 24 hours.
Each line shows the channel, the due time and the start of the post.
If nothing is waiting, no email is sent.
Before it runs live
- Connect Buffer
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Buffer steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify, report_fetched
ORG_ID = "your-organization-id"
def buffer(query, variables=None):
resp = http.post("https://api.buffer.com", json={"query": query, "variables": variables or {}},
headers={"Authorization": f"Bearer {credentials.secret('BUFFER_API_KEY')}"})
resp.raise_for_status()
return resp.json()["data"]
@on_trigger
def run(event):
edges = buffer("query($org: OrganizationId!) { posts(input: {organizationId: $org, "
"filter: {status: [needs_approval]}, sort: [{field: dueAt, direction: asc}]}, first: 100) "
"{ edges { node { text dueAt channel { name service } } } } }", {"org": ORG_ID})["posts"]["edges"]
posts = [e["node"] for e in edges]
report_fetched(len(posts))
if not posts:
return {"waiting": 0}
soon = datetime.now(timezone.utc) + timedelta(hours=24)
lines = []
for p in posts:
due = datetime.fromisoformat(p["dueAt"].replace("Z", "+00:00")) if p.get("dueAt") else None
flag = "DUE SOON · " if due and due <= soon else ""
when = f"{due:%a %d %b %H:%M}" if due else "no time set"
lines.append(f"{flag}{p['channel']['service'].title()} · {when} · {p['text'][:100]}")
notify.email_me(f"{len(posts)} Buffer posts waiting for approval", "\n".join(lines))
return {"waiting": len(posts)}FAQ
Common questions
Which Buffer plans have approvals?
Can it approve posts for me?
Can the reminder go to the approver instead of me?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get warned before a Buffer queue runs out
Each morning I hear about any Buffer channel with too few posts lined up.
See how it worksGet a weekly list of unscheduled Buffer ideas
Every Friday I get my Buffer ideas and drafts that still aren't scheduled.
See how it worksEmail me today's scheduled Buffer posts
Each morning at 8, an email lists every post Buffer will publish today across all channels, in time order, with the channel and the first lines of text.
See how it worksKeep exploring
Set up “Remind me about Buffer posts waiting for approval” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.