BlogTutorialsHow to Publish Instagram Posts from Airtable Automatically (No Code Required)
Tutorials

How to Publish Instagram Posts from Airtable Automatically (No Code Required)

Connect Airtable to Instagram, Facebook, X, and Ghost using Storylayer. Set up your data mapping once and publish on-brand content on a schedule — no developers or manual posting required.

Storylayer Team··11 min read
How to Publish Instagram Posts from Airtable Automatically (No Code Required)

If you manage a brand that publishes the same type of content repeatedly — property listings, job postings, new products, weekly features — you already know how much time goes into turning that data into social media posts.

This guide shows you how to connect Airtable directly to Instagram, Facebook, X, and your blog using Storylayer, so that every new row in your database automatically becomes a professionally designed, AI-captioned post across all your channels.

No developers. No code. No Zapier workflows to maintain.

By the end of this guide, you'll have a live automation that works like this:

New row added to Airtable → branded graphic rendered → AI writes captions → posts to 4 channels → URLs written back to Airtable

We'll use Buy An A-Frame — a real estate curation brand — as our working example throughout.


What You'll Need

Before you start, make sure you have:

  • An Airtable account — free plan works fine
  • A Storylayer account — free to start at storylayer.ai
  • A Creatomate account — for designing your branded template
  • An Instagram Business account — personal accounts can't be connected to third-party tools
  • A Facebook Page — required for Instagram Business API access
  • Optional: X (Twitter) account, Ghost blog

Setup time: approximately 1–2 hours the first time. After that, zero time per post.


Why Airtable Is the Perfect Content Database

Most social media tools ask you to create content inside the tool itself. Storylayer takes the opposite approach — your data lives in Airtable, where you already manage it, and Storylayer reads from it automatically.

This matters because:

  • Your team already uses Airtable. No new tools to learn for adding content.
  • Airtable is flexible. Any type of structured data — listings, products, events, jobs — works.
  • You stay in control. Check a box to publish. Uncheck to pause. The data is always yours.
  • Full audit trail. Storylayer writes post URLs back to Airtable so you can see exactly what's been published and when.

Step 1: Set Up Your Airtable Base

Your Airtable base is the foundation of the entire automation. Every piece of content that appears in your posts comes from here.

The columns you need

At minimum, your base needs:

Your content data — whatever is unique per post. For Buy An A-Frame, this is:

| Column | Type | Example | |---|---|---| | Address | Single line text | 26222 SE 152nd St | | City | Single line text | Issaquah | | State | Single line text | WA | | Full Location | Formula | Issaquah, Washington | | Price | Currency | $1,599,000 | | BD | Number | 2 | | BA | Number | 2 | | sq. ft. | Number | 1,950 | | Year built | Single line text | Built in 1965 | | Days Listed | Number | 46 | | Image | URL | https://photos.zillow... | | Description | Long text | As featured on Dwell... |

The Storylayer control columns — these are how Storylayer knows what to post and how to report back:

| Column | Type | Purpose | |---|---|---| | Post to Storylayer | Checkbox | You check this to trigger a post | | Storylayer Posted | Checkbox | Storylayer checks this after posting | | Storylayer Posted Date | Date | Set automatically by Storylayer | | Instagram URL | URL | Written back after posting | | Facebook URL | URL | Written back after posting | | X URL | URL | Written back after posting | | Ghost URL | URL | Written back after posting | | Storylayer Error | Long text | Populated if something fails |

Important: Add the Storylayer control columns exactly as named above. Storylayer looks for these specific column names when writing back results.

How data gets into your base

You have several options — Storylayer works with all of them:

  • Manual entry — type rows in directly. Best for low-volume, high-control workflows.
  • Bardeen — a browser extension that scrapes websites (Zillow, LinkedIn, product pages) and writes to Airtable automatically. This is what Buy An A-Frame uses to pull listings from Zillow.
  • Zapier or Make — connect any app or API to Airtable as the data source.
  • Airtable forms — let team members or external sources submit entries via a form.
  • CSV import — bulk upload from a spreadsheet.

The key point: Storylayer doesn't care how rows get into Airtable. It just watches for the checkbox.


Step 2: Design Your Branded Template in Creatomate

Storylayer uses Creatomate to render your branded graphics. You design the template once. Storylayer fills in the data fields automatically for every post.

