Airtable Integration Guide

Social Media Automation in Airtable

Turn any Airtable base into a content publishing engine. One script in an Airtable Automation pushes posts to Instagram, YouTube, TikTok, LinkedIn, X, Facebook, Threads, Pinterest, Reddit, Bluesky, Google Business, Discord, Telegram, Slack, Mastodon and WordPress in a single API call.

Why use IndReelForge inside Airtable?

Airtable is where most content teams already plan their posts β€” base columns become a natural editorial calendar. The missing piece is a way to actually publish from the row. IndReelForge fills that with a 25-line Airtable script: read the row, fire one HTTP call, write the result back. No middleware, no extra subscription, no copy-paste.

Prerequisite β€” IndReelForge setup

Three things you need from your dashboard before you wire up Airtable.

Step 1

Create a profile

In your dashboard create a profile (e.g. main). Its name becomes the user field on every API call.

Step 2

Connect socials

Open the profile and click Connect next to each network. Each profile holds one account per network.

Step 3

Generate an API key

On the API Keys page, create a key (2FA must be on). Copy it once β€” you will paste it into the Airtable script as an input variable.

Recommended base structure

Create a table called Videos with these fields. The script below assumes this layout.

FieldTypePurpose
Video NameSingle line textCaption / title
Video URLURL or AttachmentSource media
DescriptionLong textOptional secondary caption
PlatformsMulti-selecttiktok, instagram, youtube, …
StatusSingle selectPending / Approved / Uploaded / Failed
Upload DateDateWhen it was published
Platform URLsLong textReturned URLs after publish

Wire up the Automation

Five steps inside Airtable to turn the base into a publishing pipeline.

  1. 1

    Open Automations

    In your base, click the Automations icon at the top. Click "Create automation".

  2. 2

    Pick the trigger

    Use "When record matches conditions" and set the condition to Status = Approved. (Or "When record updated" if you want all changes to fire.)

  3. 3

    Add a "Run script" action

    Click + β†’ Run script. Airtable opens the script editor in the right pane.

  4. 4

    Bind input variables

    In the Inputs section add three: recordId (from the trigger), apiKey (paste your IndReelForge key once), userProfile (your profile name). The script reads them via input.config().

  5. 5

    Paste the script & test

    Drop the example script below into the editor and click "Test step". A successful run updates the row Status to "Uploaded" and writes the per-platform URLs into the Platform URLs cell.

Paste-ready script

Drop this into the Run Script action. It reads the triggering row, posts to IndReelForge, and writes the result back.

Airtable script
// Airtable β†’ IndReelForge β€” basic publish-on-status-change script
// Bind these inputs at the top of the action:
//   recordId       (Trigger record ID)
//   apiKey         (your IndReelForge API key, kept out of source)
//   userProfile    (your IndReelForge profile name)
const { recordId, apiKey, userProfile } = input.config();

const table  = base.getTable('Videos');
const record = await table.selectRecordAsync(recordId);

// Read fields from the row
const videoUrl    = record.getCellValue('Video URL');
const title       = record.getCellValue('Video Name');
const description = record.getCellValue('Description') || '';
const platforms   = (record.getCellValue('Platforms') || []).map(p => p.name);

if (!videoUrl) throw new Error('Missing Video URL');
if (platforms.length === 0) throw new Error('Pick at least one platform');

// Build form-data payload β€” IndReelForge accepts video_url for remote files
const form = new FormData();
form.append('video_url', typeof videoUrl === 'string' ? videoUrl : videoUrl[0].url);
form.append('user',      userProfile);
form.append('title',     title);
if (description) form.append('description', description);
platforms.forEach(p => form.append('platform[]', p));

// Fire the call
const res = await fetch('https://api.indreelforge.com/api/upload', {
  method: 'POST',
  headers: { Authorization: `Apikey ${apiKey}` },
  body: form,
});
const data = await res.json();

// Write the result back to the same row
await table.updateRecordAsync(record, {
  Status:        data.success ? 'Uploaded' : 'Failed',
  'Upload Date': new Date(),
  'Platform URLs': JSON.stringify(data.platform_statuses || {}, null, 2),
});

Pro tip β€” use video_url for big files

Airtable scripts can't stream large binaries. Store the video as an attachment (or paste a public URL) and pass it as video_url. IndReelForge fetches and processes the file server-side.

Security β€” bind the key as an input

Never paste the API key into the script body β€” bind it as an Input variable on the action. The literal key stays in the workspace settings, not in the script source you might copy elsewhere.

Auto-update the row

The example script writes the per-platform result back into the same row (Status, Upload Date, Platform URLs). Editors see exactly what published and what failed without leaving Airtable.

Common gotchas

  • Free Airtable plan caps automations at 100 runs/month.
  • Free IndReelForge plan can't post to TikTok β€” upgrade to Basic+ first.
  • Run Script actions time out at 30 seconds. Use video_url so the script returns immediately.

FAQ

Do I need a paid Airtable plan to use Automations?

Airtable Automations is included in every paid Airtable tier. The free Airtable plan includes 100 automation runs per month β€” enough to test the integration but not for production use. The IndReelForge side is free for the first 10 uploads/month regardless.

How do I avoid hardcoding the API key in the script?

Wire the API key as an "Input variable" on the script action. Set it to a literal value once, and the actual key never appears in the script body. When you copy the base, the input variable name travels but the value is bound to the destination workspace.

Can I send a video file from Airtable, or only a URL?

Airtable scripts run inside a sandbox without filesystem access, so the cleanest pattern is: store the video as an Airtable attachment, pass the attachment URL to IndReelForge as the "video_url" field, and let our backend fetch and process it server-side.

Can I update the Airtable row with the upload result?

Yes β€” every example script in this guide does exactly that. After the IndReelForge call returns, the script writes the upload status (and optionally the per-platform URLs) back into the same row so editors can see what published and what failed.

How do I handle multiple platforms in one row?

Add a multi-select column called "Platforms". In the script, read the cell, map each option name to a platform[] entry, and let IndReelForge fan out the post in one call.

Explore More

Turn your Airtable base into a publishing engine

Start free with 10 uploads per month, no credit card required. Upgrade to unlimited when your editorial calendar fills up.