Content Queue

The content queue is a staging area. Drafts that arrive in bulk land in content_queue instead of going straight to posts. You review them, schedule them, and publish when you are ready.

Everything that leaves the queue for the live site passes through the same publishing policy as any other channel: the content quality gate runs, the outcome is recorded, and the post carries source = queue in its audit trail. Nothing sneaks past it.

Automated content carries risk. Drafts produced in bulk can be inaccurate, repetitive or thin. Publishing them without reading them can hurt your search visibility and your readers' trust. The queue exists so the last call is yours.

Where queue items come from

There are three real intake paths, all in the admin panel:

  • Google Sheets sync — point jekcms at a spreadsheet and it pulls rows into the queue. Each row becomes a queue item; the sheet name and row ID are kept (source_sheet, source_row_id) so re-syncing updates the same item instead of duplicating it.
  • JSON import — paste or upload a JSON array of items.
  • CSV import — the same idea in CSV form.

The AI generator can also place its output in the queue rather than publishing it directly.

There is no queue API endpoint. If you need to push items from an external system, write to Sheets (and let the sync pull them in), or generate a JSON/CSV file and import it. The REST API creates posts, not queue items.

What a queue item actually holds

The real content_queue columns:

| Column | What it is | |---|---| | title, slug, content, excerpt | the draft itself | | category, category_id, tags | taxonomy for the future post | | author_id | who it will be published as | | featured_image, featured_image_url | cover image (a local file, or a URL to fetch) | | pinterest_image, pinterest_pin_id, pinterest_url | optional vertical pin asset and its published pin | | status | draft, pending, ready, queued, processing, completed, failed | | scheduled_date, scheduled_time | when it should go live | | priority | ordering hint within the queue | | source_sheet, source_row_id | provenance for spreadsheet-sourced rows (also prevents duplicate imports) | | post_id | set once the item is published — the link to the live post | | meta_title, meta_description | SEO fields carried into the post | | processed_at, error_message | result of the last publish attempt | | extra_json | free-form payload for anything else your workflow carries |

That is the whole surface. There is no cost column, no per-source source_ref, and no auto-publish rule builder.

Working the queue

Open Content Queue in the admin panel. For each item you can:

  • Edit — change any field before it goes live.
  • Approve — mark it ready.
  • Reject / Delete — drop it.
  • Approve all — clear a whole batch at once.
  • Publish now — send a single item to the live site immediately (the quality gate still runs).
  • Match featured images — bulk-attach images that were uploaded to the temp folder, matched by slug.

Publishing an item copies it into posts, links the queue row to the new post via post_id, and records the audit trail (source = queue, publication mode, gate result).

Scheduling

Instead of publishing everything at once, hand the queue a rhythm: pick a frequency, a start date and a daily time window, and jekcms spreads the items across the calendar (scheduled_date / scheduled_time). Due items are published automatically as their time arrives — no system cron required, because the built-in pseudo-cron fires on normal site traffic.

If the quality gate blocks an item at publish time, it is not silently dropped: the item stays in the queue with error_message explaining what failed, so you can fix it and try again.

Practical flow

  1. A batch of drafts lands in the queue (sheet sync, JSON/CSV import, or AI generation).
  2. You read them. Edit the salvageable ones, delete the rest.
  3. You apply a schedule so they publish over days rather than all at once.
  4. Each item passes the quality gate as it goes live; anything that fails stays behind with a reason.
  5. Every published post carries source = queue in its audit trail, so you can always tell where a post came from.

Be the first to know

New features, release notes & CMS guides — a couple of emails a month, no spam.