{"id":373800,"date":"2026-09-23T06:51:47","date_gmt":"2026-09-23T06:51:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/findalo\/"},"modified":"2026-09-23T06:51:17","modified_gmt":"2026-09-23T06:51:17","slug":"findalo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/findalo\/","author":23571960,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Findalo","header_author":"Findalo","header_description":"Instant search with filters, facets and multi-language support for WooCommerce. Indexes the catalog, publishes it to findalo.io and hooks into your theme's search bar to open a full-screen modal. No theme code changes required.","assets_banners_color":"0a0a0a","last_updated":"2026-09-23 06:51:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/findalo.io\/en\/woocommerce\/","header_author_uri":"https:\/\/findalo.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"findalo","date":"2026-09-23 06:51:17","revision":3708652}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3708667,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3708667,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3708667,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3708667,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3708667,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3708667,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3708667,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3708667,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3708667,"resolution":"4","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"The search widget open on the storefront, with instant results and the filters panel.","2":"The setup wizard: connect the store to your Findalo account in one click.","3":"Settings (WooCommerce \u2192 Findalo): connection, widget and advanced options.","4":"Sync status: last catalog build, last push and the recent sync log."}},"plugin_section":[],"plugin_tags":[3226,99,944,4195,286],"plugin_category":[45,48],"plugin_contributors":[282217],"plugin_business_model":[],"class_list":["post-373800","plugin","type-plugin","status-publish","hentry","plugin_tags-autocomplete","plugin_tags-multilingual","plugin_tags-search","plugin_tags-search-engine","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-language-tools","plugin_contributors-findalo","plugin_committers-findalo"],"banners":{"banner":"https:\/\/ps.w.org\/findalo\/assets\/banner-772x250.png?rev=3708667","banner_2x":"https:\/\/ps.w.org\/findalo\/assets\/banner-1544x500.png?rev=3708667","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/findalo\/assets\/icon.svg?rev=3708667","icon":"https:\/\/ps.w.org\/findalo\/assets\/icon.svg?rev=3708667","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/findalo\/assets\/screenshot-1.png?rev=3708667","caption":"The search widget open on the storefront, with instant results and the filters panel."},{"src":"https:\/\/ps.w.org\/findalo\/assets\/screenshot-2.png?rev=3708667","caption":"The setup wizard: connect the store to your Findalo account in one click."},{"src":"https:\/\/ps.w.org\/findalo\/assets\/screenshot-3.png?rev=3708667","caption":"Settings (WooCommerce \u2192 Findalo): connection, widget and advanced options."},{"src":"https:\/\/ps.w.org\/findalo\/assets\/screenshot-4.png?rev=3708667","caption":"Sync status: last catalog build, last push and the recent sync log."}],"raw_content":"<!--section=description-->\n<p>Findalo connects your WooCommerce store to the <a href=\"https:\/\/findalo.io\">findalo.io<\/a> search engine: indexes the catalog, publishes it to the search engine and embeds the widget on the storefront by hooking into the theme's existing search bar.<\/p>\n\n<ul>\n<li>Instant search with filters and facets.<\/li>\n<li>Multilingual catalog (WPML and Polylang supported out of the box).<\/li>\n<li>No theme changes required \u2014 the widget hijacks the existing search input.<\/li>\n<li>Push sync: changes in your shop reach findalo.io within seconds.<\/li>\n<li>Failover between primary and fallback origin if findalo.io is unreachable.<\/li>\n<\/ul>\n\n<p>A Findalo account is required. The plugin is free; the search service is provided by Findalo under its own <a href=\"https:\/\/findalo.io\/terminos\">terms<\/a>.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin is the connector between your store and the Findalo search service, a hosted (SaaS) search engine. <strong>Nothing is sent and no external script is loaded until an administrator connects the store to a Findalo account<\/strong> (setup wizard or WooCommerce \u2192 Findalo). Once connected, the plugin talks to the following hosts, all operated by Findalo:<\/p>\n\n<ul>\n<li><strong>api.findalo.io \/ findalo.io<\/strong> \u2014 the Findalo API. The plugin sends your <strong>product catalog<\/strong> (names, descriptions, prices, stock, categories, attributes, images, URLs) every time it changes, and answers the service's requests for: the catalog feed, the plugin\/sync <strong>status<\/strong>, the <strong>connection<\/strong> handshake and <strong>verification<\/strong>, recent <strong>orders<\/strong> (order id, product ids, quantities, dates \u2014 used for \"best sellers\" and \"frequently bought together\"), the <strong>order status<\/strong> lookup used by the shopping assistant (order id or reference, billing email, order date, status and tracking, only when a shopper asks about their own order), and the text of your public <strong>CMS pages<\/strong> (used as the assistant's knowledge base).<\/li>\n<li><strong>widget.findalo.io<\/strong> \u2014 serves the search widget script, loaded on the storefront <strong>only when the store is connected<\/strong> and the widget is enabled. From the shopper's browser the widget sends <strong>search queries, result clicks, add-to-cart events and cart context<\/strong> (cart total and product\/category ids of the current page) to the Findalo API so it can rank results and attribute sales. On the \"thank you\" page the plugin pushes the <strong>purchase<\/strong> (order id, total, currency and line items \u2014 no personal data) to the widget so a sale that started from a search is credited.<\/li>\n<li><strong>panel.findalo.io<\/strong> \u2014 the Findalo panel, opened by the administrator to authorize the connection and manage the search engine.<\/li>\n<li><strong>buscador.findalo.io<\/strong> \u2014 a fallback origin for the widget and API, used automatically if the primary hosts are unreachable.<\/li>\n<\/ul>\n\n<p>The plugin does not send WordPress user accounts, passwords, customer addresses or payment data. Personal data leaves the store only in the order-status lookup described above (the billing email a shopper types to identify their own order) and is not stored by Findalo beyond answering that request.<\/p>\n\n<p>Terms of service: <a href=\"https:\/\/findalo.io\/terminos\">https:\/\/findalo.io\/terminos<\/a>\nPrivacy policy: <a href=\"https:\/\/findalo.io\/privacidad\">https:\/\/findalo.io\/privacidad<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the ZIP via Plugins \u2192 Add New \u2192 Upload, <strong>or<\/strong> copy the <code>findalo\/<\/code> folder into <code>wp-content\/plugins\/<\/code> via SFTP.<\/li>\n<li>Activate the plugin in the Plugins list. A short setup wizard opens automatically.<\/li>\n<li>The wizard walks you through three steps:\n\n<ul>\n<li><strong>Connect<\/strong> \u2014 authorize the store from your Findalo panel with one click, or paste the tenant slug and feed token manually.<\/li>\n<li><strong>Widget<\/strong> \u2014 enable the widget (the trigger selector is managed from your Findalo panel).<\/li>\n<li><strong>Finish<\/strong> \u2014 your catalog is published to findalo.io.<\/li>\n<\/ul><\/li>\n<li>You can re-run the wizard anytime from WooCommerce \u2192 Findalo, and disconnect from the Advanced tab.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20findalo%20account%3F\"><h3>Do I need a Findalo account?<\/h3><\/dt>\n<dd><p>Yes. The plugin connects your store to the Findalo search service; without an account (and without connecting the store) it does nothing and sends nothing.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20wpml%20or%20polylang%3F\"><h3>Does it work with WPML or Polylang?<\/h3><\/dt>\n<dd><p>Yes. The catalog is built once per declared language and the widget surfaces the correct strings based on the storefront locale.<\/p><\/dd>\n<dt id=\"does%20it%20modify%20my%20theme%20files%3F\"><h3>Does it modify my theme files?<\/h3><\/dt>\n<dd><p>No. The widget binds to the existing search input via CSS selectors. You can change the selectors from your Findalo panel if your theme uses a different markup.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20findalo.io%20is%20unreachable%3F\"><h3>What happens if findalo.io is unreachable?<\/h3><\/dt>\n<dd><p>The bootstrap loader falls back to an independent origin within 1.5 seconds. Shoppers do not see an error.<\/p><\/dd>\n<dt id=\"what%20data%20leaves%20my%20store%3F\"><h3>What data leaves my store?<\/h3><\/dt>\n<dd><p>See the \"External services\" section above. In short: your product catalog, anonymous search and click events from the widget, order lines (ids, quantities, dates) and, only when a shopper asks the assistant about their own order, the order details they identify with their billing email. Nothing is sent until you connect the store.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Security: the add-to-cart endpoint (<code>\/wp-json\/findalo\/v1\/addtocart<\/code>) now requires the standard REST nonce (<code>X-WP-Nonce<\/code>). The widget obtains it from the private navigation context (never from cacheable HTML) and sends it with every add; requests without it are refused.<\/li>\n<li>Change: all admin and storefront JavaScript is enqueued through the WordPress API (<code>admin_enqueue_scripts<\/code>, <code>wp_enqueue_scripts<\/code>, <code>wp_add_inline_script<\/code>); no inline <code>&lt;script&gt;<\/code> tags are printed by the plugin.<\/li>\n<li>Change: every setting has its own sanitizer (origin URLs must be absolute http(s) URLs, the widget switch is strictly on\/off, tenant and token are restricted to their alphabets), and the General and Advanced tabs save through separate option groups \u2014 saving one no longer resets the other.<\/li>\n<li>Change: admin notices only appear on the Dashboard, the Plugins list and the WooCommerce screens, and every one of them can be dismissed.<\/li>\n<li>Change: the sales-data export is a plain form (no JavaScript).<\/li>\n<li>Removed: <code>load_plugin_textdomain()<\/code> \u2014 WordPress.org serves the translations.<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li>Preparation for the WordPress.org directory: license changed to GPLv2 or later, \"External services\" and privacy-policy text, escaping and sanitization fixes reported by Plugin Check, the plugin no longer ships its own updater: every install, including those downloaded from the Findalo panel, now receives updates from WordPress.org, cURL push replaced by the WordPress HTTP API, the setup-wizard logo is now bundled with the plugin.<\/li>\n<li>New: navigation context (<code>window.FINDALO_CTX<\/code>) for the widget \u2014 page type, ids, locale and currency in the page; cart and customer context served privately via <code>?wc-ajax=findalo_context<\/code>, never in cacheable HTML.<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Change: official Findalo logo in the setup-wizard header.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>Change: purchase contract v2 \u2014 the plugin pushes the full order (order id, total, currency and line items) to <code>window.findaloQ<\/code> on the \"thank you\" page; attribution, de-duplication and sending are handled by the widget.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Fix: add-to-cart from the widget could still fail with a generic error on stores where a third-party plugin's add-to-cart hook throws <em>before<\/em> WooCommerce records the item (observed with Facebook for WooCommerce on the second item, in a REST context) \u2014 the earlier recovery only helped when the item had already been added. The widget now retries the add with that hook chain temporarily neutralized so a broken third-party plugin can no longer cost you the sale. The normal add path is unchanged. If this triggers, check\/update the offending plugin, as it also breaks add-to-cart on your normal storefront.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Fix: add-to-cart from the widget could still fail on stores where a third-party plugin hooks WooCommerce's add-to-cart action and errors (observed with Facebook for WooCommerce throwing on the second item). WooCommerce adds the item before firing that hook, so the widget now recovers the item and saves the cart even when such a hook fails \u2014 the sale is no longer lost. If this happens, check\/update the offending plugin, as it can also affect your normal storefront.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Fix: add-to-cart from the widget could fail with a generic error on multilingual stores (WPML \/ WooCommerce Multilingual) when the cart already had items \u2014 the item was actually added but a totals-recalculation error rolled the response back. The cart total is now computed defensively so the item is never lost, and error responses carry a diagnostic detail.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>New: \"Sales data\" tab \u2014 export your sales history as a CSV (order id, product id, quantity, date) and import it in your Findalo panel to seed \"Best sellers\" and \"Frequently bought together\" with real data from day one. Confirmed orders only; no personal data is included.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Fix: on multilingual stores (WPML \/ Polylang) each product was indexed once per language, so results showed every product twice with translations mixed together. Each translation group is now collapsed to a single multilingual entry keyed to the store's default language. Single-language stores are unaffected.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fix: size\/color filters no longer match products whose variation is out of stock. Variation attribute values are now excluded from the search facets when every variation carrying that value is out of stock \u2014 matching the widget, which already hides sold-out options under the product card. Stores that do not track per-variation stock are unaffected.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Change: the trigger selector is now managed from your Findalo panel \u2014 removed the field from the module so it can be tuned per-store without a plugin update.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Change: recommendations are now managed entirely from the Findalo panel \u2014 removed the in-module recommendation toggles and the auto-mounted storefront slots.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: one-click \"Connect with Findalo\" button (authorize from your panel, no copy-paste) with a manual-connect fallback.<\/li>\n<li>New: \"Verify connection\" button that confirms Findalo is receiving your catalog.<\/li>\n<li>New: \"Widget texts\" tab \u2014 customize the ~50 widget UI strings per language; shipped translations for ES\/EN\/FR\/IT\/PT\/DE\/NL.<\/li>\n<li>New: purchase attribution so sales that started from a search are credited.<\/li>\n<li>New: add-to-cart, shopper-prices and orders endpoints powering the widget cart and recommendations.<\/li>\n<li>New: EAN \/ UPC \/ ISBN \/ MPN feed fields (native WC GTIN + common plugin meta).<\/li>\n<li>Improved: SEO meta now falls back across Yoast, Rank Math, SEOPress and AIOSEO.<\/li>\n<li>Reaches feature parity with the PrestaShop module.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: guided setup wizard on first activation (connect \u2192 widget \u2192 publish).<\/li>\n<li>New: store-wide admin notices \u2014 not configured, last push failed, update available.<\/li>\n<li>New: version-migration framework so upgrades reconcile safely without re-activation.<\/li>\n<li>New: \"Disconnect\" action and a recent-sync-activity log on the Status tab.<\/li>\n<li>Fix: plugin version was reported inconsistently (header vs. internal constant).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: catalog sync (status, feed, push) and storefront widget loader.<\/li>\n<\/ul>","raw_excerpt":"Instant search with filters, facets and multi-language support for WooCommerce. Hooks into the theme search bar \u2014 no theme code changes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373800"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/findalo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373800"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373800"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373800"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373800"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373800"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}