Jonathan McKelvey

Jonathan McKelvey

Marketing Automation Specialist · Make.com certified · 3+ yrs multi-client social

Marketing Automation 4 min read

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

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 publish from it automatically, with no copy-pasting into three apps. I build Make.com workflows for client marketing at SuperDupr (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.)

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). 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.

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 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 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.

Next step Hiring for social media or marketing ops? See my experience or download my resume.

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.

More on Marketing Automation