What is Creatomate?

Creatomate is a template-based image rendering platform. Think of it like a Canva template, but instead of you manually updating the text and images each time, an automation does it for you.

You design a template with named text boxes and image placeholders. When Storylayer sends data from Airtable, Creatomate renders a finished image in seconds.

Designing your template

  1. Go to creatomate.com and create an account
  2. Click New Template
  3. Set your canvas size:
    • Instagram / Facebook: 1080 × 1350px (4:5 portrait)
    • X / Twitter: 1200 × 675px (16:9 landscape)
  4. Design your layout — background, fonts, colors, logo, image placeholder
  5. Name every element you want Storylayer to fill in

Naming your template elements

This is the most important step. In Creatomate, click any element → Properties panel → set the Name field.

Use descriptive names that match what the field contains:

| Element | Name to use | |---|---| | Property name text | Name.text | | Price text | Price.text | | Location text | Location.text | | Main photo | Hero-Image.source | | Bedrooms text | Bedrooms.text | | Bathrooms text | Bathrooms.text | | Square footage text | Square-Feet.text | | Year built text | Year-Built.text | | Days on market text | Days-on-Market.text | | Instagram handle text | Instagram-Handle.text | | Logo image | Logo-Upload.source |

Once your template is saved, copy the Template ID from the URL or template settings. You'll need this in Storylayer.

Buy An A-Frame's template

Buy An A-Frame uses a 1080×1350px portrait template with:

  • A large hero property photo
  • The AI-generated property name in bold display type
  • The price in oversized type
  • A stats bar with beds, baths, and square footage
  • Year built and days on market
  • The month and year of posting
  • The @buyanaframe Instagram handle
  • The brand logo in the corner

Every listing gets this same layout, with different data rendered fresh from Airtable. The result is a consistent, professional-looking feed with zero design work per post.


Step 3: Connect Airtable to Storylayer

Now you connect the pieces together.

Create a new automation

In Storylayer, click Create A StoryAutomation.

The setup wizard has 5 steps:

Step 1 — Choose your channels

Select which platforms you want to post to. You can choose any combination of Instagram, Facebook, X, and Ghost. Each channel can be enabled or disabled independently at any time.

Step 2 — Connect Airtable

Select Airtable as your data source and enter:

  • Personal Access Token — from airtable.com/account → Developer Hub → Personal tokens
  • Base ID — the appXXXXXXXXX part of your Airtable URL
  • Table name — e.g. "Listings"

Storylayer connects to your base and reads all your column names automatically.

Step 3 — Map your fields

This is where you tell Storylayer which Airtable column maps to which template field.

For Buy An A-Frame:

| Template field | Airtable column | |---|---| | Name | Instagram Name | | Price | Price | | Location | Full Location | | Hero-Image | Image | | Bedrooms | BD | | Bathrooms | BA | | Square-Feet | sq. ft. | | Year-Built | Year built | | Days-on-Market | Days Listed | | Year | (auto — current year) | | Month | (auto — current month) |

As you map each field, Storylayer shows a live preview of your template with real data from your first Airtable row. You can see exactly how the finished post will look before you activate.

Step 4 — Configure your channels

