Social · n8n

Schedule and Auto-Publish Instagram Posts from an Airtable Calendar

An n8n workflow that reads a content calendar in Airtable, finds posts whose scheduled time has arrived, and publishes them to Instagram via the Graph API — turning a simple spreadsheet-style calendar into a free, self-hosted Instagram scheduler your whole team can plan in.

difficulty Advancedsetup 70 minresult Posts planned in Airtable go live on Instagram automatically at their scheduled time — no third-party scheduler fees
  1. 1

    Poll the Airtable calendar

    A Schedule Trigger runs every 15 minutes. An Airtable node lists records with a filter formula AND({status}='Scheduled', {scheduled_at} <= NOW()) so you only pull posts that are due right now.

  2. 2

    Create the media container

    For each due row, an HTTP Request POSTs to https://graph.facebook.com/v19.0/YOUR_IG_USER_ID/media with image_url (the Airtable attachment URL) and the caption. Instagram returns a container ID that represents the unpublished post.

  3. 3

    Publish the container

    A second HTTP Request POSTs to https://graph.facebook.com/v19.0/YOUR_IG_USER_ID/media_publish with the creation_id from the previous step. This is the call that actually makes the post appear on your profile.

  4. 4

    Mark the row as posted

    An Airtable update node sets status to Posted and writes the returned media ID back to the row. Flipping status is what prevents the same post from publishing twice on the next poll.

  5. 5

    Handle failures gracefully

    Enable Continue on Fail on the publish nodes and add an IF that, on error, sets the Airtable status to Failed and posts the row link to Slack. Instagram containers can take a moment to process, so a failed row just gets retried or fixed — never silently lost.

Frequently asked questions

How does Instagram publishing actually work via the API?

It's a two-step process: first create a media container (POST the image URL and caption to `/media`), then publish that container (POST its ID to `/media_publish`). The workflow does both in sequence. Your image must be hosted at a public URL — Airtable attachment URLs work, or point to your own CDN.

What does the Airtable calendar need?

A table with columns for the image attachment (or URL), the caption, a `scheduled_at` datetime, and a `status` single-select (Scheduled / Posted / Failed). The workflow queries rows where status is Scheduled and scheduled_at is in the past, publishes them, then flips status to Posted so they never double-post.

Can the team collaborate without touching n8n?

That's the whole appeal. Everyone plans in Airtable — a familiar, visual calendar with grid and calendar views — while n8n runs quietly in the background. Marketers add rows, set the time, and the automation handles publishing. No one needs n8n access to schedule content.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.