Skip to main content

Scheduler

Schedule your content to publish at the perfect time across all platforms. UniPulse's scheduling system uses a queue-based architecture to ensure reliable, timezone-aware delivery.


How Scheduling Works

When you schedule a post, UniPulse creates a Schedule record that links your post to a specific social account, time, and timezone:

Schedule
├── postId → Links to exactly one Post (unique constraint)
├── socialAccountId → The target social account
├── scheduledAt → UTC timestamp for publication
├── timezone → User's timezone for display purposes
├── jobId → Reference to the background job in the schedule queue
└── processedAt → Timestamp when the job was actually executed
One Schedule Per Post

Each Post has a unique Schedule record. If you need to publish the same content at different times, you'll create separate posts (the Composer's duplicate feature makes this easy).


Scheduling a Post

  1. Create your post in the Composer
  2. Instead of Publish Now, click Schedule
  3. Pick the date and time using the date picker
  4. Confirm the timezone (defaults to your workspace timezone)
  5. Click Confirm Schedule

The post status changes from DRAFT to SCHEDULED, and a job is enqueued on the schedule queue with the target execution time.

What Happens at Publish Time

SCHEDULED → schedule queue picks up job → PUBLISHING → publish queue → PUBLISHED
↘ PARTIALLY_PUBLISHED
↘ FAILED
  1. The schedule queue checks for jobs whose scheduledAt has arrived
  2. The post status updates to PUBLISHING
  3. The job is forwarded to the publish queue for actual platform delivery
  4. Once platforms respond, the status becomes PUBLISHED, PARTIALLY_PUBLISHED, or FAILED
  5. The processedAt timestamp is recorded on the Schedule record

Viewing Scheduled Posts

Navigate to the Scheduler page to see all upcoming posts. Each entry displays:

ColumnDescription
Platform iconsWhich social accounts will receive the post
Scheduled date/timeDisplayed in your workspace timezone
Post previewCaption snippet + media thumbnail (thumbnailUrl)
StatusSCHEDULED, PUBLISHING, PUBLISHED, PARTIALLY_PUBLISHED, or FAILED
Media typeIMAGE, VIDEO, or CAROUSEL indicator

Managing Scheduled Posts

ActionWhat Happens
EditOpens the post in the Composer for content changes (while keeping the schedule)
RescheduleUpdates the scheduledAt value and creates a new jobId in the schedule queue
CancelRemoves the Schedule record and reverts the post to DRAFT status
Publish NowBypasses the schedule — immediately moves the post to the publish queue
warning

You cannot edit or cancel a post once it has entered the PUBLISHING state. The window between SCHEDULED and PUBLISHING is your last chance to make changes.


Timezone Handling 🌍

Scheduling is timezone-aware throughout the system:

  • Storage: All scheduledAt values are stored in UTC in the database
  • Display: Times are converted to your workspace timezone for display
  • Job execution: The schedule queue compares against UTC to trigger jobs

You can change your workspace timezone in Settings > Workspace > Timezone. Existing scheduled posts will continue to publish at their original UTC time — only the displayed time will adjust.

tip

If you manage audiences in multiple timezones, consider creating separate posts scheduled for each region's peak hours. The Content Calendar's AI generation can help plan this automatically.


Optimal Timing

UniPulse can suggest the best times to post based on your audience engagement patterns. When scheduling, look for the Best Times indicator — it highlights time slots with historically higher engagement for your connected accounts.


Post Status Reference

StatusMeaning
DRAFTNot yet scheduled — still being edited
SCHEDULEDA Schedule record exists with a future scheduledAt time
PUBLISHINGThe schedule queue has picked up the job and is sending to platforms
PUBLISHEDSuccessfully delivered to all targeted platforms
PARTIALLY_PUBLISHEDSucceeded on some platforms, failed on others
FAILEDDelivery failed on all targeted platforms

Behind the Scenes

The scheduling system relies on two queues working in sequence:

  1. schedule queue — A time-delayed queue that holds jobs until their scheduledAt time arrives. Each job carries a jobId referenced in the Schedule model.
  2. publish queue — The execution queue that actually communicates with platform APIs (Facebook Graph API, Instagram API, TikTok API) to deliver the post.

This two-queue architecture ensures that time-sensitive scheduling logic is separated from the potentially slow and retry-heavy process of platform API communication.