FAQ
Is Live free?
Lite is, and it is a complete live blog: the composer, update types with their own field layouts, the Twig API and shipped partials, static snapshots and polling, pinning, key moments and the four states. Pro is $99 with a $79/year renewal, and adds editor presence, scheduled updates, server-sent events, CDN purging and GraphQL.
Why not just use a Matrix field?
Because every publish would be an entry save, and an entry save in Craft is a large event: a revision, a provisional draft, a search-index job, and the invalidation of every cache the entry carries. That is a fair price for editing an article. It is an unreasonable one for the word "corner", forty times an hour, while thousands of people are reading. In Live an update is its own element, so a publish is one lightweight save and the entry is never touched.
Can two journalists write the same live blog at once?
Yes, safely. They are creating separate elements, not editing one shared one, so there is no last write wins and nothing to overwrite. Order is settled by a sequence number allocated under a row lock, so two publishes in the same millisecond get 412 and 413. Pro adds presence — who else has the post open — which is about not covering the same moment twice, not about safety.
How fast does an update reach a reader?
Within one poll interval — 5 seconds by default, and you can afford a short one, because the file being polled is a few hundred bytes of static JSON served without PHP. Pro can push over server-sent events instead, at the cost of a PHP process per connected reader.
What does ten thousand readers cost me?
Ten thousand requests for one small static file every few seconds — and with a CDN in front, close to one request per interval reaching your server, because every reader in the same window asks for the same URL. No PHP process, no database connection, no template render. The update files are immutable, so they can be cached hard.
Does it work behind Blitz, Varnish or a CDN?
That is what it is designed for. The page can be cached for a day, because updates arrive over the top of it rather than changing it. Publishing never invalidates the page cache unless you ask it to. Pro adds throttled purging for readers who never run the JavaScript: Cloudflare, Fastly, or a webhook for anything else.
Do I have to use your markup?
No. Copy live/_update.twig and live/_feed.twig into your own templates directory and change
anything; Craft looks there first. There is only ever one card — updates are rendered through that
same partial at publish time and the HTML travels in the JSON — so there is no JavaScript copy of
your markup to drift out of step.
Does it need Redis, a socket server or a third-party service?
None of them. Delivery is files on disk served by the web server you already run. Publishing needs no queue worker. The only optional extra is a CDN, and that is one you already have. (CDN purging, on Pro, does go through Craft's queue.)
What if the static files and the database disagree?
The database is the record, and php craft live/snapshots/rebuild makes the files match it.
Losing the web root loses nothing.
Can coverage be prepared before the entry goes out?
Yes. A live blog is only as public as its entry: on a scheduled, disabled or draft entry, updates are kept but nothing is served or written to the web root until the entry goes live.
Can I use it with a headless front end?
Yes, with Pro's GraphQL. Poll liveFeed, which is one indexed row, and fetch
liveUpdates(since: 412) only when the sequence moves. Ask for html and you get the site's own
rendering of the card. Each update type is its own schema component, so a token can be given the
match commentary without the newsroom's internal feed.
What happens to search indexing and revisions?
Updates are saved with the search index skipped and no revisions, and the entry isn't saved at all. A live blog doesn't produce hundreds of revisions of the match report or queue hundreds of index jobs while the match is on.
What happens after the event ends?
Set the post to Ended. The feed stops polling, and the page is an ordinary, fully cacheable article with the whole commentary rendered into it — the version people read for the next two years. Nothing needs exporting or flattening.
Should I turn on server-sent events?
For an internal dashboard, perhaps. For a cup final, no. Every connected reader holds a PHP process
open, so on FPM your ceiling is pm.max_children, and you find out where it is at the moment a
live blog goes well. Polling static JSON has no such ceiling.
Which versions are supported?
Craft CMS 5.3+ and PHP 8.2+.