AI Content & Workflows8 min read

How to Integrate Profound with Your Headless CMS

Connect Profound to your headless CMS so every publish event can feed fresh, structured content into AI search visibility, answer monitoring, and content gap workflows.

Published April 29, 2026
01Overview

What is Profound?

Profound is an AI visibility platform that helps marketing, SEO, and content teams understand how brands appear in AI answer engines such as ChatGPT, Perplexity, Gemini, and Copilot. Teams use it to track prompts, citations, share of voice, competitor mentions, and content opportunities across AI-generated answers. Its core value is connecting what people ask AI systems with the content and sources those systems cite.


02The case for integration

Why integrate Profound with a headless CMS?

AI answer visibility changes when your content changes. If a product page ships on Monday, a pricing update goes live on Wednesday, and a comparison article is published on Friday, Profound needs the latest URLs, titles, summaries, topics, and ownership metadata to make the analysis useful. Without an integration, teams usually export URLs from a spreadsheet, paste updates into another tool, and hope the tracked content matches what's actually live.


03Architecture

Architecture overview

A typical Sanity and Profound integration starts when an editor publishes or updates content in Sanity Studio. A Sanity webhook, filtered with GROQ, fires only for content types that matter to AI visibility, such as articles, product pages, help docs, comparison pages, and landing pages. The webhook can call a Sanity Function, or your own API route, with the document ID and mutation details. The server-side handler uses @sanity/client to query the Content Lake with GROQ. Instead of sending the full document, the query projects only the fields Profound needs: title, slug, canonical URL, excerpt, body text, topic tags, product references, language, market, and publish status. GROQ can also join references, for example pulling a product name, category, and industry from referenced documents in the same request. The handler then calls Profound's API with an API key from your Profound workspace. In many implementations, that means upserting a content item or URL source in Profound so it can be associated with prompt tracking, citation analysis, and AI answer visibility reports. From there, Profound analyzes how that content is cited or omitted in AI answer engines, and your team sees the results in Profound. The end user still reads content on your website, app, or help center, while Profound gives your team feedback about how that same content performs in AI-generated answers.


04Use cases

Common use cases

🔎

AI answer visibility refresh

Send newly published URLs and summaries to Profound so prompt tracking reflects the content your team just shipped.

📊

Share-of-voice reporting by content type

Attach Sanity content type, topic, market, and campaign fields to Profound records so reports can show which assets influence AI answers.

🧩

Content gap workflows

Use Profound findings to identify prompts where your brand isn't cited, then route those gaps back into Sanity as briefs, Tasks, or draft pages.

Fact coverage for product and help content

Sync structured product facts, docs, and help articles so teams can compare AI answers against the latest source material.


05Implementation

Step-by-step integration

  1. 1

    Set up Profound access

    Create or open your Profound workspace, confirm API access with your Profound account team, and generate an API key. Note the workspace ID, the API base URL shown in your Profound settings, and whether your account accepts content item upserts, URL submissions, or sitemap-based ingestion.

  2. 2

    Install the Sanity client

    In the service that will handle sync events, install @sanity/client. For a Sanity Function, add it to your function package. For a Next.js or Node.js API route, add it to the same app that receives the webhook.

  3. 3

    Model AI visibility fields in Sanity Studio

    Add fields that Profound can use for analysis and reporting, such as seoTitle, metaDescription, canonicalUrl, excerpt, targetPromptCluster, market, language, product references, topic tags, and publish status. Keep editorial notes in separate fields so you don't send internal context to Profound by accident.

  4. 4

    Create the publish trigger

    Create a Sanity webhook that fires on create, update, and delete events for published content. Use a GROQ filter such as _type in ['article', 'productPage', 'helpArticle'] && defined(slug.current) so draft-only documents and unrelated content don't trigger Profound syncs.

  5. 5

    Fetch clean content with GROQ

    In the webhook handler or Sanity Function, use GROQ to fetch the published document by ID. Project only the fields Profound needs, and join referenced products, categories, authors, or markets in the same query.

  6. 6

    Push to Profound, then test the frontend

    Call Profound's content or URL ingestion endpoint with the API key. Publish a test article in Sanity Studio, confirm the webhook fires, verify the item appears in Profound, and check that the public page has the same canonical URL you sent to Profound.


06Code

Code example

typescriptapi/sync-profound.ts
import {createClient} from '@sanity/client'

const sanity = createClient({
  projectId: process.env.SANITY_PROJECT_ID!,
  dataset: process.env.SANITY_DATASET!,
  apiVersion: '2025-01-01',
  token: process.env.SANITY_READ_TOKEN!,
  useCdn: false,
})

export async function POST(req: Request) {
  const {ids} = await req.json()
  const id = ids?.created?.[0] || ids?.updated?.[0]
  if (!id) return Response.json({skipped: true})

  const doc = await sanity.fetch(`
    *[_id == $id][0]{
      _id,
      _type,
      title,
      "url": canonicalUrl,
      "summary": coalesce(metaDescription, excerpt),
      "topics": topics[]->title,
      "products": products[]->{name, category},
      language,
      market
    }
  `, {id})

  if (!doc?.url) return Response.json({skipped: true})

  const res = await fetch(`${process.env.PROFOUND_API_BASE_URL}/v1/content/items`, {
    method: 'PUT',
    headers: {
      Authorization: `Bearer ${process.env.PROFOUND_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      external_id: doc._id,
      url: doc.url,
      title: doc.title,
      summary: doc.summary,
      metadata: {
        type: doc._type,
        topics: doc.topics,
        products: doc.products,
        language: doc.language,
        market: doc.market,
      },
    }),
  })

  if (!res.ok) throw new Error(await res.text())
  return Response.json({synced: doc._id})
}

07Why Sanity

How Sanity + Profound works

Build your Profound integration on Sanity

Sanity gives you the structured content foundation, real-time event system, and flexible APIs to connect Profound with the content your team publishes every day.

Start building free →

08Comparison

CMS approaches to Profound

CapabilityTraditional CMSSanity
Structured data for AI visibility analysisContent often lives as page HTML, shortcodes, or plugin fields, so Profound inputs may require scraping and cleanup.The Content Lake stores typed JSON with references, so Profound can receive clean titles, URLs, topics, products, markets, and summaries.
Real-time sync on publishTeams often rely on scheduled crawls, plugin hooks, or manual URL exports.Webhooks can trigger on specific publish events, and Functions can run the server-side Profound sync without a separate worker.
Field-level control over Profound payloadsFeeds may expose whole pages, which can mix public copy with navigation, boilerplate, or hidden fields.GROQ can project exactly what Profound needs, including referenced products, topics, authors, and localization fields in one query.
Turning Profound findings into content workGap analysis often becomes a spreadsheet, then a separate ticket, then a manual content update.Profound findings can map back to Sanity documents, Tasks, comments, Content Releases, or Content Agent workflows.
Multi-channel consistencyThe website is usually the primary output, so AI visibility workflows may use a different content copy.One structured back end can feed the website, app, help center, Profound, and AI agents from the same source.
Operational trade-offsFast to start if your site already exists, but AI workflows can be brittle when data is trapped in rendered pages.You need to design schemas and sync rules up front, but that structure makes Profound reporting cleaner and easier to maintain.

09Next steps

Keep building

Explore related integrations to complete your content stack.

Ready to try Sanity?

See how Sanity's Content Operating System powers integrations with Profound and 200+ other tools.