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.

Deterministic Code
Sprout SocialNotionMarketingOperationsData SyncContent Generation
PromptCreate

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?
No. Everything arrives in Sprout Social as a scheduled draft. Someone on your team still reviews and approves it inside Sprout before it goes out, so nothing reaches your audience unchecked.
Will the same post get pushed twice?
No. Once a row has been pushed it is marked as Scheduled and stamped with the draft it created. The next morning's run skips anything already stamped, so it is safe to rerun.
What happens to a row that is not ready yet?
Rows missing a caption or a target network are skipped and their status is left exactly as it was, so they keep showing up in your calendar as still needing work.
Do I need a particular Sprout Social plan?
Yes. Connecting outside tools to Sprout Social requires the Advanced plan or higher. On the Standard and Professional plans the connection is not available.
Can it handle images?
Yes. When a row has a link to an image, that image is pulled in and attached to the draft in the same run, so the artwork arrives together with the caption.
What if someone edits the caption in Notion after it has been pushed?
The row has already been marked as Scheduled, so later edits stay in Notion. Update the draft directly in Sprout, or clear the draft reference on the row to have it pushed again on the next run.

Related templates

Weekly voice-of-customer report from surveys and support

Every Monday, last week's survey answers and support conversations become one themed report in Notion, with the top five themes posted to Slack.

Typeform
Intercom
Notion
+2
Agentic Task
Turn 5 star Yotpo reviews into a weekly marketing content queue

Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.

Yotpo
Notion
Slack
Agentic Task
Draft incident postmortems from Statuspage every morning

Each weekday morning, turn yesterday's major incidents into ready-to-review postmortem drafts in Statuspage, Notion, and Jira.

Statuspage
Notion
Jira
Agentic Task
Plain-English security review of Tailscale access changes

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.

Tailscale
Slack Bot
Notion
Agentic Task
Monthly Vimeo performance review in Notion and Slack

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.

Vimeo
Notion
Slack Bot
Agentic Task
Early warning brief for your Sprout Social listening topics

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.

Sprout Social
Slack Bot
Linear
Agentic Task

Stop retyping captions into your scheduler.

Approve a post once in Notion and let it show up in Sprout Social ready for review.