Ingest Methods
Four ways to get your catalog into Miso, and how to choose.
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:
- 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.
