SoSocial Help

How Publishing Works Behind the Scenes

A look at the technical process SoSocial uses to reliably publish your posts on time.

How Publishing Works Behind the Scenes

You click Schedule, and your post goes out at the right time. But what actually happens between those two moments? Here’s a peek under the hood at how SoSocial ensures your content gets published reliably.

The Publish Queue

When you schedule a post, SoSocial creates a delayed job in the publish queue. This job is set to fire at exactly the date and time you chose. The queue is powered by BullMQ, a robust job processing system backed by Redis, which ensures jobs persist even if the server restarts.

Each scheduled date gets its own job. If you scheduled the same post for three different dates, three separate jobs are created — each timed independently.

The Publish Worker

When a job’s scheduled time arrives, the publish worker picks it up and processes it. The worker:

  1. Reads the post details from the database.
  2. Calls the appropriate platform API (Facebook, Instagram, X, or TikTok) to publish the content.
  3. Updates the database with the result — marking the post as published or failed.

Automatic Retries

If publishing fails — due to a temporary API error, network issue, or rate limit — SoSocial doesn’t give up. The system automatically retries up to 3 times with exponential backoff:

  • 1st retry — after 1 minute
  • 2nd retry — after 2 minutes
  • 3rd retry — after 4 minutes

This graduated approach gives transient issues time to resolve without hammering the platform API.

The Safety Net

As an extra layer of reliability, a safety-net cron job runs every 5 minutes. It scans for any posts that should have been published but weren’t — for example, if a job was lost during a server restart or Redis hiccup. Any overdue pending posts are re-enqueued and processed promptly.

What This Means for You

You don’t need to worry about any of this in your day-to-day use. The system is designed to handle failures gracefully and ensure your posts go out on time. If a post does ultimately fail after all retries, it will show a “failed” status on the Posts page so you can take action manually.