> ## Documentation Index
> Fetch the complete documentation index at: https://gleanfeed.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Headless SDK overview

> Add Glean Feed capabilities to a custom web interface without using the packaged launcher or portal chrome.

The Headless SDK is the path for putting Glean Feed capabilities inside an interface you design. Your product renders the form, button, dropdown, or feed; Glean Feed receives requests and serves published updates behind it. Nothing mounts a packaged launcher or portal screen.

<Card title="Capture your first request" icon="https://mintcdn.com/gleanfeed/XujswKjVl9A7LyQN/icons/feedback.svg?fit=max&auto=format&n=XujswKjVl9A7LyQN&q=85&s=1f005c326aa0607607715a2030083c3d" href="/headless/feedback" width="24" height="24" data-path="icons/feedback.svg">
  Build a custom feedback form and confirm that its first request reaches your Glean Feed dashboard.
</Card>

<Card title="Render published updates" icon="https://mintcdn.com/gleanfeed/XujswKjVl9A7LyQN/icons/changelog.svg?fit=max&auto=format&n=XujswKjVl9A7LyQN&q=85&s=011b787d7aa6021cb4a74242881e5531" href="/headless/changelog" width="24" height="24" data-path="icons/changelog.svg">
  Fetch public changelog entries and render a custom update feed, menu, or notification view.
</Card>

## Choose headless when

* Your feedback or updates UI must follow your own component system and interaction design.
* Your server should control submissions, customer attribution, validation, or enrichment.
* A browser must submit directly on behalf of a signed-in customer without receiving a long-lived secret.
* You do not want the packaged Glean Feed launcher, inline portal, or portal chrome.

## Compare the web integration paths

| Path                | You build                                     | How it connects                                                                               | Choose it when                                                                      |
| ------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **REST API**        | Your server workflow or complete interface    | A server-held API key                                                                         | You need broad feedback, roadmap, or changelog operations from trusted server code. |
| **Headless SDK**    | The customer-facing UI                        | Your server uses REST, or a signed customer submits through a supported browser-direct helper | You want Glean Feed capabilities inside your existing web interface.                |
| **Packaged widget** | Configuration around Glean Feed's provided UI | A script or React wrapper embeds the hosted experience                                        | You want a launcher or inline portal with less interface work.                      |

Headless does not replace the REST API. The recommended feedback flow is headless at the interface and REST on your server. Browser-direct helpers are available when avoiding the extra server round trip matters and you can identify each customer securely.

## Two safe feedback paths

### Server-controlled submission (recommended)

Your browser sends the form to your backend. Your backend authenticates the customer, adds any useful context, and calls [`POST /feedback`](/api/endpoints#feedback) with an [API key](/api/authentication). The key never reaches browser code.

### Signed browser-direct submission

Your server signs the logged-in customer's identity with the workspace widget secret. Glean Feed exchanges that signature for a customer token, and the browser-direct helper uses that token to submit. The token is valid for up to 90 days and stops working earlier if that customer's Glean Feed session is invalidated. The widget secret and API keys remain on your server.

The signature proves that your server recognizes the customer. It does not make arbitrary browser input trustworthy, so Glean Feed still applies workspace, board, moderation, and rate-limit rules. See [Identify customers](/widget/identity) for the signing flow.

<Warning>
  Never put an API key or widget secret in browser JavaScript. Browser-direct submissions require a
  customer-specific token returned after server-signed identification.
</Warning>

## Private context for your team

Feedback can include a `sourceUrl` and a small `metadata` object—for example, the product screen, plan, or app version that accompanied a request. Glean Feed stores these fields as private dashboard context for your team. They are not rendered on the public portal, even when the request belongs to a public board.

Only send context your team needs for triage. Put information the customer should see in the request description instead.

## Start building

Follow the [feedback quickstart](/headless/feedback) to create the recommended server-side flow, verify the first request, and then compare the signed browser-direct option.

Follow the [updates quickstart](/headless/changelog) to fetch published entries, link to full updates, and add optional per-browser unread state.

To add a ready-made Glean Feed interface instead, [install the packaged widget](/widget/install).
