How to Integrate Writer with Your Headless CMS
Connect Writer to your headless CMS so approved product, brand, and support content can ground Writer Knowledge Graph apps, Palmyra prompts, and review workflows within seconds of publication.
What is Writer?
Writer is an enterprise generative AI platform for building AI apps and workflows with Palmyra LLMs, Knowledge Graph, AI Studio, and APIs. Teams use Writer to generate, rewrite, classify, and review content against company style, terminology, and policy. It fits AI Content & Workflows teams that need model output grounded in approved company knowledge, not stale documents or copied text.
Why integrate Writer with a headless CMS?
Writer works best when it can use the same approved content your customers and internal teams already rely on: product specs, help articles, legal disclaimers, campaign messaging, and brand rules. If that content lives outside Writer, teams end up copying text into prompts, uploading files by hand, or waiting for a weekly export. That creates drift. A product page changes on Tuesday, but the Writer app still answers with Monday's pricing.
A headless CMS integration fixes that by turning published content into a reliable source for Writer workflows. With Sanity's AI Content Operating System, content is structured as typed JSON in the Content Lake, so Writer doesn't need to scrape HTML or parse page blobs. GROQ selects the exact fields Writer needs, such as article title, body text, product references, region, audience, and last published date.
The real win is timing. Webhooks can fire on publish, update, or delete, and Functions can run the sync logic without a separate server. That means a support article can be published in Sanity Studio and pushed to a Writer Knowledge Graph right away. The trade-off is that you need to model content cleanly up front and track Writer file IDs for updates and deletes. It's extra setup, but it prevents the slow, manual cleanup that happens when AI workflows run on disconnected content.
Architecture overview
A typical Writer and Sanity integration starts when an editor publishes a document in Sanity Studio. A Sanity webhook fires for the publish event and sends a small payload, usually the document ID and type, to a Sanity Function, Next.js route, or other webhook listener. The handler verifies the webhook secret, then uses @sanity/client to query the Content Lake with GROQ. GROQ keeps the payload focused. For example, a query can fetch an FAQ's title, slug, Portable Text converted to plain text, product references, audience, locale, and reviewedBy fields in one request. The handler then formats that content as markdown or JSON and calls Writer's Knowledge Graph API, such as POST https://api.writer.com/v1/graphs/{graph_id}/file, with a Bearer token from Writer. Writer indexes the uploaded file in the selected Knowledge Graph. From there, Writer apps, AI Studio workflows, and API-based Palmyra prompts can use the newly published content as grounding material. End users see the result as an answer in an internal Writer app, a reviewed draft, a generated support response, or a brand-safe rewrite. For production deletes and updates, store the Writer file ID back in Sanity or in a small lookup table so your sync can replace the old file instead of creating duplicates.
Common use cases
Ground Writer apps in approved product content
Sync product pages, release notes, and pricing copy from Sanity to a Writer Knowledge Graph so Palmyra responses use current source material.
Run brand and style checks on published copy
Send article or campaign fields to Writer for terminology, tone, and policy review before content reaches a customer-facing channel.
Localize with consistent source context
Use Sanity locale fields and Writer workflows to generate region-specific drafts that still follow approved product names and claims.
Answer support questions from current help content
Push Sanity help articles into Writer so internal support tools can answer questions from the latest published FAQs and troubleshooting steps.
Step-by-step integration
- 1
Set up Writer
Create or choose a Writer account, create a Knowledge Graph for the Sanity-backed content, and copy the graph ID. In Writer admin, create an API key with access to that graph. For a TypeScript project, install the tools you'll need: npm install @sanity/client writer-sdk. The code example below uses Writer's REST API for file ingestion because it maps directly to Knowledge Graph uploads.
- 2
Model the source content in Sanity Studio
Create schemas for the content Writer needs, such as article, product, faq, or policy. Include fields that help Writer reason about context: title, slug, body, audience, locale, product references, compliance notes, lastReviewedAt, and status. Keep rich text in Portable Text so you can query, transform, and trace it field by field.
- 3
Create a publish trigger
Add a Sanity webhook that fires on create, update, and delete for the document types you want to sync. Use a GROQ filter like _type in ['article', 'faq', 'product'] && !(_id in path('drafts.**')). Send a minimal projection, such as {"_id": _id, "_type": _type}, to your handler.
- 4
Fetch the exact fields with GROQ
In your webhook handler or Sanity Function, use @sanity/client to fetch the full document from the Content Lake. Use GROQ projections to join references, flatten fields, and convert Portable Text into text with pt::text(body), so Writer receives a clean markdown or JSON file.
- 5
Push content to Writer
Call Writer's Knowledge Graph API with POST https://api.writer.com/v1/graphs/{graph_id}/file. Upload a markdown or JSON file that includes the title, URL, content body, locale, audience, and source document ID. In production, save the returned Writer file ID so updates and deletes can replace or remove the matching file.
- 6
Test the end-user workflow
Publish one FAQ in Sanity Studio, confirm the webhook ran, and verify the file appears in the Writer Knowledge Graph. Then test the workflow your users will touch: a Writer app, an AI Studio workflow, or your own frontend that calls Writer's API. Ask a question that depends on the newly published FAQ and check that the answer cites the updated content.
How Sanity + Writer works
Build your Writer integration on Sanity
Sanity's AI Content Operating System gives you the structured content foundation, real-time event system, and flexible APIs to connect Writer to the content your teams already publish.
Start building free →CMS approaches to Writer
| Capability | Traditional CMS | Sanity |
|---|---|---|
| Source data for Writer | Often exposes rendered pages or mixed HTML, so teams clean text before uploading it to Writer. | Stores typed JSON in the Content Lake, with Portable Text, references, and metadata ready for a Writer sync. |
| Sync timing | Commonly depends on plugins, manual exports, or scheduled jobs, which can leave Writer behind published content. | Webhooks and Functions can trigger on publish events and run the Writer sync server-side without extra infrastructure. |
| Field-level control | Often sends the whole page, including navigation, layout text, and fields Writer doesn't need. | GROQ can select title, body text, locale, audience, product references, and review status in one query. |
| AI workflow fit | Editors often copy Writer output back into fields by hand, which makes review history hard to follow. | Schema-as-code, Content Agent, Agent API, Tasks, and Content Releases can support review, generation, audit, and publish flows. |
| Content model ownership | Quick for page editing, but reuse across Writer, apps, and agents gets harder as fields mix with layout. | Schemas live in code and version control. The trade-off is that teams should plan the content model before connecting Writer. |
| Multi-channel reuse | Website output is usually the primary target, so Writer, mobile, and internal tools may get separate copies. | One Content Lake can feed web, mobile, Writer, and production AI agents through Agent Context. |
Keep building
Explore related integrations to complete your content stack.
Sanity + OpenAI
Generate drafts, summaries, classifications, and metadata from structured Sanity content using OpenAI models.
Sanity + Anthropic (Claude)
Run long-context review, rewriting, and content analysis workflows against structured content from the Content Lake.
Sanity + AirOps
Build AI workflows that read from Sanity, enrich content, and write approved results back into Sanity Studio.