Skip to content

Collects as they arrive, acts daily

Publish queued posts to Facebook and Instagram

You add images and captions whenever you like, and one goes out to your Page and Instagram at the same time each day.

Runs
Collects as they arrive, acts daily
Apps
Facebook Pages
AI
Not needed
Access
pages_manage_posts, instagram_content_publish

Send this to your assistant

Create a ClickRuntime automation: give me a link I can send an image URL and caption to. Keep them in order and publish the next one to my Facebook Page and Instagram every day at 6pm, then email me if anything fails.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Social media managers who batch a month of content on a Sunday still have to remember to publish it at the right times. Facebook's own scheduler works for single posts, but photo carousels and reels cause more trouble, and a queue kept in a spreadsheet needs someone to watch the clock. One missed slot breaks the rhythm of a campaign. A Page that goes quiet loses reach it spent months earning.

You add posts to a queue whenever you like, and ClickRuntime stores them as they arrive. Each day at the time you pick, it takes the next item and publishes it to Facebook or Instagram as a photo, carousel or reel, then emails a confirmation or the error if Facebook refused it.

It is practical for agencies and solo marketers who prepare content in bulk.

What you get out of it

  • Batch content once, publish all month

    You prepare posts when you have time and the queue handles the rest. That separates creative work from the daily schedule and prevents the gaps that appear in busy weeks.

  • Support carousels and reels

    Many scheduling tools handle plain photos best. A queue that also publishes multi-image carousels and reels keeps richer content in your calendar rather than needing a manual upload. Skipping them leaves the most engaging formats out.

  • Know right away when a post fails

    If Facebook rejects an image or a token has expired, you get an error email at once. You can fix and republish that day, not after a week of silence.

  • Keep order without a spreadsheet

    Items go out in the order they were added, so the sequence of a campaign is preserved. There is no sheet to sort or time zone to convert. The queue remembers it for you.

  • Post to both platforms from one queue

    Choosing Facebook, Instagram or both per item avoids doing everything twice. A single entry creates the post wherever you want it to appear. That removes a whole category of duplicated effort every week.

How it works

What happens, step by step

  1. Whenever you send an image and caption to your ClickRuntime link, it is added to the end of your posting queue.

  2. At the same time each day the automation takes the next post in the queue.

  3. It publishes it on your Facebook Page and your Instagram account, then removes it from the queue.

  4. If publishing fails, you get an email with the caption and the error, and the post stays in the queue.

Before it runs live

  • Connect Facebook Pages
  • Paste your automation's link into the other app's webhook settings

What you get

RunsCollects as they arrive, acts daily
Publish queued posts to Facebook and Instagramtoday, 9:00Succeeded
Email · Scheduled post failedAutumn menu is here... 400 Client Error: image_url could not be downloaded

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Facebook Pages steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
scheduled_posts_from_a_queue.pyexample
from clickruntime import on_event, on_trigger, credentials, http, state, notify

G = "https://graph.facebook.com/v21.0"
PAGE_ID = "104857600000000"

def page_token():
    user = credentials.connection("facebook", "work")
    return http.get(f"{G}/{PAGE_ID}", params={"fields": "access_token", "access_token": user}).json()["access_token"]

IG_USER_ID = "17841400000000000"

@on_event
def enqueue(event):
    queue = state.get("queue") or []
    queue.append({"image_url": event.json["image_url"], "caption": event.json.get("caption", "")})
    state.set("queue", queue)
    return {"queued": len(queue)}

@on_trigger
def publish(event):
    queue = state.get("queue") or []
    if not queue:
        return {"published": False}
    item = queue[0]
    try:
        token = page_token()
        http.post(f"{G}/{PAGE_ID}/photos", data={"url": item["image_url"], "caption": item["caption"],
                                                 "access_token": token}).raise_for_status()
        container = http.post(f"{G}/{IG_USER_ID}/media", data={"image_url": item["image_url"], "caption": item["caption"],
                                                               "access_token": token}).json()["id"]
        http.post(f"{G}/{IG_USER_ID}/media_publish", data={"creation_id": container, "access_token": token}).raise_for_status()
    except Exception as e:
        notify.email_me("Scheduled post failed", f"{item['caption'][:80]}\n\n{e}")
        raise
    state.set("queue", queue[1:])
    return {"published": True, "left": len(queue) - 1}

FAQ

Common questions

Can I choose the time for each post?
The queue publishes at the daily time you set, taking the next item each run. If you want different times for different posts, you can add a time to each item and the flow publishes whichever is due. Each item keeps its own timing.
What happens if the queue is empty?
The run finds nothing to publish and ends quietly. You can ask for an email warning when fewer than a few posts remain, which prompts you to add more before the gap appears. Running low is the usual cause of unplanned gaps.
How do I add items to the queue?
You send them to the flow with your AI assistant, a form or a webhook, including the caption and media links. Each one is stored until its turn, and you can ask to see or remove what is waiting.
What permissions does it need?
pages_manage_posts, instagram_content_publish. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Publish queued posts to Facebook and Instagram” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.