# What syncs

> Which store data ShopAssist copies into its catalog mirror, what it reads live, and what it never stores.

Source: https://shopassist.coec.dk/docs/catalog/what-syncs · Updated 2026-10-01

ShopAssist keeps a copy of your catalog (the *catalog mirror*) so it can search and answer in milliseconds. Personal data such as orders and customers is never copied: it is read live, only for a verified shopper, when they ask.

| Data                        | How                                                                      | Notes                                                                                        |
| --------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| Products and variants       | Mirrored                                                                 | Titles, descriptions, options, attributes, images, categories, tags, translations            |
| Prices                      | Mirrored; live for other currencies and markets where needed             | Sale windows are respected: a price is refetched when a sale starts or ends                  |
| Stock                       | Mirrored, refreshed live before the assistant states a store's stock     | See [multi-location stock](/docs/catalog/multi-location-stock)                               |
| Locations and opening hours | Mirrored                                                                 | See [store locations](/docs/catalog/store-locations-and-opening-hours)                       |
| Pages and policies          | Mirrored into the knowledge base                                         | See [policies and pages](/docs/knowledge-base/policies-and-pages)                            |
| Orders                      | **Never stored.** Read live for a verified shopper                       | See [orders and identity](/docs/orders-and-identity/overview)                                |
| Customers                   | **Never stored.** Only a signed-in customer's id is used for one request |                                                                                              |
| Discount codes              | Only codes you list in **Catalog → Discount codes**                      | The assistant never invents codes ([discount codes](/docs/cart-and-checkout/discount-codes)) |

## Descriptions are sanitized [#sanitizing]

Product HTML is reduced to basic formatting (paragraphs, lists, tables, links). Scripts, styles, hidden text and invisible characters are removed, so content hidden in your descriptions can't instruct the assistant. See [prompt injection and safety](/docs/security/prompt-injection-and-safety).

## Plan product limit [#product-limit]

Your plan sets how many products per store are searchable. Products above the limit are synced but not searchable, and the dashboard shows [`plan_product_limit`](/docs/troubleshooting/sync-issues#plan_product_limit). Existing products are always updated.

## Prices and stock come from your store [#source-of-truth]

The assistant states prices and stock only from this data and live reads, never from the knowledge base, a web page or its own memory. If a price can't be confirmed (for example during a sale boundary), the product card shows no price and links the product page.
