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

# Building Custom Ingestion Workflows

> Pull knowledge into Serval from any API or internal system using a knowledge ingestion workflow

Custom knowledge ingestion brings content into your knowledge base from systems that don't have a first-party Serval connector — internal wikis, knowledge APIs, proprietary tools, or legacy systems. You point a **knowledge ingestion workflow** at the source, and Serval keeps the content synced, indexed, and searchable by the help desk agent.

## How it works

<Steps>
  <Step title="A workflow extracts documents">
    A published knowledge ingestion workflow calls your system's API and returns documents as markdown — each with a display name, a stable ID, and a URL used for citations. Workflows support both full syncs and incremental (delta) syncs.
  </Step>

  <Step title="Serval indexes the content">
    On each sync, Serval chunks and embeds every document through the same pipeline as first-party connectors. Unchanged documents are skipped, and documents removed from the source are cleaned up.
  </Step>

  <Step title="A read-only knowledge base mirrors the source">
    Serval automatically creates one read-only knowledge base per custom source, listed under **External Connections** in the Knowledge Bases tab. Each synced document appears as a read-only page, so people can browse exactly what the agent sees. Pages link back to the original source.
  </Step>
</Steps>

Once synced, the agent searches the content on every relevant request and cites the source documents in its answers.

## Setting up a custom source

<Steps>
  <Step title="Publish a knowledge ingestion workflow">
    A workflow author builds and publishes a **knowledge ingestion workflow** — see [Knowledge ingestion workflows](/sections/documentation/workflows/Configure/types#knowledge-ingestion-workflows) for what it must return. If you don't have one yet, the setup dialog links you to Catalyst to author it.
  </Step>

  <Step title="Add the custom source">
    1. In the sidebar, open **Knowledge** and select the **Knowledge Sources** tab
    2. Click **Manage sources**, open the **Available** tab, and choose **Add custom knowledge source**
    3. Configure the source:

    | Field               | What it does                                                                          |
    | :------------------ | :------------------------------------------------------------------------------------ |
    | **Name**            | Display name for the source (defaults to the workflow's name)                         |
    | **Logo**            | Optional — a website domain to fetch a brand logo from                                |
    | **Workflow**        | The published knowledge ingestion workflow that extracts the documents                |
    | **AI context only** | If on, the content is used by the agent but never shown as a browsable knowledge base |
  </Step>

  <Step title="Sync and verify">
    Trigger a sync with **Sync now**, then ask the agent a test question that should be answered from the new content. Confirm the answer cites the right document.
  </Step>
</Steps>

## Managing a custom source

Each custom source appears as a card in the Knowledge Sources tab showing its last sync time, sync-in-progress state, or any error. From the card you can:

* **Sync now** — run an immediate sync instead of waiting for the schedule
* **View Workflow** — jump to the ingestion workflow definition
* **Settings** — edit the source configuration

Source settings include these toggles:

| Setting                 | What it controls                                                        |
| :---------------------- | :---------------------------------------------------------------------- |
| **Searching**           | Whether the agent uses this source's content to answer help tickets     |
| **Cite Document Links** | Whether the agent includes links to the source documents in its answers |
| **AI context only**     | Whether the synced content is hidden from human-facing surfaces         |

Deleting a custom source permanently removes the source and all of its synced data.

## When to use custom ingestion vs. the alternatives

| Situation                                                                                           | Use                                                                                               |
| :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ |
| Content lives in Notion, Confluence, Google Drive, SharePoint, ServiceNow, Zendesk, or Freshservice | [Connected source](/sections/documentation/knowledge-base/connected-sources) — no workflow needed |
| Content lives in a system with an API but no Serval connector                                       | **Custom knowledge ingestion**                                                                    |
| Content doesn't exist in written form yet                                                           | [Author it in Serval](/sections/documentation/knowledge-base/authoring)                           |

## Learn more

* [Knowledge ingestion workflows](/sections/documentation/workflows/Configure/types#knowledge-ingestion-workflows) — authoring reference for the workflow itself
* [Connect to External Sources](/sections/documentation/knowledge-base/connected-sources) — first-party connectors that don't need a workflow
* [Custom Apps](/sections/integrations/custom-app) — pair a custom app with your ingestion workflow
