Auto-publish scheduled TikTok videos from Airtable

Flip a row in Airtable to Ready to Publish and it goes live on TikTok, with the caption, hashtags, and privacy you picked, plus a Slack heads-up when it lands.

Deterministic Code
AirtableTikTokSlackMarketingOperationsContent GenerationData SyncNotifications & Alerts
PromptCreate

Build me a code workflow that publishes videos to TikTok from an Airtable content calendar.

Trigger: Airtable poll on a specific base and table, event type new or updated record. Only proceed when the row's Status field equals Ready to Publish. Assume the row has these columns: Video (an Airtable attachment, one video file, Airtable exposes it as a public URL on the attachment), Caption (single-line text), Hashtags (single-line or multi-select), Privacy Level (single-select with values like PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY), Status (single-select), Publish ID (text), Publish URL (URL), and Error (long text).

Steps, in order, deterministic and code-based (no LLM decisions):

1) Call TikTok Query Creator Info to read the connected creator's currently allowed privacy levels and whether they can post right now. If the row's Privacy Level is not in the allowed list, coerce it to the safest allowed level (prefer SELF_ONLY when in doubt) and note the coercion in the Error field.

2) Call TikTok Direct Post Video using source PULL_FROM_URL. Pass the Airtable attachment URL as the video URL, the composed caption (Caption + a space + space-separated Hashtags with a # prefix on each, trimmed to TikTok's caption length), and the resolved privacy level from step 1. Capture the publish_id.

3) Poll TikTok Fetch Publish Status by publish_id. Poll on a short interval (a few seconds) with a reasonable max wait (a few minutes). Stop on PUBLISH_COMPLETE, or on any terminal failure status the API returns.

4) Call Airtable Update Record on the same row: on success set Status to Published and write the publish_id (and the returned public post URL if available) back to Publish ID and Publish URL; on failure set Status to Failed and write the TikTok error code and message to the Error field. Always write the publish_id even on failure so we can debug.

5) Only on success, call Slack Send a Message to a configured channel with a short note like "Published to TikTok: <first 80 chars of caption>… (link)". Skip the Slack ping on any failure path.

Error handling: if TikTok returns spam_risk_too_many_posts or rate_limit_exceeded, do not retry inside the workflow. Write the error code to the Airtable Error field, set Status to Failed, and skip the Slack success ping so we don't spam the channel. If access_token_invalid comes back, fail the run loudly so the owner reconnects TikTok.

Config inputs I want to be able to set: the Airtable base id, the Airtable table name, the Status value that triggers publishing (default Ready to Publish), the Slack channel id for confirmations, and a fallback Privacy Level to use when the row doesn't specify one.

Keep it deterministic. No agent, no reasoning steps. One row in, one publish attempt out, one row update, one optional Slack ping.

What does this prompt do?

  • Watches your Airtable content calendar and picks up any row you mark Ready to Publish.
  • Sends the video to TikTok with your caption, hashtags, and chosen privacy level, then waits for the post to actually go live.
  • Writes the outcome back to the row (Published or Failed, plus a link and any error message) so your calendar always tells the truth.
  • Drops a short confirmation in the Slack channel of your choice when a video successfully publishes.

What do I need to use this?

  • An Airtable base with a content calendar table that has a video attachment, a caption, hashtags, a privacy setting, and a Status field.
  • A TikTok account you can log in to and post from.
  • A Slack workspace and the channel you want confirmations posted to.

How can I customize it?

  • Change which Status value triggers publishing (for example, Approved instead of Ready to Publish).
  • Swap which Slack channel gets the confirmation, or turn the Slack ping off entirely.
  • Adjust the caption template, hashtag formatting, or which privacy level is used when none is set on the row.

FAQs

Do I need a business TikTok account?
Any TikTok account you can log in to and post from will work. If your TikTok developer app has not yet completed TikTok's content review, TikTok will force new posts to private (only you can see them) until the review passes.
Does the video need to be uploaded somewhere first?
No. You just attach the video file directly to the Airtable row. Airtable hosts it, and TikTok pulls the file from there when it is time to publish.
What happens if TikTok rejects the post?
The row in Airtable is marked Failed and the reason from TikTok is written back to the record, so you can see exactly why. No Slack confirmation is sent in that case.
Can I schedule videos ahead of time?
Yes. Keep rows in a Draft or Scheduled status until you are ready. The workflow only picks up rows the moment you flip the Status field to Ready to Publish.
Will this handle TikTok's daily posting limits?
If TikTok says you have hit a rate or spam limit, the workflow writes that error back to the Airtable row and moves on instead of retrying, so you can decide when to try again.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
Win back no-show and cancelled appointments every morning

Every weekday morning, every appointment that fell through yesterday gets a personal text or email inviting them to rebook, plus a task for the right rep.

LeadConnector
Google Sheets
Slack
Agentic Task
Live Loop returns analytics with product-level drill-down

Pick any date range up to 120 days and see return volume, refund versus exchange mix, and the products behind every number, recalculated each time you open it.

Loop Returns
Google Sheets
Slack
App
Newsletter pre-flight and approval board for Mailjet sends

Every newsletter gets read, checked and signed off in one place, so nothing goes out with a broken link or a half-filled greeting.

Mailjet
Slack
General Input Database
App

Stop babysitting your TikTok upload queue.

Connect Airtable, TikTok, and Slack once, and Geni takes every Ready to Publish row from calendar to live post to Slack confirmation.