Schedule a Notion content calendar to social media

Publish approved rows from a Notion calendar on time, synced back to Notion.

Intermediate⏱ ~15 minNotionContent calendarSchedulingAutomation
Schedule (15 min)Notion: get rowsFilter approved & dueCreate postSchedule postNotion: mark scheduled
⬇ Download workflow JSON
or in n8n: ⋯ menu → Import from URL and paste: https://getposta.app/assets/workflows/notion-content-calendar-to-posta.json

Keep your editorial calendar in Notion and let n8n do the publishing. Every 15 minutes this workflow reads the rows you’ve marked Approved, and for any whose scheduled time has arrived it creates and schedules the post across your connected accounts through the Posta API — then writes the status and the Posta post URL back into the same Notion row. It’s the cleanest way to manage drafts where your team already works.

How it works

  1. Schedule Trigger — runs every 15 minutes (tighten or loosen to taste).
  2. Get approved & due rows (Notion) — returns the pages in your content-calendar database.
  3. Approved & due now (Filter) — keeps only rows where Status = Approved and Scheduled At is within the next 15 minutes.
  4. Create a post (Posta) — uses the row’s Social Accounts (a multi-select of Posta account ids) and Caption to create the post as a draft.
  5. Schedule a post (Posta) — schedules that draft for the row’s Scheduled At time.
  6. Mark row Scheduled (Notion) — flips Status to Scheduled and writes the Posta post URL back. Because the row is no longer Approved, the next run skips it — so nothing posts twice.

Set up your Notion database

  • Caption (Text) — the post body.
  • Social Accounts (Multi-select) — each option’s name is a Posta social account id (grab them from the Get many social accounts Posta node).
  • Scheduled At (Date, with time) — when the post should go live.
  • Status (Select) — at least Approved and Scheduled.
  • Posta URL (URL) — written back automatically after scheduling.

Tips

  • Prefer Airtable? Swap the two Notion nodes for Airtable Search + Update record — the field mapping is identical. The Airtable trigger is mature and a common starting point.
  • Want per-platform voices? Add a Regenerate With AI checkbox column and route checked rows through an OpenAI node that rewrites the caption per network before Create a post.
  • Attaching media? Upload it to Posta first (the Upload media node) and pass the returned id via Additional Fields → Media IDs on Create post.

Ready to simplify your social media workflow?

Join creators and teams who save hours every week with Posta.