Airtable Integration

Schedule social posts from Airtable to 9 platforms

Turn your Airtable content calendar into a multi-platform scheduler. No native Airtable extension needed — Automations + a single API call to CodivUpload's REST API publishes to TikTok, Instagram, YouTube, X, LinkedIn, and 4 more.

Recommended Airtable schema

Start with seven fields. The script and sync-back automation reference each by name — keep them exactly as listed for fastest setup.

FieldTypePurpose
ProfileSingle selectDisplay name of the CodivUpload profile that owns the connected accounts
CaptionLong textThe post body — sent as description to CodivUpload
Media URLURLPublic HTTPS URL for image or video
Scheduled AtDate + TimeISO 8601 UTC publish time (omit to publish immediately)
PlatformsMulti-selectinstagram, tiktok, x, linkedin, youtube, facebook, threads, pinterest, bluesky, google_business, snapchat
StatusSingle selectdraft → scheduled → publishing → completed / failed
Post IDSingle line textReturned post_id from /v1/posts after scheduling
Result URLURLFilled by sync-back automation once published
airtable_automation.js

The Automation Script

Drop this into an Airtable Automation triggered by "When record matches conditions" with Status = scheduled. It reads the row, posts to CodivUpload, and writes the returned id back.

const inputConfig = input.config();
const recordId = inputConfig.recordId;

const table = base.getTable("Posts");
const record = await table.selectRecordAsync(recordId, {
    fields: ["Profile", "Caption", "Media URL", "Scheduled At", "Platforms"],
});

const platforms = (record.getCellValue("Platforms") || []).map(p => p.name);

const res = await fetch("https://api.codivupload.com/v1/posts", {
    method: "POST",
    headers: {
        "Authorization": "Bearer " + inputConfig.apiKey,
        "Content-Type": "application/json",
    },
    body: JSON.stringify({
        post_type:      "image",
        profile_name:   record.getCellValueAsString("Profile"),
        platforms:      platforms,
        media_urls:     [record.getCellValue("Media URL")],
        description:    record.getCellValue("Caption"),
        scheduled_date: record.getCellValueAsString("Scheduled At"),
    }),
});

const json = await res.json();
await table.updateRecordAsync(record, {
    "Status":  { name: res.ok ? "scheduled" : "failed" },
    "Post ID": json.post_id || "",
});

When to use this integration

Editorial calendar

Marketing teams plan a month of posts in Airtable, then click a button to schedule each row to 9 platforms.

Approval workflow

Set Status=approved to auto-trigger an Automation. Drafts stay in CodivUpload until a human approves.

Bulk import from spreadsheet

Paste 50 rows from your content plan, run an Automation Script that loops through Status=draft and schedules them.

Wire your Airtable to 11 social platforms

Free plan covers 30 posts per month. No credit card. No platform-by-platform API setup.