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
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
- Create your post in the Composer
- Instead of Publish Now, click Schedule
- Pick the date and time using the date picker
- Confirm the timezone (defaults to your workspace timezone)
- 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
- The
schedulequeue checks for jobs whosescheduledAthas arrived - The post status updates to
PUBLISHING - The job is forwarded to the
publishqueue for actual platform delivery - Once platforms respond, the status becomes
PUBLISHED,PARTIALLY_PUBLISHED, orFAILED - The
processedAttimestamp is recorded on the Schedule record
Viewing Scheduled Posts
Navigate to the Scheduler page to see all upcoming posts. Each entry displays:
| Column | Description |
|---|---|
| Platform icons | Which social accounts will receive the post |
| Scheduled date/time | Displayed in your workspace timezone |
| Post preview | Caption snippet + media thumbnail (thumbnailUrl) |
| Status | SCHEDULED, PUBLISHING, PUBLISHED, PARTIALLY_PUBLISHED, or FAILED |
| Media type | IMAGE, VIDEO, or CAROUSEL indicator |
Managing Scheduled Posts
| Action | What Happens |
|---|---|
| Edit | Opens the post in the Composer for content changes (while keeping the schedule) |
| Reschedule | Updates the scheduledAt value and creates a new jobId in the schedule queue |
| Cancel | Removes the Schedule record and reverts the post to DRAFT status |
| Publish Now | Bypasses the schedule — immediately moves the post to the publish queue |
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
scheduledAtvalues 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.
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
| Status | Meaning |
|---|---|
DRAFT | Not yet scheduled — still being edited |
SCHEDULED | A Schedule record exists with a future scheduledAt time |
PUBLISHING | The schedule queue has picked up the job and is sending to platforms |
PUBLISHED | Successfully delivered to all targeted platforms |
PARTIALLY_PUBLISHED | Succeeded on some platforms, failed on others |
FAILED | Delivery failed on all targeted platforms |
Behind the Scenes
The scheduling system relies on two queues working in sequence:
schedulequeue — A time-delayed queue that holds jobs until theirscheduledAttime arrives. Each job carries ajobIdreferenced in the Schedule model.publishqueue — 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.
Related Pages
- Post Composer — Create and configure your post before scheduling
- Content Calendar — Visual calendar view of all scheduled content
- Drafts & Approvals — Manage posts that need review before scheduling