Multistore and Languages (PrestaShop)
Use this page when you operate more than one PrestaShop shop, when you serve more than one language, or when you are migrating a single-shop store to multistore.
What to check first
Section titled “What to check first”- A working multistore PrestaShop install (PrestaShop 1.7+ or 8+).
- A working Kea install per the standard install flow.
- Knowledge of which shop context you are operating in. The PrestaShop back office has a shop switcher in the top bar that controls the active configuration context.
Search scope
Section titled “Search scope”The search is scoped to a (shop, language) pair. This means:
- A product that is associated with multiple shops is searchable per shop — a storefront visitor on shop B does not see products that are only associated with shop A.
- A product that is translated into multiple languages is searchable per language within each shop — a storefront visitor on shop B in German does not see the French translation of the product name.
- A search query runs against the search for the current shop and language, as determined by the PrestaShop context.
In practice: a storefront visitor on shop B in German sees results from the search for (shop B, German). They will not see a product that is only associated with shop A. They will not see a product that is only translated into French.
Configuration scope
Section titled “Configuration scope”The Kea configuration keys follow PrestaShop’s standard multistore override pattern:
- A default row in the PrestaShop configuration applies to all shops.
- A row with a specific shop set is an override for that shop.
- A row with a specific shop group set (and no specific shop) is an override for that group.
When you save supported settings from the embedded dashboard in the PrestaShop back office, the effective values follow the currently selected shop context. This means:
- Saving in the “All shops” context writes the default.
- Saving in a specific shop context writes a per-shop override.
- The override is read first, then the default, then the seeded default.
To change the configuration for a non-default shop, switch the shop context first using the shop switcher in the PrestaShop back office.
Per-shop and per-group audit
Section titled “Per-shop and per-group audit”The PrestaShop configuration can be audited through the standard PrestaShop configuration APIs or through the PrestaShop back office Shop parameters → General → Multistore view. The audit shows the override pattern after a multistore install or migration.
Language scope
Section titled “Language scope”A query hits the search for the current language only. The current language is determined by PrestaShop’s standard context detection: URL prefix, cookie, browser Accept-Language, and the language id set by PrestaShop.
The search is scoped to the current language as determined by the PrestaShop context. If a product is not translated into the current language, the result is still returned (the untranslated field is shown as empty in the current release) — this depends on your PrestaShop version and theme handling.
A per-language fallback order is not exposed in the current embedded dashboard. The result row for a missing translation is returned with empty translated fields.
Known limitations of the current release
Section titled “Known limitations of the current release”| Limitation | Workaround |
|---|---|
| Bulk reindex always rebuilds for all shops and all languages | There is no per-shop partial reindex exposed in the PrestaShop back office |
| The reindex is global, not per shop | Wait for the global reindex to finish; do not run multiple reindexes in parallel |
| Per-shop overrides in the form save in the active shop context | Switch shop context before saving to avoid silently creating an override |
How to migrate from single-shop to multistore
Section titled “How to migrate from single-shop to multistore”- Before enabling multistore in PrestaShop, note the current values of all Kea configuration keys.
- Enable multistore in PrestaShop (Shop parameters → General → Multistore).
- Create the additional shops under the new shop group.
- Run a full reindex from the dashboard. The reindex creates the search entries for the new shops.
- Re-verify configuration per shop through the configuration audit.
- Verify in preview for each shop and language. See Verify in Preview (PrestaShop).
How the correct setup looks
Section titled “How the correct setup looks”After a successful multistore install or migration:
| Check | What you should see |
|---|---|
| Configuration audit | One row per key per (shop group, shop) override |
| PrestaShop back office dashboard | The indexing status area indicates a ready state |
| Storefront shop A, language X | Returns results from (shop A, language X) |
| Storefront shop A, missing language | Returns the product row with empty translated fields |
| Storefront shop B (added via multistore) | Returns results from (shop B, …) only, not from (shop A, …) |
Common problems
Section titled “Common problems”| Symptom | Most likely cause | Resolution |
|---|---|---|
| Shop B returns no results | The full reindex did not run after the new shop was created | Run a full reindex from the dashboard |
| Shop B returns results from shop A | The query is not pinning the shop correctly | Check the configuration; check the catalog shop associations |
| Configuration changes are not visible on a non-default shop | You saved the form in the wrong shop context | Switch shop context and re-save |
| The dashboard shows a different state per shop | The reindex is global, not per shop | Wait for the global reindex to finish |
Recovery or rollback
Section titled “Recovery or rollback”If a multistore migration goes wrong:
- The Kea module does not modify the multistore configuration in PrestaShop. The worst case is incorrect search, not data loss.
- A fresh full reindex rebuilds the search for all shops and all languages. Run it after correcting the shop associations in the catalog.