Push your approved Notion content calendar into Sprout Social
Every morning, the posts you approved in Notion land in Sprout Social as scheduled drafts, with captions, images and publish times already filled in.
Every day at 6am, push my approved content calendar from Notion into Sprout Social so nobody has to retype captions.
Start by reading the calendar. Use Notion's Query a Data Source operation, which is the current replacement for the deprecated Query a Database, against my content calendar. Return only the rows where the status is Approved, the publish date falls within the next seven days, and the Sprout draft id property is still empty. For each row that comes back, read the caption, the target networks, the publish date and time, and any image URL.
Skip any row with an empty caption or no target network, and leave its status untouched so it still shows up in the calendar as needing work. Do not write anything back to a skipped row.
Where an image URL is present, call Sprout Social's Upload Media operation to fetch the image from its public URL, and attach it to the post within the same run. Uploaded media expires 24 hours after upload unless it is attached to a post, so never split the upload and the post creation across separate runs.
Resolve the target networks to profiles before creating anything. Call List Customer Profiles and map each target network named on the row to the matching connected profile. Sprout identifies post targets by customer profile id rather than by network name, so this mapping step is required. If a row names a network with no matching connected profile, skip that row and leave its status untouched as well.
Then call Create Publishing Post with the caption, the resolved profile ids, any uploaded media, and the row's publish date and time as the scheduled send time. Sprout's publishing API creates drafts only: is_draft must be true, and the delivery type only accepts SCHEDULED. The result is a scheduled draft sitting in the Sprout publishing calendar waiting for a human to approve and send it. Never describe this as publishing automatically.
Finally use Notion's Update a Page operation to write the returned draft id back onto the row's Sprout draft id property and flip its status to Scheduled. This write back, combined with the empty draft id filter in the first step, is the whole idempotency design: a row that has already been pushed will not match tomorrow's query, so the same caption never lands in Sprout twice. If creating a draft fails for a given row, leave that row completely untouched so it is picked up again on the next run.
Every step here is deterministic, so build this as a code workflow: a filtered database read, a field mapping, two creates, and a write back. There is no drafting, ranking, or judgement anywhere in the chain.
What does this prompt do?
- Checks your Notion content calendar every morning for the posts you approved for the week ahead.
- Creates a scheduled draft in Sprout Social for each one, with the caption, the publish time and the right social profiles already set.
- Pulls in the artwork from the image link on the row, so nobody re-uploads images by hand.
- Marks the row as Scheduled and records the draft it created, so the same post is never pushed twice.
What do I need to use this?
- A Notion content calendar with columns for the caption, the target networks, the publish date and time, and an image link.
- A status column on that calendar that includes Approved and Scheduled, plus a spare column to hold the Sprout draft reference.
- A Sprout Social account on the Advanced plan or higher, which is the level where outside tools are allowed to connect.
- The social profiles you want to post to already connected inside Sprout Social.
How can I customize it?
- Change what time it runs and how far ahead it looks. Seven days is the default window.
- Rename the status values if your team uses something other than Approved and Scheduled.
- Adjust how incomplete rows are treated. By default anything missing a caption or a target network is left untouched so it stays visible as needing work.
FAQs
Does this publish my posts automatically?
Will the same post get pushed twice?
What happens to a row that is not ready yet?
Do I need a particular Sprout Social plan?
Can it handle images?
What if someone edits the caption in Notion after it has been pushed?
Related templates
Every Monday, last week's survey answers and support conversations become one themed report in Notion, with the top five themes posted to Slack.
Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.
Each weekday morning, turn yesterday's major incidents into ready-to-review postmortem drafts in Statuspage, Notion, and Jira.
Every time someone edits your Tailscale access rules, get a readable summary of what changed, who changed it, and whether it made you less safe.
On the first of each month, your video library becomes a written review of what worked, what flopped, and three things to change next month.
Every weekday at 8am, get a short Slack brief on which of your tracked social topics are heating up, why it is happening, and what people are actually saying.
Stop retyping captions into your scheduler.
Approve a post once in Notion and let it show up in Sprout Social ready for review.