16 KiB
Content Publishing Workflow Guide
Last Updated: January 20, 2026
Version: 1.8.4
Status: Production
Audience: Content Editors, Publishers, Site Administrators
Overview
This guide covers the complete content publishing workflow, from content creation through multi-platform publishing (WordPress, Shopify, Custom Sites). The system supports both immediate publishing and scheduled publishing with progress tracking and error recovery.
Publishing Workflow States
Content Status Flow
Draft → Review → Approved → Published
- Draft: Content is being written/edited
- Review: Content submitted for review by editors
- Approved: Content approved and ready for publishing
- Published: Content successfully published to site
Site Publishing Status
- not_published: Content has never been published
- scheduled: Content scheduled for future publishing
- publishing: Currently being published (in-progress)
- published: Successfully published to site
- failed: Publishing attempt failed (needs retry/reschedule)
1. Publishing from Approved Page
Single Content Publishing
Steps:
- Navigate to Writer → Approved
- Find the content you want to publish
- Click the 3-dot menu on the content row
- Select "Publish Now"
- Publishing progress modal appears with real-time status:
- 📄 Preparing content (0-25%)
- 🚀 Uploading to site (25-50%)
- ⚙️ Processing response (50-75%)
- ✓ Finalizing (75-100%)
- On success:
- Green checkmark displayed
- "View on [Site Name]" button available
- Content marked as published
- On failure:
- Error message displayed
- Retry button available
- Close button to exit
Features:
- Real-time progress tracking
- Platform-agnostic (works with WordPress, Shopify, Custom sites)
- Automatic error recovery
- Direct link to published content
- No limit on single item publishing
Bulk Publishing (Max 5 Items)
Steps:
- Navigate to Writer → Approved
- Select 2-5 content items using checkboxes
- Click "Publish to Site" button at top
- Bulk publishing modal shows queue with individual progress bars
- Items process sequentially (one at a time)
- Each item shows:
- Progress bar (0-100%)
- Current status (Preparing/Uploading/Processing/Finalizing)
- Success: Green checkmark + published URL
- Failure: Red X + error message + Retry button
- Summary at bottom: "X completed, Y failed, Z pending"
- Cannot close modal until all items complete
Publishing Limit:
- Direct bulk publish: Maximum 5 items at once
- Reason: Prevents server overload and API rate limiting
- For more items: Use "Schedule Selected" instead (no limit)
If you select 6+ items:
⚠️ Publishing Limit Exceeded Modal appears:
- Shows you selected X items (over 5 limit)
- Options:
1. Deselect items to publish ≤5
2. Use "Schedule Selected" instead (no limit)
- Tip: Scheduling is better for large batches
2. Scheduling Content
Manual Scheduling (Single Item)
Steps:
- Navigate to Writer → Approved
- Click 3-dot menu on content row
- Select "Schedule"
- Schedule Content Modal appears:
- Schedule Date: Pick date from calendar
- Schedule Time: Set time (HH:MM AM/PM)
- Preview: Shows "January 15, 2025 at 9:00 AM"
- Click "Schedule" to confirm
- Content appears in Publisher → Content Calendar
- Celery task will auto-publish at scheduled time (runs every 5 minutes)
Default Time: 9:00 AM on selected date
Bulk Scheduling (Unlimited Items)
Steps:
- Navigate to Writer → Approved
- Select any number of items (no limit!)
- Click "Schedule Selected" button
- Bulk Schedule Preview Modal shows:
- Your site's default schedule settings
- Start time (e.g., 9:00 AM)
- Stagger interval (e.g., 15 minutes between each)
- First and last publish times
- List of all items with scheduled times
- Options:
- "Change Settings": Opens Site Settings → Publishing tab in new tab
- "Confirm Schedule": Applies schedule to all items
- All items scheduled and appear in calendar
Site Settings Integration:
- Go to Sites → [Your Site] → Settings → Publishing tab
- Configure:
- Auto-publish Schedule: Time of day (e.g., 9:00 AM)
- Stagger Interval: Minutes between each (e.g., 15 min)
- Timezone: Your site's timezone
- Max Daily Publishes: Optional limit per day
- These defaults apply to bulk scheduling automatically
Example Schedule (10 items, 9 AM start, 15 min stagger):
1. First Article → Jan 17, 9:00 AM
2. Second Article → Jan 17, 9:15 AM
3. Third Article → Jan 17, 9:30 AM
4. Fourth Article → Jan 17, 9:45 AM
5. Fifth Article → Jan 17, 10:00 AM
...
10. Tenth Article → Jan 17, 11:15 AM
Scheduling from Content Calendar
Drag-and-Drop Method:
- Navigate to Publisher → Content Calendar
- Approved content appears in left sidebar
- Drag content item to desired date on calendar
- Item scheduled for 9:00 AM on that date automatically
- Edit time if needed (see "Editing Schedules" below)
3. Managing Scheduled Content
Viewing Scheduled Content
Content Calendar View:
- Navigate to Publisher → Content Calendar
- Calendar shows all scheduled items by date
- Each item displays:
- Title (truncated)
- Site name
- Scheduled time
- Status badge (Scheduled/Publishing/Published/Failed)
List View Filter:
- Navigate to Writer → Approved
- Filter by
site_status = 'scheduled' - Shows all scheduled items in table format
Editing Schedules (Rescheduling)
From Calendar View:
- Find scheduled item on calendar
- Click Pencil icon (Edit Schedule) on item
- Schedule Content Modal opens with current date/time pre-filled
- Change date and/or time
- Click "Reschedule"
- Item moves to new date/time on calendar
From Approved Page:
- Navigate to Writer → Approved
- Click 3-dot menu on scheduled content
- Select "Reschedule"
- Change date/time in modal
- Click "Reschedule"
From 3-Dot Menu:
- Reschedule: Change to new date/time
- Unschedule: Cancel schedule, keep as approved
- Publish Now: Skip schedule, publish immediately
Unscheduling Content
Steps:
- Click 3-dot menu on scheduled content
- Select "Unschedule"
- Confirmation modal appears:
⚠️ Unschedule Content? Current schedule: Jan 15, 2025 9:00 AM [Cancel] [Unschedule] - Click "Unschedule" to confirm
- Content returns to
not_publishedstatus - Stays in Approved page, can be rescheduled or published directly
4. Handling Failed Publications
Identifying Failed Content
Visual Indicators:
- ❌ Red "Failed" badge
- 🕐 Shows original scheduled time
- 📄 Error message (truncated)
- 🔄 Retry options available
Where to Find Failed Items:
- Content Calendar: Separate "Failed Scheduled Publications" section at top
- Approved Page: Filter by
site_status = 'failed' - Dashboard: "Failed Publications" widget (if configured)
Failed Item Display (Calendar)
┌──────────────────────────────────────────────────────┐
│ ❌ Failed Scheduled Publications (2) │
├──────────────────────────────────────────────────────┤
│ ⚠️ Article Title 1 │
│ Site: My WordPress Blog │
│ Scheduled: Jan 13, 2025 9:00 AM │
│ Error: Publishing API error: Invalid credentials │
│ [Reschedule] [Publish Now] │
└──────────────────────────────────────────────────────┘
Viewing Error Details
Steps:
- Click 3-dot menu on failed content
- Select "View Error Details"
- Error Details Modal shows:
- Content title and site name
- Original scheduled time
- Failure timestamp
- Full error message
- Actions: Fix Site Settings / Publish Now / Reschedule
Recovering from Failed Publishing
Option 1: Publish Now
- Click "Publish Now" button
- Opens Publishing Progress Modal
- Attempts immediate republish
- On success: Content marked as published, error cleared
- On failure: Error message updated, stays as failed
Option 2: Reschedule
- Click "Reschedule" button
- Opens Schedule Content Modal
- Pick new date/time
- Content re-queued with status = 'scheduled'
- Celery will retry at new scheduled time
Option 3: Fix Site Settings
- Click "Fix Site Settings" button
- Opens Site Settings → Publishing tab
- Check API credentials, domain, platform settings
- Return to content and retry
Common Error Types
| Error | Cause | Solution |
|---|---|---|
| Invalid credentials | API key wrong/expired | Update API key in Site Settings |
| 403 Forbidden | Permissions issue | Check user role in site admin |
| Network timeout | Site unreachable | Check domain, retry later |
| Missing required field | Content incomplete | Edit content, fill required fields |
| Rate limit exceeded | Too many requests | Reschedule with longer intervals |
| Platform-specific error | WordPress/Shopify API issue | Check error details, consult platform docs |
5. Publishing to Multiple Platform Types
Supported Platforms
-
WordPress Sites
- Uses WordPress REST API
- Requires Application Password
- Supports posts, pages, custom post types
- Categories and tags automatically synced
-
Shopify Sites
- Uses Shopify Admin API
- Requires API key and password
- Supports products, blog posts, pages
- Collections automatically assigned
-
Custom Sites
- Uses custom REST API endpoint
- Flexible authentication
- Configurable field mapping
- Platform-agnostic error handling
Platform Configuration
Go to: Sites → [Your Site] → Settings
Required Fields:
- Platform Type: Select WordPress / Shopify / Custom
- Domain: Your site URL (e.g., https://mysite.com)
- API Key: Platform-specific authentication key
- Additional Settings: Varies by platform
WordPress Example:
Platform Type: WordPress
Domain: https://myblog.com
API Key: xxxx xxxx xxxx xxxx xxxx xxxx
Username: admin
Shopify Example:
Platform Type: Shopify
Domain: https://mystore.myshopify.com
API Key: shpat_xxxxxxxxxxxx
Password: shppa_xxxxxxxxxxxx
Publishing Behavior by Platform
All platforms use the same unified publishing interface:
- Same progress modal
- Same error handling
- Same scheduling system
- Platform differences handled automatically in backend
6. Review Page Workflow (Approval Only)
Important: No Publishing from Review
Review Page Purpose: Content approval workflow only
Available Actions:
- ✅ Approve (single or bulk)
- ✅ View content
- ✅ Edit content
- ✅ Delete content
- ❌
Publish to Site(removed)
Why?
- Ensures content goes through proper approval workflow
- Prevents accidental publishing of unreviewed content
- Clear separation: Review → Approve → Publish
Workflow:
1. Writer creates content (Draft)
2. Writer submits for review (Review)
3. Editor reviews and approves (Approved)
4. Publisher publishes from Approved page (Published)
7. Best Practices
When to Publish Immediately
- ✅ Time-sensitive content (news, announcements)
- ✅ Small batches (1-5 items)
- ✅ Testing new content types
- ✅ Urgent fixes or updates
When to Use Scheduling
- ✅ Large batches (6+ items)
- ✅ Content with planned publish dates
- ✅ Avoiding rate limits
- ✅ Publishing during optimal times
- ✅ Automated publishing workflows
- ✅ Content calendar planning
Scheduling Tips
- Use Site Defaults: Let system handle timing automatically
- Stagger Publications: 15-30 minute intervals reduce load
- Check Timezone: Ensure site timezone matches your expectations
- Plan Ahead: Schedule content days/weeks in advance
- Monitor Failures: Check failed items daily, fix issues promptly
- Test First: Publish 1-2 items manually before bulk scheduling
Error Prevention
- Verify Credentials: Test site connection before bulk operations
- Check Content Quality: Ensure all required fields filled
- Validate Images: Confirm images uploaded and accessible
- Review Platform Requirements: WordPress categories, Shopify collections, etc.
- Monitor Rate Limits: Don't schedule too many items at once
- Backup Content: Export content before large publishing operations
8. Troubleshooting
Problem: Publishing is slow
Solution:
- Check network connection
- Verify site is responsive
- Use scheduling instead of bulk publish
- Check site server performance
Problem: All items failing with same error
Solution:
- Check Site Settings → API credentials
- Verify domain is correct and accessible
- Test site connection manually
- Check platform API status (WordPress.org, Shopify status page)
Problem: Items stuck in "publishing" status
Solution:
- Backend may be processing
- Wait 5-10 minutes (Celery runs every 5 min)
- Check backend logs for errors
- Contact system administrator if persists
Problem: Schedule times are wrong timezone
Solution:
- Go to Site Settings → Publishing
- Set correct timezone for your site
- Reschedule affected items
- Future schedules will use correct timezone
Problem: Site selector not updating calendar content
Solution:
- Refresh your browser (Ctrl+F5 or Cmd+Shift+R)
- This issue was fixed in latest update (Jan 2026)
- Calendar now automatically reloads when you change sites
- Check browser console for site change logs
- If problem persists, clear browser cache
What was fixed:
- Frontend: Fixed useEffect dependency in ContentCalendar.tsx
- Backend: Added site_id and site_status to ContentFilter
- All API queries now properly filter by selected site
Problem: Cannot see published content on site
Solution:
- Click "View on [Site Name]" link to verify URL
- Check site visibility settings (not private/draft)
- Clear site cache if using caching plugin
- Verify content published to correct site
- Check platform-specific visibility settings
Problem: Bulk publish limit blocking my workflow
Solution:
- Use "Schedule Selected" instead (no limit)
- Set up site default schedule for automation
- Or select ≤5 items at a time for immediate publishing
9. Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Space |
Select/deselect item in table |
Shift + Click |
Select range of items |
Ctrl/Cmd + Click |
Select multiple non-contiguous items |
Esc |
Close modal (when not publishing) |
Enter |
Confirm action in modal |
10. Support and Resources
Getting Help
- Documentation:
docs/40-WORKFLOWS/(this guide) - API Reference:
docs/20-API/PUBLISHER.md - Developer Docs:
docs/30-FRONTEND/PUBLISHING-MODALS.md - System Status: Check backend logs at
/admin/system/logs/
Contact
- Technical Issues: Contact system administrator
- Content Questions: Contact editorial team
- Platform Setup: Contact site owner/administrator
Document Version: 1.0
Last Updated: January 2026
Status: Production Ready