Every article that shows up on a Citeya-powered site got there through the same three-stage pipeline, whether it was scheduled a month in advance or generated five minutes ago: a keyword campaign in BrandOps, a quality-gated generation pass inside Citeya, and a signed webhook delivery to the destination site. None of those stages is visible from the finished article, which is exactly the point — but it's worth walking through what actually happens in between, especially for anyone running campaigns and wondering why a scheduled article shows 'Starting soon' or why a status flips from Active to Completed on its own.
Stage One: A Campaign Starts in BrandOps
BrandOps is where a content campaign actually begins — a brand name, a category, a target site, a cadence (once a day, once a week, every two days), and a list of keywords ranked by priority. Pushing a campaign from BrandOps doesn't generate anything by itself. It queues the work: one row per keyword, sitting in a pending state until the campaign's schedule says it's time.
This separation matters for how the two systems specialize. BrandOps owns campaign strategy — which keywords, in what order, at what pace, targeting which site. Citeya owns everything downstream of 'here's a keyword, write it.' A campaign manager in BrandOps never has to think about sourcing, citation quality, or webhook delivery. Citeya never has to think about which keywords are worth targeting in the first place.

Stage Two: Citeya Turns a Keyword Into a Sourced Article
When a keyword's turn comes up, Citeya runs it through the same generation pipeline every article goes through, campaign or not: pull real sources for the topic, generate a draft that cites them inline, score that draft against an editorial bar, and — if it falls short — regenerate with specific feedback about what to fix rather than a vague 'try again.' A draft that scores well on citations but skips the FAQ section, or nails the structure but leaks a stray piece of internal scaffolding into the body text, doesn't pass. It gets sent back with exactly what needs fixing.
The output of this stage is a fully structured article — headline, intro, sourced sections, a Frequently Asked Questions block — written in a neutral, third-person, reported voice. Nothing about who wrote it, what it should be titled, or how it should be formatted is left ambiguous by the time it moves to the next stage.
Stage Three: A Signed Webhook Delivery, Not a File Drop
Getting the finished article onto the destination site doesn't mean handing over a file or a database export. Citeya sends it as a cryptographically signed HTTP request — the same HMAC-based pattern GitHub and Stripe use for their own webhooks — to an endpoint the destination site controls. The receiving site verifies the signature, checks the request hasn't been replayed from an old capture, and only then accepts the payload.
The article itself arrives as structured content — a title, an excerpt, and a content field broken into typed blocks (headings, paragraphs, calls to action) — completely separate from anything Citeya used internally to generate it. Publishing works by upserting on the article's slug, so the same call that creates a new article the first time updates it cleanly if it's republished later. If the destination site is temporarily unreachable, Citeya retries with backoff rather than losing the article; if the payload itself is invalid, it fails immediately rather than retrying something that will never succeed.
A Real Example: CricLegacy
CricLegacy is one of the live destinations on the receiving end of this pipeline. A cricket-focused keyword campaign in BrandOps, targeting CricLegacy, produces articles written in the same neutral, source-attributed style as everything else Citeya generates — no fabricated first-person commentary standing in for a named author's actual opinion, no internal generation notes leaking into the body text, one consistent editorial structure whether the article covers a single match report or a season-long storyline.

Why This Matters
The three-stage split is what makes the whole thing reliable at a cadence no manual publishing workflow could sustain. A campaign set to publish daily doesn't need anyone to remember to check on it — BrandOps tracks what's queued, Citeya enforces the same quality bar on the hundredth article as the first, and the webhook layer means a destination site goes live immediately once it accepts a request, with no rebuild or deploy step in between. The campaign dashboard reflects all of it: 'Active' means there's still queued work and a schedule driving it, 'Completed' means every keyword in the campaign has been generated and delivered, and the next-run estimate is exactly that — a straight read of the cadence you set, not a guess.

Three systems, one job each: BrandOps decides what to write about, Citeya decides how to write it well, and a signed webhook decides how it gets there safely.