# Ingestion

> How content gets into a knowledge base.

A knowledge base holds one or more **sources**. Search and chat only use pages that have finished indexing (the source shows **Ready**). Mix methods freely. Pick the one that already holds the answers.

| Method | Best when | Docs |
|---|---|---|
| **Website** | You have a public domain. Sitemap if you have one, otherwise a link crawl. | [Website](/docs/website) |
| **File uploads** | PDF, Markdown, or plain text you can drop in. | [File uploads](/docs/file-uploads) |
| **WordPress** | Posts and pages should stay in sync from WordPress. | [WordPress](/docs/wordpress) |
| **Shopify** | Products and blog articles from a store. | [Shopify](/docs/shopify) |
| **Laravel** | Eloquent models in a Laravel app. | [Laravel](/docs/laravel) |
| **PHP** | Any PHP app, without Laravel. | [PHP](/docs/php) |
| **API push** | Your own pipeline. Create an API source, then POST pages. | [API push](/docs/api-push) |
| **External S3 storage** | Objects already in S3, R2, Spaces, or MinIO. | Dashboard |

WordPress, Shopify, Laravel, and PHP also install search and chat. Start with that [integration](/docs/wordpress) when it fits.

After a source is Ready, create a [chat](/docs/chat) or [search](/docs/search) widget and point it at those sources.