For each channel, set:

  • The Creatomate template ID
  • Caption tone and style (Storylayer's AI generates captions per platform)
  • Any channel-specific settings (hashtags for Instagram, tags for Ghost, character limit for X)

Step 5 — Activate

Click Activate Automation. Storylayer will now poll your Airtable base every 5 minutes, looking for rows with "Post to Storylayer" checked and "Storylayer Posted" unchecked.


Step 4: Trigger Your First Post

Go to Airtable. Find the row you want to test. Check the Post to Storylayer checkbox.

Within 5 minutes, Storylayer will:

  1. Detect the new row in your Airtable base
  2. Pull all the field data using your field mappings
  3. Generate an AI property name (if configured)
  4. Render your Creatomate template with that row's data
  5. Generate unique AI captions for each channel
  6. Post to Instagram, Facebook, X, and Ghost simultaneously
  7. Write back the live post URLs to your Airtable row
  8. Check the Storylayer Posted checkbox

You'll see the post appear in the Storylayer content queue with links to every published post.


Step 5: Review Your Results

After your first automated post, check three things:

In Storylayer queue:

  • Does the graphic look right? Is the data correct?
  • Are all channels showing "Posted"?
  • Are the captions appropriate for each platform?

In Airtable:

  • Is "Storylayer Posted" checked?
  • Are the Instagram URL, Facebook URL, X URL, and Ghost URL columns populated with live links?

On your social channels:

  • Does the post look professional and on-brand?
  • Is the caption well-written and accurate?

If anything looks off, you can edit the caption directly in the Storylayer queue and re-post to individual channels without triggering the entire pipeline again.


What Gets Generated Automatically

Here's exactly what Storylayer creates for each Airtable record:

Instagram

  • Graphic: Your Creatomate stats card (slide 1) + property photos (slides 2–10) as a carousel
  • Caption: Editorial, 200–300 words, with hashtags and a brand disclaimer
  • Format: Multi-image carousel post

Facebook

  • Graphic: Same Creatomate stats card (no re-render — reuses the same image)
  • Caption: Same base caption, adapted for Facebook's longer-form format
  • Format: Single image post with full caption

X / Twitter

  • Graphic: Stats card (landscape crop if using X-specific template)
  • Caption: Punchy tweet under 280 characters with key stats and hashtags
  • Format: Single image tweet

Ghost Blog

  • Feature image: The Creatomate stats card
  • Title: AI-generated editorial headline
  • Body: 500–700 word article with embedded property photos
  • Tags: Auto-generated from location, property type, and features
  • Status: Published immediately

All four pieces of content are generated in a single pipeline run, from a single Airtable record, in under 5 minutes.


How to Scale the Automation

Once your first automation is running, here's how to scale it:

Make data entry automatic too

Buy An A-Frame uses Bardeen to automatically scrape new A-frame listings from Zillow and write them to Airtable on a schedule. When a new listing appears, it lands in Airtable → triggers Storylayer → posts to all channels. Zero human involvement at any step.

You can use any tool that writes to Airtable:

  • Bardeen for web scraping
  • Zapier for connecting apps
  • Make for complex data workflows
  • Airtable automations for formula-based triggers

Use approval mode for quality control

If you want to review posts before they go live, enable Approval mode in your automation settings. Posts land in the Storylayer queue as "Approved — ready to post" where you can review, edit captions, swap images, or reject posts before they publish.

Add channels over time

You can add new channels to an existing automation at any time. Storylayer will catch up historical records automatically — existing channels are skipped by the dedup system, while the new channel gets queue items for all your past records.

Monitor with the Airtable audit trail

Because Storylayer writes back to Airtable after every post, your database becomes a complete publishing record. Filter by "Storylayer Posted = true" to see everything that's been published. Filter by "Storylayer Error is not empty" to find any posts that need attention.


Common Questions

What if my Airtable column names are different? That's fine — the field mapping step in Storylayer lets you connect any column name to any template field. Your columns don't need to be named anything specific (except the Storylayer control columns).

Can I use Airtable formula fields as data sources? Yes. Storylayer reads the resolved value of formula fields. Buy An A-Frame uses a formula field for "Full Location" (City + ", " + State name) and an AI-generated field for the property name — both work perfectly.

What happens if the same row gets posted twice? Storylayer has multiple deduplication layers to prevent this. Once a record is processed for a channel, it cannot be processed again unless you manually uncheck "Storylayer Posted" in Airtable.

Can I post to multiple Instagram accounts? Yes. You can create multiple automations in Storylayer, each connected to a different Instagram account. Each automation has its own Airtable connection, template, and channel settings.

Do I need a paid Airtable plan? No. Storylayer works with Airtable's free plan. The free plan supports up to 1,000 records per base and 5 editors — more than enough to get started.


The Bottom Line

If your brand publishes structured, recurring content — listings, products, jobs, events, articles — you should not be doing it manually.

The Airtable → Storylayer pipeline takes about 2 hours to set up. After that, every new row in your database becomes a live post across every channel, automatically, with professional design and AI-written captions.

Buy An A-Frame went from 30–45 minutes per listing to zero. You can too.

Start for free at Storylayer →


Related


This guide was written based on the real Buy An A-Frame automation built on Storylayer. All posts shown were generated automatically using the pipeline described above.

Start automating today

14-day Pro trial. No credit card required.

Start free trial