Ingest Methods
There are four ways to get your catalog into Miso. They all end at the same place, so you can mix them: a crawler for the archive, then the API for everything new.
| Method | Use it when | You build |
|---|---|---|
| WordPress plugin | Your site runs on WordPress. | Nothing. Install it, paste your key, sync. |
| Data API | Your CMS can call an API. | A publish hook. |
| SFTP | You already export files. | An export job. |
| Crawler | You cannot export at all. | Nothing. |
The Data API and the WordPress plugin you can set up alone. For SFTP and the crawler, ask your Miso representative to enable and configure it.
WordPress plugin
MisoAI/miso-wordpress-plugin — the official plugin. It syncs your posts to your Miso catalog, and keeps them in sync as they change.
What it does:
- Hooks
wp_after_insert_post, so an update or a deletion cascades to Miso. - Adds a Miso AI menu to your admin panel, for the API key and for manual syncs.
- Adds WP-CLI commands, for a sync you script or schedule.
Four steps to a live catalog:
- Install and activate the plugin.
- Open Miso AI ▸ Settings in your WordPress admin panel.
- Enter your API key, then select Save Changes.
- Open Miso AI ▸ Posts and select Sync Posts to send everything you have.
Step 4 is your backfill. After that the hook keeps Miso current, so publishing a post in WordPress puts it in Miso without another step.
Multisite: set a product ID prefix
CAUTION: On a multisite network, set a prefix on every site before you sync. Without one, two sites overwrite each other's records, and a full sync on one site deletes the other site's records.
The plugin builds each product_id from the WordPress post id. Post 12345
becomes product 12345. Every site in a network numbers its posts from 1, so
two sites both hold a post 12345, and the second upload overwrites the first.
Product ID prefix on the Miso AI ▸ Settings page corrects this. Give each site a different value:
| Site | Prefix | Post 12345 becomes |
|---|---|---|
| Site one | mysite1_ |
mysite1_12345 |
| Site two | mysite2_ |
mysite2_12345 |
The prefix also scopes deletion. A full sync removes the records that carry that prefix, and leaves the rest of the catalog alone. This is what makes one Miso catalog safe for a whole network.
Set the prefix before the first sync. If you add one later, the records
from the first sync keep their old unprefixed ids, and a later full sync does
not clean them up. Ask your Miso representative to remove them, or delete them
with POST /v1/products/_delete.
Data API
Your CMS calls Miso when an article changes. This gives you the most control: you decide the fields, the timing, and what to exclude.
curl -X POST "https://api.askmiso.com/v1/products" \
-H "X-Api-Key: YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{ "data": [ { "product_id": "art_001", "title": "…" } ] }'
Wire three CMS events, and your catalog stays correct:
| CMS event | Call |
|---|---|
| Publish | POST /v1/products |
| Update | POST /v1/products with the same product_id. It overwrites. |
| Unpublish or delete | POST /v1/products/_delete |
See Integrating Your Data for batching, the status poll, and validation.
SFTP
You drop files, and Miso loads them. Use it when a nightly export already exists, or when your CMS cannot call out.
- Miso gives you the host and the credentials.
- You write JSON, XML, or CSV, on your own schedule.
- Miso reads each drop and loads it.
The trade-off is latency. Your catalog is as fresh as your last drop, so a nightly export means answers are up to a day behind. Send breaking news through the API even when the archive arrives by SFTP.
Crawler
Miso reads your public pages, the way a search engine does. It needs no work from your team, which makes it the fastest way to start and the usual choice for a sandbox.
Two limits are worth knowing before you pick it:
- It sees what a visitor sees. Content behind a paywall or a login does not reach Miso unless you allow the crawler through.
- It infers structure. The API tells Miso exactly which text is the body and which value is the publication date. A crawler works it out from the page.
Most customers start on the crawler and move to the API or the plugin when they go live.
Which to choose
| If | Choose |
|---|---|
| You run WordPress | The plugin |
| You need a record in Miso within seconds of publishing | The Data API |
| You already export nightly, and a day of latency is acceptable | SFTP |
| You want to see Answers on your content this week | The crawler |
Whatever you choose, send deletes. Miso never compares your source against its index, so an article you remove keeps serving until a delete arrives. See Integrating Your Data.
