Posting to Social Media such as Instagram, Twitter, Facebook, LinkedIn, Reddit, or Telegram from Airtable.

Set Up

This guide shows you how to automatically post to linked social media accounts in Airtable via Ayrshare. You can post to a single company's social accounts or or to your managed client's social media accounts. All the below code can be found at GitHub.

Running Airtable Automation Scripts requires a paid Airtable plan. Please be sure your Airtable plan includes automations with scripts.

Gather Your API Key

Start by getting your free or paid plan API Key at in the API Dashboard section. The key will be used in the script below.

If you are on the Ayrshare business plan and want to post on behalf of your clients, gather all your client's Profile Keys either via the /user or /create-profile endpoints or in the Ayrshare Dashboard.

Be sure you have linked a few social accounts in Ayrshare. Please verify at:

Create an Airtable Workspace

In Airtable, create a new workspace with the fields:

  • Post as Long Text

  • Platforms as Multi Select with types: facebook, instagram, twitter, linkedin, reddit, and telegram

  • Images as Attachment

  • Profile Keys as Single Line Text

  • Status as Single Line Text.

  • Schedule Date as Date with Local Format, Include Time Field, and Time Format 24 Hours

Airtable Table Example

These fields will be used in the Airtable automation script we are about to build.

See a live Airtable example:

Enter in Test Post Data

We need some sample data to test the post. Here is a suggestion:

  • Post: Enter - Happy New Year 2021

  • Platforms: select one or more networks you have linked.

  • Images : Attach an image. We like this one you can download and attach:

  • Profile Keys : If you are on the Business Plan and want to post to a client's profile, enter their Profile Key.

  • Status: Enter - pending. The script only grabs records that are set to pending.

  • Schedule Date : Leave blank since we'll just test immediate posting right now. Later you can select a future date to schedule the post.

Build an Automation Script

We'll now build the Airtable automation script that reads your data from the table, creates a post, and send it to the social networks via Ayrshare.

Add Trigger

  • In the workspace, click on Automation and then +New automation.

  • Name the automation.

  • Click Choose a Trigger.

  • Select When a Record is Created.

  • Select the table with the above fields.

  • Click Done.

Add Action

  • Start by clicking Add Action.

  • Select Run Script. You will be brought into the script editor.

Delete the line:

console.log(`Hello, ${}!`);

And copy and paste into the script editor the following code:

const API_KEY = 'Your API Key'; // Get a free key at
const sendPost = async (data) => {
const { post, platforms, media_uls, profileKeys, scheduleDate } = data;
const body = Object.assign({},
post && { post },
platforms && { platforms },
profileKeys && { profileKeys: profileKeys.split(",") },
media_uls && Array.isArray(media_uls) && media_uls.length > 0 && { media_urls: => image.url) },
scheduleDate && { scheduleDate }
if (media_uls && Array.isArray(media_uls) && media_uls.length > 0) {
body.media_urls = => image.url);
if (profileKeys) {
body.profileKeys = profileKeys.split(",");
const response = await fetch("", {
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
}).then(res => res.json());
return response;
const table = base.getTable("Posts");
const query = await table.selectRecordsAsync();
const filteredRecords = query.records.filter(record => {
const status = record.getCellValue('Status');
const post = record.getCellValue('Post');
const platforms = record.getCellValue('Platforms');
return (post && platforms && (status === "pending" || !status));
if (filteredRecords.length === 0) {
console.log("No records found with status `pending` or empty");
for (let record of filteredRecords) {
const post = record.getCellValue('Post');
const images = record.getCellValue('Images');
const platforms = record.getCellValue('Platforms');
const profileKeys = record.getCellValue('Profile Keys');
const scheduleDate = record.getCellValue('Schedule Date');
const response = await sendPost(
platforms: =>,
media_uls: images,
if (response) {
let status;
if (Array.isArray(response)) {
status = => x.status).every(x => x === "success" || x === "scheduled") ? "success" : "error";
} else {
status = response.status;
await table.updateRecordAsync(record, {
"Status": status

This code will read from your table and post to Ayrshare. However, you first need to add in your API Key (gathered from above).

Replace Your API Key with your real API key.

Test the Script

In the script editor, press: >Test

The script will run and output the response from the API call. If everything worked, you'll see a success message returned, the pending field in your records changed to success, and your post on the selected social network.

Once you create a new record in the table, the script will run and process pending records.


If you have any questions or comments, please reach out to us via email or chat.