# How to Auto-Post to Facebook, Instagram, and LinkedIn from Google Sheets with Make.com

By Jonathan McKelvey · 2026-10-01

**Quick Answer:** **To auto-post from Google Sheets with Make.com, build a scheduled scenario that finds rows ready to publish, routes each one to the right platform, posts it, and marks the row as posted.** The chain is: Google Sheets *Search Rows* (Status = Approved and publish time has passed) → Router → Facebook Pages *Create a Post with Photos* / Instagram for Business *Create a photo post* / LinkedIn *Create a Company Image Post* → Google Sheets *Update a Row* (Status = Posted). Make's Free plan includes 1,000 credits a month with runs every 15 minutes, which is enough to test the whole flow.

If your content calendar already lives in a Google Sheet, you can have [Make.com](https://www.make.com) publish from it automatically, with no copy-pasting into three apps. I build Make.com workflows for client marketing at [SuperDupr](https://superdupr.com) (and I'm Make Basics and Make Foundation certified). This is the pattern for scheduled social posting. (For results from this kind of work, see the [Make.com automation case study](/work/make-com-marketing-automation).)

As of October 2026, Make bills usage in **credits** ("each module action… counts as one credit") and the Free plan includes 1,000 credits a month with a 15-minute minimum interval ([Make pricing](https://www.make.com/en/pricing)). Module names below are from Make's current app docs.

## What you'll build

**A scenario that runs on a schedule, finds approved posts whose time has come, publishes each to the right platform, and marks it as posted.**

| Step | Make module | Purpose |
|---|---|---|
| 1 | Schedule (scenario settings) | Run every 15 min (Free) or more often |
| 2 | Google Sheets → **Search Rows** | Find rows with Status = Approved and Publish time ≤ now |
| 3 | **Router** | Branch by platform |
| 4a | Facebook Pages → **Create a Post with Photos** | Publish to a Page |
| 4b | Instagram for Business → **Create a photo post** | Publish to Instagram |
| 4c | LinkedIn → **Create a Company Image Post** | Publish to a company page |
| 5 | Google Sheets → **Update a Row** | Set Status = Posted, log the time |

## Step 1: Set up the Google Sheet

**Create one row per post, with these columns:**

| Column | Example |
|---|---|
| Client | Client A |
| Platform | Instagram |
| Publish at | 2026-10-14 09:00 |
| Caption | Fall hours start Monday… |
| Image URL | Public link to the image |
| Status | Draft / Approved / Posted |
| Posted at | (filled by Make) |

Only rows set to **Approved** will ever publish. That gives you a client-approval gate, the same rule I use to [manage social media for multiple clients](/notes/how-to-manage-social-media-accounts-for-multiple-clients).

## Step 2: Connect your accounts

**In Make, create connections for Google Sheets, Facebook Pages, Instagram for Business, and LinkedIn.** For Instagram, the account must be a professional account linked to a Facebook Page. For LinkedIn company posts, you need admin access to the company page.

## Step 3: Find the posts that are due with Search Rows

**Start the scenario with Google Sheets *Search Rows*, filtered to Status = "Approved."** Then add a filter after it so only rows whose *Publish at* time is now or earlier continue. Don't use *Watch New Rows* here, because it fires as soon as a row is added, not when the post is due.

## Step 4: Add a Router to branch by platform

**Add a [Router](https://help.make.com/router) with one route per platform, and put a filter on each route** (Platform equals "Facebook," "Instagram," or "LinkedIn"). Make's docs describe a router as a way to "branch the scenario flow into several chains of modules." Add a fallback route that emails you if a row has an unrecognized platform, so typos don't fail silently.

## Step 5: Add the posting module on each route

**Map the sheet's Caption and Image URL into each platform's posting module:**

- **Facebook:** Facebook Pages → *Create a Post with Photos* (or *Create a Post* for text-only).
- **Instagram:** Instagram for Business → *Create a photo post*. The image must be at a publicly accessible URL.
- **LinkedIn:** LinkedIn → *Create a Company Image Post* (or *Create a Company Text Post*).

Platforms have different limits and norms, so keep separate caption columns per platform if your copy differs. If you draft captions with AI, run them through a [human-edited AI content workflow](/notes/ai-social-media-content-workflow) before setting them to Approved.

## Step 6: Mark each row as posted

**End every route with Google Sheets *Update a Row*: set Status to "Posted" and write the timestamp.** This is what prevents double-posting: the next run's search only finds "Approved" rows.

## Step 7: Test, then schedule

**Run the scenario once on a test row, confirm the post and the status update, then turn on scheduling.** On the Free plan the shortest interval is 15 minutes; paid plans allow 1 minute. Add error handling (or a simple email alert on failure) so a disconnected account doesn't go unnoticed.

## How many credits does this use?

**Roughly one credit per module action.** A run that finds one Instagram post uses a few credits (search, post, and update). Runs that find nothing use very little. Check the scenario's run history in Make to see exact usage. A small posting calendar for a few clients fits within the Free plan's 1,000 credits a month while you test.

## Where to go from here

**Add a step that notifies the client or your team when a post goes live, or a weekly summary of everything posted.** Both are covered in [5 marketing automation examples for small businesses](/notes/marketing-automation-examples-small-business).

## Frequently asked questions

### Can Make.com post to Instagram automatically?

Yes, through the Instagram for Business app, which includes modules like “Create a photo post,” “Create a reel post,” and “Create a carousel post.” The Instagram account must be a professional (business or creator) account connected to a Facebook Page, and images must be at a publicly accessible URL.

### Is Make.com free for auto-posting social media?

You can start free. Make's Free plan includes 1,000 credits a month (each module action uses one credit) and a 15-minute minimum interval between runs. A small posting calendar fits comfortably; paid plans add credits and 1-minute scheduling for higher volume.

### How do I stop Make.com from posting the same row twice?

Write back to the sheet. After each post, use Google Sheets “Update a Row” to set Status to “Posted” and save the post ID or timestamp. Then make your search only return rows where Status is “Approved,” so posted rows are never picked up again.

### Should I use Watch New Rows or Search Rows for scheduled posts?

Use Search Rows on a schedule. “Watch New Rows” fires when a row is added, which is too early for posts planned days ahead. A scheduled scenario with Search Rows can check for rows whose publish time has passed and whose status is Approved.

### Can one Make scenario post to multiple platforms?

Yes. Add a Router after the search step, with one route per platform and a filter on each route (for example, Platform = Instagram). Each route ends with that platform's posting module, then all routes update the sheet row. Make's Router docs describe branching one flow into several chains this way.

### Is Make.com better than a social media scheduler?

For one brand with simple needs, a dedicated scheduler is easier. Make.com shines when posting is part of a bigger workflow: pulling approved copy from a shared calendar, posting across clients, logging results, and notifying the team, all from one sheet you already use.
