Publish your Airtable content calendar to Facebook and Instagram
Every hour, publish anything scheduled from your Airtable content calendar to your Facebook Page and Instagram account, then mark the row as posted.
Every hour, publish anything due from my Airtable content calendar to both my Facebook Page and my Instagram account, and mark the row as posted so nothing double-publishes.
Trigger: cron, every hour.
Step 1. Call Airtable List Records on my content calendar table with a filterByFormula that returns rows where Status is "Scheduled" and Scheduled Time is less than or equal to NOW(). For each returned row, read the caption, image URL, and target platforms fields (target platforms is a multi-select or checkbox indicating Facebook and/or Instagram).
Step 2. For each row, loop through the target platforms:
If Facebook is a target: when there is an image URL, call facebook-pages Upload Page Photo with the image URL and the caption as the message. When there is no image, call facebook-pages Create Page Post with the caption as the message. Capture the returned Facebook post id.
If Instagram is a target: call instagram Create Media Container with the image URL and the caption, then call instagram Publish Media using the returned creation id. Capture the returned Instagram media id.
Step 3. Call Airtable Update Record on the same row to set Status to "Published", Published At to the current time, Facebook Post ID to the id returned by facebook-pages, and Instagram Media ID to the id returned by instagram. This is the guardrail that makes sure the same row never publishes again.
Error handling: if either platform errors while publishing a row, call Airtable Update Record to set Status to "Failed" and write the error message to a Last Error field so I can review and retry manually. Do not throw for the whole run; keep processing the other due rows.
Inputs the workflow needs from me at setup: Airtable base id, table id or name, and the exact field names for caption, image URL, target platforms, scheduled time, status, published at, Facebook post id, Instagram media id, and last error. Also the Facebook Page id and the Instagram user id to post to.
Build this as a code workflow with deterministic nodes: list due rows, branch on target platform per row, publish, then write status back.
Additional information
What does this prompt do?
- Checks your Airtable content calendar every hour for rows scheduled to publish now.
- Posts each row to Facebook Page, Instagram, or both, using the caption and image you set on the row.
- Writes the resulting post IDs and a Published status back to the row so nothing double posts.
- If a platform fails, sets the row to Failed with the error message so you can retry manually.
What do I need to use this?
- An Airtable base with a content calendar table that has caption, image URL, target platforms, scheduled time, and status fields.
- A Facebook Page you can post to.
- An Instagram Business or Creator account linked to that Page.
- A publicly reachable image URL for any post with an image.
How can I customize it?
- Change how often the workflow runs, for example every 15 minutes instead of every hour.
- Add more target platforms, like a LinkedIn column, without touching the rest of the flow.
- Route failed rows to a Slack channel instead of only marking them as Failed in Airtable.
Frequently asked questions
Does this work with a personal Facebook profile or a personal Instagram account?
What happens if a row is scheduled while the workflow is not running?
Will the same row ever get published twice?
Can I attach a video or a carousel instead of a single image?
What if my image is stored in Airtable as an attachment?
Related templates
Stop babysitting your social calendar.
Connect Airtable, Facebook, and Instagram once, and Geni publishes every scheduled post on time, hour after hour.