[{"data":1,"prerenderedAt":1241},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fintegrations\u002Fmagento":331,"docs-\u002Fdocs\u002Fintegrations\u002Fmagento-surround":1238},[4],{"title":5,"path":6,"stem":7,"children":8,"page":46},"Docs","\u002Fdocs","docs",[9,47,72,90,132,198,241,252,276,301],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":46},"Getting started","What Zaproo Search is, a quickstart, and wiring search into a storefront.","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[16,22,28,34,40],{"title":17,"path":18,"stem":19,"description":20,"icon":21},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","What Zaproo Search is, the five things you work with, and how a product catalog becomes a search box on your shop.","i-lucide-book-open-text",{"title":23,"path":24,"stem":25,"description":26,"icon":27},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","Set up search for your shop in the cabinet, from a new account to a first search, with the API and MCP as other ways to do the same.","i-lucide-zap",{"title":29,"path":30,"stem":31,"description":32,"icon":33},"Integrate a storefront","\u002Fdocs\u002Fgetting-started\u002Fstorefront","docs\u002F1.getting-started\u002F3.storefront","Build a search results page with facets and an autocomplete box on top of the search and suggest routes.","i-lucide-store",{"title":35,"path":36,"stem":37,"description":38,"icon":39},"JavaScript SDK","\u002Fdocs\u002Fgetting-started\u002Fjavascript-sdk","docs\u002F1.getting-started\u002F4.javascript-sdk","Search, autocomplete and event tracking from a storefront with one small client that runs in the browser, on your server and in edge functions.","i-lucide-braces",{"title":41,"path":42,"stem":43,"description":44,"icon":45},"AI shopping assistant","\u002Fdocs\u002Fgetting-started\u002Fai-assistant","docs\u002F1.getting-started\u002F5.ai-assistant","A chat widget for your storefront that finds products and answers questions from your indexes.","i-lucide-sparkles",false,{"title":48,"description":49,"icon":50,"path":51,"stem":52,"children":53,"page":46},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[54,60,66],{"title":55,"path":56,"stem":57,"description":58,"icon":59},"Account and sign-in","\u002Fdocs\u002Faccount\u002Fsign-in","docs\u002F2.account\u002F1.sign-in","Create an account, verify your email, stay signed in, manage signed-in devices and change or reset your password.","i-lucide-log-in",{"title":61,"path":62,"stem":63,"description":64,"icon":65},"Organizations, members and roles","\u002Fdocs\u002Faccount\u002Forganizations","docs\u002F2.account\u002F2.organizations","What an organization holds, how to add members, and what owners, admins and members may do.","i-lucide-building-2",{"title":67,"path":68,"stem":69,"description":70,"icon":71},"Projects","\u002Fdocs\u002Faccount\u002Fprojects","docs\u002F2.account\u002F3.projects","Group the indices and API keys of one shop or one environment, and keep staging apart from production.","i-lucide-folder-kanban",{"title":73,"description":74,"icon":75,"path":76,"stem":77,"children":78,"page":46},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[79,84],{"title":80,"path":81,"stem":82,"description":83,"icon":75},"API keys","\u002Fdocs\u002Fkeys\u002Fapi-keys","docs\u002F3.keys\u002F1.api-keys","Secret and public keys, full and read access, index scope, allowed origins, expiry, and how to revoke a key.",{"title":85,"path":86,"stem":87,"description":88,"icon":89},"Rate limits and errors","\u002Fdocs\u002Fkeys\u002Frate-limits","docs\u002F3.keys\u002F2.rate-limits","How many requests each route accepts per minute, what a 429 looks like, the error format and every error code with its HTTP status.","i-lucide-gauge",{"title":91,"description":92,"icon":93,"path":94,"stem":95,"children":96,"page":46},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[97,102,108,114,120,126],{"title":98,"path":99,"stem":100,"description":101,"icon":93},"Indices and languages","\u002Fdocs\u002Findexing\u002Findices","docs\u002F4.indexing\u002F1.indices","Create an index, pick its language, read its status, and change the language later with a reindex.",{"title":103,"path":104,"stem":105,"description":106,"icon":107},"Mapping and fields","\u002Fdocs\u002Findexing\u002Fmapping","docs\u002F4.indexing\u002F2.mapping","Field types, the five flags that decide what a field is used for, text analysis options, unmapped fields, and which changes need a reindex.","i-lucide-table-properties",{"title":109,"path":110,"stem":111,"description":112,"icon":113},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload, browse and delete documents in the cabinet or through the API, follow each write as a task, and retry safely with Idempotency-Key.","i-lucide-file-json",{"title":115,"path":116,"stem":117,"description":118,"icon":119},"Full catalog sync","\u002Fdocs\u002Findexing\u002Ffull-sync","docs\u002F4.indexing\u002F4.full-sync","Replace the whole catalog with a replace session, so products missing from your export disappear from search, without downtime.","i-lucide-refresh-cw",{"title":121,"path":122,"stem":123,"description":124,"icon":125},"Reindex and versions","\u002Fdocs\u002Findexing\u002Fversions","docs\u002F4.indexing\u002F5.versions","Rebuild an index with its saved mapping and swap it in without downtime, follow or cancel the rebuild, and read activeVersion and buildingVersion.","i-lucide-git-compare-arrows",{"title":127,"path":128,"stem":129,"description":130,"icon":131},"Data source","\u002Fdocs\u002Findexing\u002Fdata-source","docs\u002F4.indexing\u002F6.data-source","Let Zaproo download your product feed on a schedule, map it to documents, write only what changed and delete what left the feed.","i-lucide-rss",{"title":133,"description":134,"icon":135,"path":136,"stem":137,"children":138,"page":46},"Integrations","Connect your shop. Magento 2, product feeds and the API work today; more platforms are coming.","i-lucide-plug-zap","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations",[139,145,151,156,162,168,173,178,183,188,193],{"title":140,"path":141,"stem":142,"description":143,"icon":144},"Integrations overview","\u002Fdocs\u002Fintegrations\u002Foverview","docs\u002F4.integrations\u002F01.overview","The ways to get your catalog into Zaproo Search, which one to pick, and how a connected shop shows up in the cabinet.","i-lucide-layout-grid",{"title":146,"path":147,"stem":148,"description":149,"icon":150},"Magento 2","\u002Fdocs\u002Fintegrations\u002Fmagento","docs\u002F4.integrations\u002F02.magento","Install the Zaproo Search module for Magento 2, connect each store view to its own index, and keep the catalog in sync.","i-lucide-shopping-cart",{"title":152,"path":153,"stem":154,"description":155,"icon":131},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. You set it up in the cabinet, and Zaproo downloads the feed on a schedule and writes only what changed.",{"title":157,"path":158,"stem":159,"description":160,"icon":161},"REST API and MCP","\u002Fdocs\u002Fintegrations\u002Frest-api-and-mcp","docs\u002F4.integrations\u002F04.rest-api-and-mcp","Send documents from your own code with the REST API, or let an AI agent manage the index over MCP.","i-lucide-code",{"title":163,"path":164,"stem":165,"description":166,"icon":167},"Shopify","\u002Fdocs\u002Fintegrations\u002Fshopify","docs\u002F4.integrations\u002F05.shopify","A Zaproo Search integration for Shopify is coming soon. Until then, connect the shop through a product feed or the REST API.","i-lucide-shopping-bag",{"title":169,"path":170,"stem":171,"description":172,"icon":167},"WooCommerce","\u002Fdocs\u002Fintegrations\u002Fwoocommerce","docs\u002F4.integrations\u002F06.woocommerce","A Zaproo Search integration for WooCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":174,"path":175,"stem":176,"description":177,"icon":167},"Shopware","\u002Fdocs\u002Fintegrations\u002Fshopware","docs\u002F4.integrations\u002F07.shopware","A Zaproo Search integration for Shopware is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":179,"path":180,"stem":181,"description":182,"icon":167},"BigCommerce","\u002Fdocs\u002Fintegrations\u002Fbigcommerce","docs\u002F4.integrations\u002F08.bigcommerce","A Zaproo Search integration for BigCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":184,"path":185,"stem":186,"description":187,"icon":167},"PrestaShop","\u002Fdocs\u002Fintegrations\u002Fprestashop","docs\u002F4.integrations\u002F09.prestashop","A Zaproo Search integration for PrestaShop is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":189,"path":190,"stem":191,"description":192,"icon":167},"commercetools","\u002Fdocs\u002Fintegrations\u002Fcommercetools","docs\u002F4.integrations\u002F10.commercetools","A Zaproo Search integration for commercetools is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":194,"path":195,"stem":196,"description":197,"icon":167},"Salesforce Commerce Cloud","\u002Fdocs\u002Fintegrations\u002Fsalesforce-commerce-cloud","docs\u002F4.integrations\u002F11.salesforce-commerce-cloud","A Zaproo Search integration for Salesforce Commerce Cloud is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":199,"description":200,"icon":201,"path":202,"stem":203,"children":204,"page":46},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[205,211,217,223,229,235],{"title":206,"path":207,"stem":208,"description":209,"icon":210},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","Try a search in the playground, then the search request and response for developers, with every filter form, sorting, paging, highlighting and the inline profile.","i-lucide-search-code",{"title":212,"path":213,"stem":214,"description":215,"icon":216},"Search profiles","\u002Fdocs\u002Fsearch\u002Fprofiles","docs\u002F5.search\u002F2.profiles","Every setting of a search profile, what it does to results, and the mistakes to avoid.","i-lucide-sliders-horizontal",{"title":218,"path":219,"stem":220,"description":221,"icon":222},"Facets","\u002Fdocs\u002Fsearch\u002Ffacets","docs\u002F5.search\u002F3.facets","The filter panels next to the results, the four facet types, index facets and profile facets, and how a shopper's clicks change the counts.","i-lucide-list-filter",{"title":224,"path":225,"stem":226,"description":227,"icon":228},"Synonyms","\u002Fdocs\u002Fsearch\u002Fsynonyms","docs\u002F5.search\u002F4.synonyms","Let different words find the same products, with equivalent and one-way rules, bulk import and export in the Solr format, and no reindex.","i-lucide-arrow-left-right",{"title":230,"path":231,"stem":232,"description":233,"icon":234},"Ranking rules","\u002Fdocs\u002Fsearch\u002Frules","docs\u002F5.search\u002F5.rules","Change the results for chosen searches. Put products first, hide them, lift or lower a brand, narrow the results or weigh fields differently, on a schedule and per profile.","i-lucide-list-ordered",{"title":236,"path":237,"stem":238,"description":239,"icon":240},"Language groups","\u002Fdocs\u002Fsearch\u002Flanguage-groups","docs\u002F5.search\u002F6.language-groups","Let each store of a multilingual shop find its products by the other stores' text, so an English search on the Estonian store still finds the Estonian product.","i-lucide-languages",{"title":242,"description":243,"icon":244,"path":245,"stem":246,"children":247,"page":46},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[248],{"title":242,"path":249,"stem":250,"description":251,"icon":244},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Set up query suggestions in the cabinet. They are built every hour from your shoppers' searches, field values and custom entries.",{"title":253,"description":254,"icon":255,"path":256,"stem":257,"children":258,"page":46},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[259,264,270],{"title":260,"path":261,"stem":262,"description":263,"icon":255},"Search analytics","\u002Fdocs\u002Fanalytics\u002Fsearch-analytics","docs\u002F7.analytics\u002F1.search-analytics","What the analytics page counts, which traffic it leaves out, how the headline numbers are defined, how comparisons and retention work, and how to get the weekly digest.",{"title":265,"path":266,"stem":267,"description":268,"icon":269},"Reports","\u002Fdocs\u002Fanalytics\u002Freports","docs\u002F7.analytics\u002F2.reports","Every analytics report with the definition of each column, the opportunities list and its fix buttons, the per-query view with before and after, and the CSV download.","i-lucide-table",{"title":271,"path":272,"stem":273,"description":274,"icon":275},"Event tracking","\u002Fdocs\u002Fanalytics\u002Fevent-tracking","docs\u002F7.analytics\u002F3.event-tracking","Send clicks, add-to-cart, purchases and suggestion clicks from your storefront, tie them to the search with searchId, and a copy-paste script that does it.","i-lucide-mouse-pointer-click",{"title":277,"description":278,"icon":279,"path":280,"stem":281,"children":282,"page":46},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[283,289,295],{"title":284,"path":285,"stem":286,"description":287,"icon":288},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or another MCP client to your project from the cabinet's MCP connection page, and let an agent manage indices, documents, profiles, synonyms and rules.","i-lucide-plug",{"title":290,"path":291,"stem":292,"description":293,"icon":294},"MCP tools","\u002Fdocs\u002Fmcp\u002Ftools","docs\u002F8.mcp\u002F2.tools","Every tool the Zaproo Search MCP server offers, what an agent can do with each group, and prompts to start from.","i-lucide-wrench",{"title":296,"path":297,"stem":298,"description":299,"icon":300},"Resources and prompts","\u002Fdocs\u002Fmcp\u002Fresources","docs\u002F8.mcp\u002F3.resources","The index resources an MCP client can read, the tune_relevance prompt, and the errors the MCP server answers.","i-lucide-library",{"title":302,"description":303,"icon":304,"path":305,"stem":306,"children":307,"page":46},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[308,314,319,325],{"title":309,"path":310,"stem":311,"description":312,"icon":313},"REST API","\u002Fdocs\u002Freference\u002Frest-api","docs\u002F9.reference\u002F1.rest-api","The routes of the Zaproo Search REST API, grouped by area, with who may call it.","i-lucide-list-tree",{"title":315,"path":316,"stem":317,"description":318,"icon":89},"Limits","\u002Fdocs\u002Freference\u002Flimits","docs\u002F9.reference\u002F2.limits","Every size limit, cap and default of the Zaproo Search API in one place, with what happens when you reach it.",{"title":320,"path":321,"stem":322,"description":323,"icon":324},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","Check your plan and usage on the Billing & usage page, change the plan, download invoices, and see how quotas and proration work.","i-lucide-credit-card",{"title":326,"path":327,"stem":328,"description":329,"icon":330},"Status","\u002Fdocs\u002Freference\u002Fstatus","docs\u002F9.reference\u002F4.status","The status page and the status route, what each service covers and how to use them in your own monitoring.","i-lucide-activity",{"id":332,"title":146,"body":333,"description":149,"extension":1233,"meta":1234,"navigation":1235,"path":147,"seo":1236,"stem":148,"__hash__":1237},"docs\u002Fdocs\u002F4.integrations\u002F02.magento.md",{"type":334,"value":335,"toc":1211},"minimark",[336,341,350,353,364,368,384,388,637,641,647,767,778,782,792,795,865,875,887,891,895,903,907,939,943,1011,1017,1021,1024,1088,1092,1166,1170,1181,1185,1207],[337,338,340],"h2",{"id":339},"what-the-module-does","What the module does",[342,343,344,345,349],"p",{},"The ",[346,347,348],"code",{},"Zaproo_Search"," module keeps one Zaproo index per Magento store view in sync with the catalog. It sends every enabled product that is visible in the catalog or in search, with its name, descriptions, URL, image, categories, prices, stock and the attributes your shop uses for search, filters and sorting. A configurable product is sent once, carrying the option values of its children, and its price is the cheapest child.",[342,351,352],{},"Changes reach Zaproo within about a minute. An admin save never waits on Zaproo: the module records what changed, and Magento's cron sends it.",[342,354,355,356,360,361,363],{},"The module covers indexing. Your storefront's search box keeps using Magento's own search until you point it at Zaproo with a ",[357,358,359],"a",{"href":213},"search profile",". See ",[357,362,29],{"href":30},".",[337,365,367],{"id":366},"requirements","Requirements",[369,370,371,375,378,381],"ul",{},[372,373,374],"li",{},"Magento 2.4.6 or later. The module is tested on 2.4.8-p5.",[372,376,377],{},"PHP 8.1 or later.",[372,379,380],{},"Multi-Source Inventory (MSI), which Magento enables by default.",[372,382,383],{},"A running Magento cron. RabbitMQ is not needed.",[337,385,387],{"id":386},"install","Install",[389,390,392,397,424,458,466,476,484,488,495,554,565,569,592,596,611,615],"steps",{"level":391},"3",[393,394,396],"h3",{"id":395},"prepare-the-cabinet","Prepare the cabinet",[342,398,399,400,404,405,408,409,412,413,416,417,360,420,423],{},"Create one index per store view, in that store view's language: open ",[401,402,403],"strong",{},"Indices"," in the project menu, click ",[401,406,407],{},"New index",", enter a ",[401,410,411],{},"Name",", pick the ",[401,414,415],{},"Language"," and click ",[401,418,419],{},"Create index",[357,421,98],{"href":422},"\u002Fdocs\u002Findexing\u002Findices#create-an-index",". You don't need to add fields: the module adds them from your Magento attributes.",[342,425,426,427,429,430,433,434,436,437,412,440,443,444,447,448,443,451,454,455,363],{},"Then open ",[401,428,80],{}," in the project menu and click ",[401,431,432],{},"New key",". Enter a ",[401,435,411],{}," such as ",[346,438,439],{},"Magento",[401,441,442],{},"Type"," ",[401,445,446],{},"Secret key (sk), server side"," and the ",[401,449,450],{},"Access",[401,452,453],{},"Full access",", and click ",[401,456,457],{},"Create key",[342,459,460],{},[461,462],"img",{"alt":463,"src":464,"title":465},"The New API key dialog with the name Checkout widget, the type Secret key (sk), server side and Full access selected","\u002Fdocs\u002Fscreenshots\u002Fapi-keys.png","A secret key with full access, for the module",[342,467,468,469,472,473,363],{},"Copy the key (",[346,470,471],{},"zs_sk_…","). You see it only once. Creating keys needs a verified email and the owner or admin role. See ",[357,474,80],{"href":475},"\u002Fdocs\u002Fkeys\u002Fapi-keys#create-a-key",[342,477,478,479,483],{},"The cabinet form has no field for an index scope. To keep the key away from other indices of the project, set its ",[357,480,482],{"href":481},"\u002Fdocs\u002Fkeys\u002Fapi-keys#index-scope","index scope"," to the store views' indices through the API.",[393,485,487],{"id":486},"install-the-module","Install the module",[342,489,490,491,494],{},"The module is a Composer package, ",[346,492,493],{},"zaproo\u002Fmodule-search",". Your Zaproo contact gives you access to its Composer repository. Then, from the Magento root:",[496,497,502],"pre",{"className":498,"code":499,"language":500,"meta":501,"style":501},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","composer require zaproo\u002Fmodule-search\nbin\u002Fmagento module:enable Zaproo_Search\nbin\u002Fmagento setup:upgrade\nbin\u002Fmagento indexer:set-mode schedule zaproo_search_products\n","bash","",[346,503,504,520,532,540],{"__ignoreMap":501},[505,506,509,513,517],"span",{"class":507,"line":508},"line",1,[505,510,512],{"class":511},"szw1H","composer",[505,514,516],{"class":515},"semJd"," require",[505,518,519],{"class":515}," zaproo\u002Fmodule-search\n",[505,521,523,526,529],{"class":507,"line":522},2,[505,524,525],{"class":511},"bin\u002Fmagento",[505,527,528],{"class":515}," module:enable",[505,530,531],{"class":515}," Zaproo_Search\n",[505,533,535,537],{"class":507,"line":534},3,[505,536,525],{"class":511},[505,538,539],{"class":515}," setup:upgrade\n",[505,541,543,545,548,551],{"class":507,"line":542},4,[505,544,525],{"class":511},[505,546,547],{"class":515}," indexer:set-mode",[505,549,550],{"class":515}," schedule",[505,552,553],{"class":515}," zaproo_search_products\n",[342,555,556,557,560,561,564],{},"In production mode, also run ",[346,558,559],{},"bin\u002Fmagento setup:di:compile"," and ",[346,562,563],{},"bin\u002Fmagento setup:static-content:deploy",", as for any module.",[393,566,568],{"id":567},"connect-the-key","Connect the key",[342,570,571,572,575,576,579,580,583,584,587,588,591],{},"In the Magento admin, open ",[401,573,574],{},"Stores › Configuration › Catalog › Zaproo Search",". With scope ",[401,577,578],{},"Default Config",", paste the key into ",[401,581,582],{},"Secret API key"," and leave ",[401,585,586],{},"API URL"," as it is. Save. ",[401,589,590],{},"Project"," now lists the key's project with it selected. Save again.",[393,593,595],{"id":594},"pick-an-index-for-each-store-view","Pick an index for each store view",[342,597,598,599,602,603,606,607,610],{},"Switch the scope to a store view. Set ",[401,600,601],{},"Sync this store view"," to ",[401,604,605],{},"Yes"," and choose its index under ",[401,608,609],{},"Index ID",". The list shows the indices the key may use. Save, then repeat for every store view you want searchable. Each store view needs its own index.",[393,612,614],{"id":613},"test-and-run-the-first-sync","Test and run the first sync",[342,616,617,618,621,622,624,625,628,629,632,633,636],{},"At each store view, click ",[401,619,620],{},"Test connection",". It shows the index name, language and document count. Then, under ",[401,623,326],{},", click ",[401,626,627],{},"Run full sync",". Within a minute ",[401,630,631],{},"Indexed"," shows your product count and ",[401,634,635],{},"Last full sync"," shows the time.",[337,638,640],{"id":639},"settings","Settings",[342,642,643,644,646],{},"All settings live under ",[401,645,574],{},". The defaults suit most shops.",[648,649,650,666],"table",{},[651,652,653],"thead",{},[654,655,656,660,663],"tr",{},[657,658,659],"th",{},"Setting",[657,661,662],{},"Scope",[657,664,665],{},"What it does",[667,668,669,680,689,700,710,720,730,744,757],"tbody",{},[654,670,671,674,677],{},[672,673,601],"td",{},[672,675,676],{},"Store view",[672,678,679],{},"Turns syncing on for this store view.",[654,681,682,684,686],{},[672,683,609],{},[672,685,676],{},[672,687,688],{},"The index this store view writes to.",[654,690,691,694,697],{},[672,692,693],{},"Secret API key, Project",[672,695,696],{},"Default or website",[672,698,699],{},"The key is stored encrypted. Project is filled in from the key.",[654,701,702,704,707],{},[672,703,586],{},[672,705,706],{},"Default",[672,708,709],{},"Leave it as it is, unless you test against a Zaproo staging instance. Changing it rebuilds every store view's index there.",[654,711,712,715,717],{},[672,713,714],{},"Batch size",[672,716,706],{},[672,718,719],{},"Products per request, 1 to 1000. The default is 500.",[654,721,722,725,727],{},[672,723,724],{},"Max requests per minute",[672,726,706],{},[672,728,729],{},"The most write requests per store view per cron run. The default is 20.",[654,731,732,735,737],{},[672,733,734],{},"Add new attributes to the Zaproo mapping",[672,736,706],{},[672,738,739,740,743],{},"Adds a field to the Zaproo mapping for each new attribute. Set it to ",[401,741,742],{},"No"," to manage every field yourself.",[654,745,746,749,751],{},[672,747,748],{},"Index out-of-stock products",[672,750,706],{},[672,752,753,754,756],{},"Set it to ",[401,755,742],{}," to keep sold-out products out of search.",[654,758,759,762,764],{},[672,760,761],{},"Excluded attributes",[672,763,706],{},[672,765,766],{},"Attributes to leave out, even though they are searchable, filterable or used for sorting.",[342,768,769,770,773,774,777],{},"Changing the excluded attributes, out-of-stock handling or the synced store views queues every product again. Products that didn't change are skipped. If you change these with ",[346,771,772],{},"bin\u002Fmagento config:set",", run ",[346,775,776],{},"bin\u002Fmagento zaproo:search:requeue --all"," afterwards.",[337,779,781],{"id":780},"fields-and-attributes","Fields and attributes",[342,783,784,785,788,789,363],{},"An attribute is sent when it is searchable, filterable or used for sorting. Its values are the store view's labels. It lands under ",[346,786,787],{},"attributes",", for example ",[346,790,791],{},"attributes.color",[342,793,794],{},"The first time an attribute is sent, the module adds its field to the mapping with settings taken from Magento:",[648,796,797,807],{},[651,798,799],{},[654,800,801,804],{},[657,802,803],{},"Attribute input",[657,805,806],{},"Zaproo field",[667,808,809,820,835,846,855],{},[654,810,811,814],{},[672,812,813],{},"Select, multiselect, swatch",[672,815,816,819],{},[346,817,818],{},"keyword",". Searchable if the attribute is searchable, filterable and facetable if it is filterable.",[654,821,822,825],{},[672,823,824],{},"Text, textarea",[672,826,827,830,831,834],{},[346,828,829],{},"text",", or ",[346,832,833],{},"double"," for numeric text inputs.",[654,836,837,840],{},[672,838,839],{},"Yes\u002FNo",[672,841,842,845],{},[346,843,844],{},"boolean",", filterable and facetable.",[654,847,848,851],{},[672,849,850],{},"Price, weight",[672,852,853,363],{},[346,854,833],{},[654,856,857,860],{},[672,858,859],{},"Date",[672,861,862,363],{},[346,863,864],{},"date",[342,866,867,868,871,872,874],{},"After that, the field is yours. Change its type or flags in ",[401,869,870],{},"Fields & mapping",", for example make a size attribute a ",[346,873,833],{}," to show it as a range slider. The module reads the mapping on every cron run and sends values in the type the field has now. A change that needs a reindex starts a full sync from Magento by itself on the next run.",[342,876,877,878,880,881,883,884,886],{},"While ",[401,879,734],{}," is ",[401,882,605],{},", you can't remove fields in the cabinet. To drop an attribute, add it to ",[401,885,761],{},", or turn the setting off.",[337,888,890],{"id":889},"manage-the-sync","Manage the sync",[393,892,894],{"id":893},"in-magento","In Magento",[342,896,344,897,899,900,902],{},[401,898,326],{}," group on the settings page shows, per store view, the queued and failed products, the last full sync and any problem with what to do about it. ",[401,901,627],{}," rebuilds the store view's index from scratch and swaps it in without downtime. A problem that needs you also shows at the top of every admin page.",[393,904,906],{"id":905},"in-the-cabinet","In the cabinet",[342,908,909,910,913,914,917,918,921,922,925,926,928,929,932,933,360,935,363],{},"The index's ",[401,911,912],{},"Overview"," shows an ",[401,915,916],{},"Integration"," panel: ",[401,919,920],{},"Connected"," names the store view, and ",[401,923,924],{},"Platform"," shows ",[401,927,146],{}," with the module version. Its data source is off while it is linked. You follow the module's writes on the index's ",[401,930,931],{},"Tasks"," page, and change fields on ",[401,934,870],{},[357,936,938],{"href":937},"\u002Fdocs\u002Fintegrations\u002Foverview#integrations-in-the-cabinet","Integrations in the cabinet",[393,940,942],{"id":941},"on-the-command-line","On the command line",[648,944,945,955],{},[651,946,947],{},[654,948,949,952],{},[657,950,951],{},"Command",[657,953,954],{},"Use it to",[667,956,957,967,977,987,1001],{},[654,958,959,964],{},[672,960,961],{},[346,962,963],{},"bin\u002Fmagento zaproo:search:status",[672,965,966],{},"See queued, failed and unconfirmed products per store view, and the last errors.",[654,968,969,974],{},[672,970,971],{},[346,972,973],{},"bin\u002Fmagento zaproo:search:document \u003Csku> --store=\u003Ccode>",[672,975,976],{},"See the exact document the module sends for one product, and how it differs from the copy in Zaproo. It writes nothing.",[654,978,979,984],{},[672,980,981],{},[346,982,983],{},"bin\u002Fmagento zaproo:search:sync --full",[672,985,986],{},"Run a full sync now.",[654,988,989,994],{},[672,990,991],{},[346,992,993],{},"bin\u002Fmagento zaproo:search:requeue --failed",[672,995,996,997,1000],{},"Send failed products again. ",[346,998,999],{},"--all"," queues every product.",[654,1002,1003,1008],{},[672,1004,1005],{},[346,1006,1007],{},"bin\u002Fmagento zaproo:search:test-connection",[672,1009,1010],{},"Check the key, project and indices.",[342,1012,1013,1014,363],{},"The log is ",[346,1015,1016],{},"var\u002Flog\u002Fzaproo_search.log",[337,1018,1020],{"id":1019},"when-something-goes-wrong","When something goes wrong",[342,1022,1023],{},"Each message names the store view and clears by itself once the cause is fixed. Saving the settings retries at once.",[648,1025,1026,1036],{},[651,1027,1028],{},[654,1029,1030,1033],{},[657,1031,1032],{},"You see",[657,1034,1035],{},"What to do",[667,1037,1038,1046,1054,1062,1072,1080],{},[654,1039,1040,1043],{},[672,1041,1042],{},"Zaproo rejected the API key",[672,1044,1045],{},"Create a new secret key with full access and save it.",[654,1047,1048,1051],{},[672,1049,1050],{},"Zaproo does not know this index",[672,1052,1053],{},"Check the store view's Index ID and the indices the key may use.",[654,1055,1056,1059],{},[672,1057,1058],{},"Zaproo refused the mapping: the index is linked to another shop or API key",[672,1060,1061],{},"Make sure only one store view uses this Index ID.",[654,1063,1064,1067],{},[672,1065,1066],{},"Zaproo rejected N products",[672,1068,1069,1070,363],{},"Fix the value named in the message, then click ",[401,1071,627],{},[654,1073,1074,1077],{},[672,1075,1076],{},"Product updates stopped on an error in Magento",[672,1078,1079],{},"A custom module's code failed. Give the error to your developer.",[654,1081,1082,1085],{},[672,1083,1084],{},"Zaproo could not be reached",[672,1086,1087],{},"Nothing, if it is brief. Updates wait and are retried.",[337,1089,1091],{"id":1090},"uninstall","Uninstall",[1093,1094,1095,1103,1135],"ol",{},[372,1096,1097,1098,602,1100,1102],{},"In the Magento admin, set ",[401,1099,601],{},[401,1101,742],{}," for every store view.",[372,1104,1105,1106],{},"Remove the module:",[496,1107,1109],{"className":498,"code":1108,"language":500,"meta":501,"style":501},"bin\u002Fmagento module:disable Zaproo_Search\ncomposer remove zaproo\u002Fmodule-search\nbin\u002Fmagento setup:upgrade\n",[346,1110,1111,1120,1129],{"__ignoreMap":501},[505,1112,1113,1115,1118],{"class":507,"line":508},[505,1114,525],{"class":511},[505,1116,1117],{"class":515}," module:disable",[505,1119,531],{"class":515},[505,1121,1122,1124,1127],{"class":507,"line":522},[505,1123,512],{"class":511},[505,1125,1126],{"class":515}," remove",[505,1128,519],{"class":515},[505,1130,1131,1133],{"class":507,"line":534},[505,1132,525],{"class":511},[505,1134,539],{"class":515},[372,1136,1137,1138,1140,1141,624,1143,1150,1151,1154,1155,1158,1159,360,1162,363],{},"In the cabinet, open each index. In the ",[401,1139,916],{}," panel on its ",[401,1142,912],{},[401,1144,1145,1146],{},"Disconnect ",[1147,1148,1149],"em",{},"store view name",", then ",[401,1152,1153],{},"Disconnect",". The documents stay, and you can switch the index to a ",[357,1156,1157],{"href":153},"data source"," or the ",[357,1160,1161],{"href":158},"API",[357,1163,1165],{"href":1164},"\u002Fdocs\u002Fintegrations\u002Foverview#disconnect-a-shop","Disconnect a shop",[337,1167,1169],{"id":1168},"known-limits","Known limits",[369,1171,1172,1175,1178],{},[372,1173,1174],{},"Only guest prices are sent. Tier and customer-group prices are not.",[372,1176,1177],{},"Bundle and grouped products are sent as plain products, without their children's values.",[372,1179,1180],{},"An order reserves stock but doesn't change Magento's stock index until shipment, so a sold-out product stays in stock in search until then, as it does on Magento's own category pages.",[337,1182,1184],{"id":1183},"related","Related",[369,1186,1187,1191,1195,1199,1203],{},[372,1188,1189],{},[357,1190,140],{"href":141},[372,1192,1193],{},[357,1194,103],{"href":104},[372,1196,1197],{},[357,1198,212],{"href":213},[372,1200,1201],{},[357,1202,80],{"href":81},[372,1204,1205],{},[357,1206,109],{"href":110},[1208,1209,1210],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":501,"searchDepth":522,"depth":522,"links":1212},[1213,1214,1215,1222,1223,1224,1229,1230,1231,1232],{"id":339,"depth":522,"text":340},{"id":366,"depth":522,"text":367},{"id":386,"depth":522,"text":387,"children":1216},[1217,1218,1219,1220,1221],{"id":395,"depth":534,"text":396},{"id":486,"depth":534,"text":487},{"id":567,"depth":534,"text":568},{"id":594,"depth":534,"text":595},{"id":613,"depth":534,"text":614},{"id":639,"depth":522,"text":640},{"id":780,"depth":522,"text":781},{"id":889,"depth":522,"text":890,"children":1225},[1226,1227,1228],{"id":893,"depth":534,"text":894},{"id":905,"depth":534,"text":906},{"id":941,"depth":534,"text":942},{"id":1019,"depth":522,"text":1020},{"id":1090,"depth":522,"text":1091},{"id":1168,"depth":522,"text":1169},{"id":1183,"depth":522,"text":1184},"md",{},{"icon":150},{"title":146,"description":149},"Br7aT1Z9-UncP2PS8IpZoZI23FNFQ-nTc-ssBZkMPu8",[1239,1240],{"title":140,"path":141,"stem":142,"description":143,"icon":144,"children":-1},{"title":152,"path":153,"stem":154,"description":155,"icon":131,"children":-1},1793717706309]