[{"data":1,"prerenderedAt":1221},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fanalytics\u002Freports":331,"docs-\u002Fdocs\u002Fanalytics\u002Freports-surround":1218},[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":265,"body":333,"description":268,"extension":1213,"meta":1214,"navigation":1215,"path":266,"seo":1216,"stem":267,"__hash__":1217},"docs\u002Fdocs\u002F7.analytics\u002F2.reports.md",{"type":334,"value":335,"toc":1194},"minimark",[336,341,355,397,413,416,419,437,522,531,536,539,542,578,586,597,604,663,666,706,710,722,726,749,752,761,764,789,792,805,808,843,846,878,882,885,918,921,927,936,991,994,1045,1048,1053,1057,1060,1063,1117,1149,1159,1163,1190],[337,338,340],"h2",{"id":339},"find-the-reports","Find the reports",[342,343,344,345,348,349,354],"p",{},"Open an index, click ",[346,347,253],"strong",{},", and scroll past the headline numbers and the timeline. Each report is a table over the same window and filters as the rest of the page; see ",[350,351,353],"a",{"href":352},"\u002Fdocs\u002Fanalytics\u002Fsearch-analytics#window-comparison-and-filters","Window, comparison and filters",".",[356,357,358,365],"ul",{},[359,360,361,364],"li",{},[346,362,363],{},"Opportunities"," sits at the top of the page, above the headline numbers.",[359,366,367,368,371,372,375,376,375,379,375,382,375,385,375,388,375,390,393,394,354],{},"The other reports are tabs under ",[346,369,370],{},"Searches over time",": ",[346,373,374],{},"Queries",", ",[346,377,378],{},"No clicks",[346,380,381],{},"Products",[346,383,384],{},"Click positions",[346,386,387],{},"Filters",[346,389,242],{},[346,391,392],{},"Rules"," and ",[346,395,396],{},"Refinements",[342,398,399,400,404,405,408,409,354],{},"Click a column header to sort a table by it, and again to reverse the order. Click a query to open the ",[350,401,403],{"href":402},"#one-query","one-query view",". ",[346,406,407],{},"Download CSV"," above each table saves its rows; see ",[350,410,412],{"href":411},"#csv","CSV",[342,414,415],{},"Queries are grouped after lowercasing, trimming and collapsing spaces, so \"Bubble Wrap\" and \"bubble  wrap\" count as one. Empty queries count as searches but never appear in a list. Rates are shares of distinct searches. A table shows at most 50 rows.",[337,417,363],{"id":418},"opportunities",[342,420,421,422,375,425,375,428,393,431,404,434,436],{},"The queries that cost you the most, ordered by the revenue at stake, then by searches. The table has the columns ",[346,423,424],{},"Query",[346,426,427],{},"Problem",[346,429,430],{},"Searches",[346,432,433],{},"Revenue at stake",[346,435,427],{}," is one of three kinds:",[438,439,440,466],"table",{},[441,442,443],"thead",{},[444,445,446,451,458,461],"tr",{},[447,448,449],"th",{},[346,450,427],{},[447,452,453,457],{},[454,455,456],"code",{},"kind"," in the API",[447,459,460],{},"The query",[447,462,463,465],{},[346,464,430],{}," counts",[467,468,469,488,504],"tbody",{},[444,470,471,477,482,485],{},[472,473,474],"td",{},[346,475,476],{},"No results",[472,478,479],{},[454,480,481],{},"zero_results",[472,483,484],{},"found nothing",[472,486,487],{},"every search",[444,489,490,494,499,502],{},[472,491,492],{},[346,493,378],{},[472,495,496],{},[454,497,498],{},"no_click",[472,500,501],{},"found results but got no click",[472,503,487],{},[444,505,506,511,516,519],{},[472,507,508],{},[346,509,510],{},"Clicks, no sale",[472,512,513],{},[454,514,515],{},"no_sale",[472,517,518],{},"got clicks but no purchase",[472,520,521],{},"the share of searches that were clicked",[342,523,524,526,527,530],{},[346,525,433],{}," (",[454,528,529],{},"revenueAtStake",") is what those searches would have brought in had they converted like the rest of the index: the counted searches, times the index's own conversion rate in the window, times its average order value. It is an estimate for ranking, not a forecast. Without purchase events the conversion rate is unknown and the estimate is 0, so the list falls back to ordering by searches.",[532,533,535],"h3",{"id":534},"fix-a-query-from-the-list","Fix a query from the list",[342,537,538],{},"Each row has two buttons. Only organization owners and admins see them.",[342,540,541],{},"To add a synonym for the query:",[543,544,545,555,569],"ol",{},[359,546,547,548,551,552,354],{},"Click ",[346,549,550],{},"Add synonym"," in its row. A form opens under the table with the query in ",[346,553,554],{},"Terms",[359,556,557,558,561,562,565,566,354],{},"Type what shoppers mean under ",[346,559,560],{},"Means (target)",", for example ",[454,563,564],{},"tape"," for the query ",[454,567,568],{},"scotch",[359,570,547,571,573,574,577],{},[346,572,550],{},". The page confirms it with ",[346,575,576],{},"Added synonym"," and the rule.",[342,579,580,581,585],{},"The cabinet creates a one-way ",[350,582,584],{"href":583},"\u002Fdocs\u002Fsearch\u002Fsynonyms#one-way","synonym",", so the query also searches the target from the next search on. No reindex is needed.",[342,587,588,589,592,593,596],{},"To pin or boost products for the query, click ",[346,590,591],{},"Pin or boost with a rule",". The ",[350,594,595],{"href":231},"rule editor"," opens with the query already filled in. Pick the products to put first, or lift a brand or category, test it and save.",[342,598,599,600,603],{},"Both show up as markers in the ",[350,601,602],{"href":402},"per-query view",", with the numbers before and after.",[438,605,606,616],{},[441,607,608],{},[444,609,610,613],{},[447,611,612],{},"Why a query finds nothing",[447,614,615],{},"What to do",[467,617,618,626,634,642,650],{},[444,619,620,623],{},[472,621,622],{},"Shoppers use another word for a product you have (\"scotch\" for tape, \"carton\" for box)",[472,624,625],{},"Add a synonym.",[444,627,628,631],{},[472,629,630],{},"A misspelling the typo tolerance does not catch",[472,632,633],{},"Add a one-way synonym from the misspelling to the right word.",[444,635,636,639],{},[472,637,638],{},"The word is in a field the profile does not search (a SKU, a color)",[472,640,641],{},"Add the field to the profile's query fields, with a modest weight.",[444,643,644,647],{},[472,645,646],{},"You want to show specific products for that query",[472,648,649],{},"Add a rule that pins them.",[444,651,652,655],{},[472,653,654],{},"You do not sell it",[472,656,657,658,662],{},"Nothing to fix. A ",[350,659,661],{"href":660},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions#custom-suggestions","custom autocomplete suggestion"," can steer shoppers to what you do sell.",[337,664,374],{"id":665},"queries",[342,667,668,669,375,672,375,675,375,678,375,681,375,684,375,687,393,690,693,694,697,698,701,702,705],{},"The 50 most searched queries, with per query: ",[454,670,671],{},"searches",[454,673,674],{},"zeroResultRate",[454,676,677],{},"ctr",[454,679,680],{},"addToCartRate",[454,682,683],{},"conversionRate",[454,685,686],{},"revenue",[454,688,689],{},"avgClickPosition",[454,691,692],{},"previousSearches"," (searches over the comparison window, ",[454,695,696],{},"null"," with ",[454,699,700],{},"compare=none","). The cabinet shows the comparison as the ",[346,703,704],{},"Before"," column.",[337,707,709],{"id":708},"queries-without-clicks","Queries without clicks",[342,711,712,713,715,716,393,718,721],{},"The ",[346,714,378],{}," tab. Queries that found results but never got a click: ",[454,717,671],{},[454,719,720],{},"avgResults",", the mean number of results they found. A query with many results and no clicks usually ranks the wrong products first; a query with one or two results probably matches by accident.",[337,723,725],{"id":724},"top-products","Top products",[342,727,712,728,730,731,375,734,375,737,375,740,375,743,393,745,748],{},[346,729,381],{}," tab. The 50 most clicked products from search: ",[454,732,733],{},"itemId",[454,735,736],{},"clicks",[454,738,739],{},"addToCarts",[454,741,742],{},"purchases",[454,744,686],{},[454,746,747],{},"topQueries",", the queries that led to the product most often. Use it to check that the products you merchandise are the ones shoppers pick, and to find products that get clicks but no sales.",[337,750,384],{"id":751},"click-positions",[342,753,754,755,393,757,760],{},"Clicks per result position, from 1: ",[454,756,736],{},[454,758,759],{},"share"," of all clicks. A long tail means shoppers scroll because the first results miss; a steep first position after a pin rule means the pin works.",[337,762,387],{"id":763},"filters",[342,765,766,767,393,770,697,773,775,776,778,779,781,782,784,785,788],{},"Which facets shoppers use: one row per ",[454,768,769],{},"field",[454,771,772],{},"value",[454,774,671],{}," that applied it and the ",[454,777,677],{}," of those searches. ",[454,780,772],{}," is ",[454,783,696],{}," for the row that sums a whole field, and ",[454,786,787],{},"range"," for range filters. Values are logged for keyword and boolean filters only.",[337,790,242],{"id":791},"autocomplete",[342,793,794,795,798,799,393,802,804],{},"Which suggestions shoppers click, from ",[454,796,797],{},"suggestion_click"," events: ",[454,800,801],{},"suggestion",[454,803,736],{},". Suggest requests themselves are not logged, so this report is empty until the storefront sends the events.",[337,806,230],{"id":807},"ranking-rules",[342,809,712,810,812,813,375,816,526,819,821,822,375,824,375,826,375,829,393,831,404,833,526,835,838,839,842],{},[346,811,392],{}," tab. Per rule that fired in the window: ",[454,814,815],{},"ruleId",[454,817,818],{},"name",[454,820,696],{}," when the rule was deleted since), ",[454,823,671],{},[454,825,677],{},[454,827,828],{},"ctrLift",[454,830,683],{},[454,832,686],{},[454,834,828],{},[346,836,837],{},"CTR vs. index",") is the rule's click-through rate relative to the index's overall rate, minus 1: ",[454,840,841],{},"0.25"," means a quarter more clicks than the average search. A campaign rule that lowers it is costing you clicks.",[337,844,396],{"id":845},"refinements",[342,847,848,849,852,853,856,857,860,861,375,864,393,867,870,871,874,875,877],{},"Zero-result queries that the same session fixed by hand: ",[454,850,851],{},"from"," (the query that found nothing), ",[454,854,855],{},"to"," (what they searched within 60 seconds that found results) and ",[454,858,859],{},"count",". In the cabinet the columns are ",[346,862,863],{},"Found nothing",[346,865,866],{},"Then searched",[346,868,869],{},"Times",". Each row is a synonym candidate written by your shoppers: ",[454,872,873],{},"from => to",". Click the query under ",[346,876,863],{}," to open it and add the synonym from there.",[337,879,881],{"id":880},"one-query","One query",[342,883,884],{},"Click a query in any table to see it on its own. A panel opens from the side with:",[356,886,887,894,900,906,912],{},[359,888,889,393,891,893],{},[346,890,550],{},[346,892,591],{}," at the top, for owners and admins.",[359,895,896,899],{},[346,897,898],{},"Searches per day",", a bar chart over the window.",[359,901,902,905],{},[346,903,904],{},"Fixes in this window",": every synonym and rule that mentions the query and was added or changed in the window.",[359,907,908,911],{},[346,909,910],{},"14 days before and after"," the latest fix, side by side.",[359,913,914,917],{},[346,915,916],{},"By day",": searches, CTR and revenue per day.",[342,919,920],{},"With the API, call the query route:",[922,923],"api-route",{"auth":924,"method":925,"path":926},"Project member or any secret key","GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fanalytics\u002Fquery",[342,928,929,932,933,354],{},[454,930,931],{},"q"," is the query, plus the usual window and filter parameters. Over MCP the tool is ",[454,934,935],{},"get_query_analytics",[937,938,943],"pre",{"className":939,"code":940,"language":941,"meta":942,"style":942},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl \"https:\u002F\u002Fapi.search.zaproo.cloud\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fanalytics\u002Fquery?q=scotch&from=2026-10-01T00:00:00Z&to=2026-10-15T00:00:00Z\" \\\n  -H \"Authorization: Bearer $ZS_KEY\"\n","bash","",[454,944,945,975],{"__ignoreMap":942},[946,947,950,954,958,962,965,968,971],"span",{"class":948,"line":949},"line",1,[946,951,953],{"class":952},"szw1H","curl",[946,955,957],{"class":956},"semJd"," \"https:\u002F\u002Fapi.search.zaproo.cloud\u002Fv1\u002Fprojects\u002F",[946,959,961],{"class":960},"s7iLA","$PROJECT_ID",[946,963,964],{"class":956},"\u002Findices\u002F",[946,966,967],{"class":960},"$INDEX_ID",[946,969,970],{"class":956},"\u002Fanalytics\u002Fquery?q=scotch&from=2026-10-01T00:00:00Z&to=2026-10-15T00:00:00Z\"",[946,972,974],{"class":973},"sklAV"," \\\n",[946,976,978,982,985,988],{"class":948,"line":977},2,[946,979,981],{"class":980},"ssYy9","  -H",[946,983,984],{"class":956}," \"Authorization: Bearer ",[946,986,987],{"class":960},"$ZS_KEY",[946,989,990],{"class":956},"\"\n",[342,992,993],{},"The answer holds:",[356,995,996,1008,1027],{},[359,997,998,1001,1002,375,1004,393,1006,354],{},[454,999,1000],{},"daily",": one row per day with ",[454,1003,671],{},[454,1005,677],{},[454,1007,686],{},[359,1009,1010,1013,1014,375,1017,375,1019,375,1022,393,1024,354],{},[454,1011,1012],{},"markers",": every synonym and rule of the index that mentions the query and was created or updated in the window, with ",[454,1015,1016],{},"ts",[454,1018,456],{},[454,1020,1021],{},"id",[454,1023,818],{},[454,1025,1026],{},"change",[359,1028,1029,1032,1033,375,1035,375,1037,393,1039,1041,1042,1044],{},[454,1030,1031],{},"beforeAfter",": the 14 days before and after the latest marker, each with ",[454,1034,671],{},[454,1036,677],{},[454,1038,683],{},[454,1040,686],{},"; ",[454,1043,696],{}," without markers.",[337,1046,412],{"id":1047},"csv",[342,1049,1050,1052],{},[346,1051,407],{}," on each table writes the rows the table shows, with the table's column labels as the header. Lists, such as the top queries of a product, are joined with \"; \". The file is built in your browser from the JSON the cabinet loaded, so a filtered table downloads filtered rows, in the order you sorted them.",[337,1054,1056],{"id":1055},"with-the-api","With the API",[342,1058,1059],{},"All nine reports come from one route. Use it to pull a report into your own tools.",[922,1061],{"auth":924,"method":925,"path":1062},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fanalytics\u002F:report",[342,1064,1065,1068,1069,375,1071,375,1074,375,1077,375,1080,375,1082,375,1084,375,1087,1089,1090,1092,1093,375,1095,375,1097,375,1100,375,1103,375,1106,1109,1110,1113,1114,1116],{},[454,1066,1067],{},"report"," is one of ",[454,1070,665],{},[454,1072,1073],{},"no-click",[454,1075,1076],{},"products",[454,1078,1079],{},"positions",[454,1081,763],{},[454,1083,791],{},[454,1085,1086],{},"rules",[454,1088,845],{}," or ",[454,1091,418],{},". The query parameters are the same as the overview's: ",[454,1094,851],{},[454,1096,855],{},[454,1098,1099],{},"compare",[454,1101,1102],{},"device",[454,1104,1105],{},"country",[454,1107,1108],{},"includeInternal",". The answer is ",[454,1111,1112],{},"{ report, from, to, rows }",", at most 50 rows. Rates are ",[454,1115,696],{}," when there is nothing to divide by.",[937,1118,1120],{"className":939,"code":1119,"language":941,"meta":942,"style":942},"curl \"https:\u002F\u002Fapi.search.zaproo.cloud\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fanalytics\u002Fopportunities?from=2026-10-01T00:00:00Z&to=2026-10-15T00:00:00Z\" \\\n  -H \"Authorization: Bearer $ZS_KEY\"\n",[454,1121,1122,1139],{"__ignoreMap":942},[946,1123,1124,1126,1128,1130,1132,1134,1137],{"class":948,"line":949},[946,1125,953],{"class":952},[946,1127,957],{"class":956},[946,1129,961],{"class":960},[946,1131,964],{"class":956},[946,1133,967],{"class":960},[946,1135,1136],{"class":956},"\u002Fanalytics\u002Fopportunities?from=2026-10-01T00:00:00Z&to=2026-10-15T00:00:00Z\"",[946,1138,974],{"class":973},[946,1140,1141,1143,1145,1147],{"class":948,"line":977},[946,1142,981],{"class":980},[946,1144,984],{"class":956},[946,1146,987],{"class":960},[946,1148,990],{"class":956},[342,1150,1151,1152,1155,1156,1158],{},"Over MCP, ",[454,1153,1154],{},"get_analytics_report"," takes ",[454,1157,1067],{}," and the same parameters.",[337,1160,1162],{"id":1161},"related","Related",[356,1164,1165,1169,1173,1177,1181,1185],{},[359,1166,1167],{},[350,1168,260],{"href":261},[359,1170,1171],{},[350,1172,271],{"href":272},[359,1174,1175],{},[350,1176,224],{"href":225},[359,1178,1179],{},[350,1180,230],{"href":231},[359,1182,1183],{},[350,1184,242],{"href":249},[359,1186,1187],{},[350,1188,290],{"href":1189},"\u002Fdocs\u002Fmcp\u002Ftools#analytics",[1191,1192,1193],"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 pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}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":942,"searchDepth":977,"depth":977,"links":1195},[1196,1197,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212],{"id":339,"depth":977,"text":340},{"id":418,"depth":977,"text":363,"children":1198},[1199],{"id":534,"depth":1200,"text":535},3,{"id":665,"depth":977,"text":374},{"id":708,"depth":977,"text":709},{"id":724,"depth":977,"text":725},{"id":751,"depth":977,"text":384},{"id":763,"depth":977,"text":387},{"id":791,"depth":977,"text":242},{"id":807,"depth":977,"text":230},{"id":845,"depth":977,"text":396},{"id":880,"depth":977,"text":881},{"id":1047,"depth":977,"text":412},{"id":1055,"depth":977,"text":1056},{"id":1161,"depth":977,"text":1162},"md",{},{"icon":269},{"title":265,"description":268},"UPhzVOD_6DpGBhAkhaiLfP6vCtPzA6v4mJBT-g1EG30",[1219,1220],{"title":260,"path":261,"stem":262,"description":263,"icon":255,"children":-1},{"title":271,"path":272,"stem":273,"description":274,"icon":275,"children":-1},1793717706324]