{"id":350658,"date":"2026-08-18T15:20:49","date_gmt":"2026-08-18T15:20:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ffinder-search-analytics\/"},"modified":"2026-08-18T15:20:21","modified_gmt":"2026-08-18T15:20:21","slug":"ffinder","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/ffinder\/","author":23543974,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.1","stable_tag":"1.4.1","tested":"7.0.4","requires":"6.1","requires_php":"7.4","requires_plugins":null,"header_name":"ffinder \u2013 Search & Analytics","header_author":"Vacatio Labs","header_description":"A faster replacement for the WordPress search: live autocomplete, did-you-mean suggestions, and a dashboard of what your visitors look for.","assets_banners_color":"6967ef","last_updated":"2026-08-18 15:20:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/vacatiolabs.com\/plugins\/ffinder\/","header_author_uri":"https:\/\/vacatiolabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.1":{"tag":"1.4.1","author":"vacatiolabs","date":"2026-08-18 15:20:21"}},"upgrade_notice":{"1.4.0":"<p>Product search has moved to the paid add-on. If you were searching a product catalogue, install the add-on to keep it; everything else is unchanged.<\/p>","1.3.0":"<p>Every feature bundled here is free and fully functional. Paid extras now live in a separate add-on plugin; if you were using GA4 attribution, advanced analytics, trending searches, voice search or WooCommerce indexing, install the add-on to keep them.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3653153,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3653153,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3653153,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3653153,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3653153,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"ffinder\/search-button":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"ffinder\/search-button","version":"1.0.0","title":"FFinder Search Button","category":"widgets","icon":"search","description":"Add a search button to open the FFinder search modal","supports":{"html":false,"reusable":true,"inserter":true},"parent":["core\/navigation"],"attributes":{"displayStyle":{"type":"string","default":"icon-text"},"buttonText":{"type":"string","default":"BUSCAR"}},"textdomain":"ffinder","editorScript":"file:.\/index.js","editorStyle":"file:.\/editor.css","style":"file:.\/style.css"}},"tagged_versions":["1.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3653153,"resolution":"1","location":"assets","locale":"","width":1439,"height":1733},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3653153,"resolution":"2","location":"assets","locale":"","width":690,"height":530},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3653153,"resolution":"3","location":"assets","locale":"","width":1437,"height":1723},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3653153,"resolution":"4","location":"assets","locale":"","width":1435,"height":1786}},"screenshots":{"1":"The search-analytics dashboard: KPIs, activity chart and click breakdown.","2":"Live autocomplete with posts, categories and tags.","3":"Appearance: ten predefined colour palettes plus your own saved palettes.","4":"Tools: index health diagnostics and the batched rebuild."}},"plugin_section":[],"plugin_tags":[2109,3226,5185,944,233975],"plugin_category":[],"plugin_contributors":[276308],"plugin_business_model":[],"class_list":["post-350658","plugin","type-plugin","status-publish","hentry","plugin_tags-ajax-search","plugin_tags-autocomplete","plugin_tags-live-search","plugin_tags-search","plugin_tags-search-analytics","plugin_contributors-vacatiolabs","plugin_committers-vacatiolabs"],"banners":{"banner":"https:\/\/ps.w.org\/ffinder\/assets\/banner-772x250.png?rev=3653153","banner_2x":"https:\/\/ps.w.org\/ffinder\/assets\/banner-1544x500.png?rev=3653153","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ffinder\/assets\/icon.svg?rev=3653153","icon":"https:\/\/ps.w.org\/ffinder\/assets\/icon.svg?rev=3653153","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ffinder\/assets\/screenshot-1.jpg?rev=3653153","caption":"The search-analytics dashboard: KPIs, activity chart and click breakdown."},{"src":"https:\/\/ps.w.org\/ffinder\/assets\/screenshot-2.jpg?rev=3653153","caption":"Live autocomplete with posts, categories and tags."},{"src":"https:\/\/ps.w.org\/ffinder\/assets\/screenshot-3.jpg?rev=3653153","caption":"Appearance: ten predefined colour palettes plus your own saved palettes."},{"src":"https:\/\/ps.w.org\/ffinder\/assets\/screenshot-4.jpg?rev=3653153","caption":"Tools: index health diagnostics and the batched rebuild."}],"raw_content":"<!--section=description-->\n<p>ffinder replaces the slow default WordPress search with a dedicated, indexed FULLTEXT engine, and gives you an analytics dashboard so you finally know <strong>what your visitors are looking for<\/strong> \u2014 and whether they find it.<\/p>\n\n<p>It is built for speed (a denormalized search index keeps queries off the main <code>wp_posts<\/code> tables, and repeated searches are served from cache) and for insight (every search, click and \"no results\" query is recorded and visualised).<\/p>\n\n<p>Everything described below is included and fully functional. There is no trial, no usage limit and no feature that stops working after a while.<\/p>\n\n<h4>Search experience<\/h4>\n\n<ul>\n<li><strong>Indexed FULLTEXT search<\/strong> with weighted title \/ excerpt \/ content fields.<\/li>\n<li><strong>Live autocomplete<\/strong> for posts, categories and tags, with configurable limits.<\/li>\n<li><strong>\"Did you mean?\" suggestions<\/strong> for queries that return no results.<\/li>\n<li><strong>Term highlighting<\/strong> in the results.<\/li>\n<li><strong>Floating global search tab<\/strong> available site-wide, with an optional keyboard shortcut.<\/li>\n<li><strong>Gutenberg \"Search Button\" block<\/strong>, the <code>[ffinder_search]<\/code> shortcode, a classic widget and a nav-menu item.<\/li>\n<li>Optional replacement of the theme's native search form.<\/li>\n<\/ul>\n\n<h4>Search analytics dashboard<\/h4>\n\n<ul>\n<li>KPIs: total searches, unique queries, success rate, average results.<\/li>\n<li>Interactive activity charts over configurable time ranges.<\/li>\n<li>Top queries, top clicked results and <strong>queries without results<\/strong> (content gaps).<\/li>\n<li>Click tracking on results.<\/li>\n<li>One-click <strong>CSV export<\/strong> of the analytics table.<\/li>\n<\/ul>\n\n<h4>Performance &amp; maintenance tools<\/h4>\n\n<ul>\n<li>Denormalized search index with an incremental daily refresh.<\/li>\n<li>Cached responses for repeated queries.<\/li>\n<li>Index health diagnostics and a batched \"Rebuild index\" tool.<\/li>\n<li>Settings export \/ import.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p><strong>ffinder does not contact any external service.<\/strong> No data leaves your site: searches, clicks and analytics are stored only in your own WordPress database, and all bundled assets (Font Awesome, Chart.js) are served locally rather than from a CDN.<\/p>\n\n<p>Search records are stored in ffinder's own tables and include the visitor's IP address and user agent, which is what makes bot filtering and rate limiting possible. You can delete this history at any time from <strong>ffinder \u2192 Analytics<\/strong>, and enabling \"Delete all data on uninstall\" in the settings removes every ffinder table and option when the plugin is deleted.<\/p>\n\n<h4>A note on ffinder Pro<\/h4>\n\n<p>A separate paid add-on adds product search \u2014 from WooCommerce or from an external feed, with a Products tab in the results and products in autocomplete \u2014 plus GA4 revenue attribution, advanced analytics (conversion funnel, activity heatmap, content-opportunity drill-downs), trending searches, voice search, featured products and search-quality regression testing. It is an independent plugin: <strong>nothing in this plugin depends on it, is disabled without it, or checks for a licence.<\/strong><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ffinder<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP from <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>ffinder \u2192 Settings<\/strong> to configure search behaviour and appearance.<\/li>\n<li>Add a search box with the block, the widget, or the shortcode <code>[ffinder_search]<\/code>.<\/li>\n<li>(Optional) Enable the floating global search tab under <strong>ffinder \u2192 Settings \u2192 General<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20add%20the%20search%20box%20to%20my%20site%3F\"><h3>How do I add the search box to my site?<\/h3><\/dt>\n<dd><p>Use the <strong>ffinder Search Button<\/strong> block, the classic widget, a nav-menu item, or the <code>[ffinder_search]<\/code> shortcode in any page or post.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20the%20default%20wordpress%20search%3F\"><h3>Does it replace the default WordPress search?<\/h3><\/dt>\n<dd><p>Optionally. Enable \"Replace theme search\" in the settings to have ffinder take over your theme's search form automatically.<\/p><\/dd>\n<dt id=\"which%20content%20does%20it%20search%3F\"><h3>Which content does it search?<\/h3><\/dt>\n<dd><p>Standard posts. Product catalogues \u2014 WooCommerce or an external feed \u2014 are searchable through the paid add-on.<\/p><\/dd>\n<dt id=\"is%20the%20analytics%20data%20sent%20anywhere%3F\"><h3>Is the analytics data sent anywhere?<\/h3><\/dt>\n<dd><p>No. ffinder makes no outbound requests at all. Everything is stored in your own WordPress database.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20uninstall%3F\"><h3>What happens to my data when I uninstall?<\/h3><\/dt>\n<dd><p>By default your index and analytics are preserved, so a reinstall keeps working. If you enable \"Delete all data on uninstall\" in the settings, all ffinder tables and options are removed when you delete the plugin.<\/p><\/dd>\n<dt id=\"why%20is%20the%20search%20index%20empty%20right%20after%20activating%3F\"><h3>Why is the search index empty right after activating?<\/h3><\/dt>\n<dd><p>The index is built in the background. To fill it immediately, go to <strong>ffinder \u2192 Tools<\/strong> and run <strong>Rebuild index<\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>The ffinder Pro page now illustrates each feature with a diagram of what it does, drawn inline so it costs no extra request and always matches the admin palette.<\/li>\n<li>Added a compact Pro panel to the ffinder Dashboard. It appears only on that screen, and disappears entirely once the add-on is installed.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Product search now lives entirely in the paid add-on. This plugin no longer indexes, searches or displays products, and no longer creates the tables behind them.<\/li>\n<li>Added extension points so add-ons can contribute to the search UI without this plugin knowing what they add: extra result tabs, extra autocomplete sections, extra activity-chart series, extra click types and settings-driven CSS.<\/li>\n<li>Click tracking is now type-agnostic: an add-on records its own kind of result through the same table posts use.<\/li>\n<li>Removed the search results cache table. Nothing had written to it since response caching moved to transients, so it was dropped along with the code that read it.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>All features in this plugin are now free and fully functional; paid extras moved to a separate add-on plugin.<\/li>\n<li>The analytics dashboard was rebuilt on the shared design system, with KPI sparklines, period comparison and a filterable queries table.<\/li>\n<li>Every stylesheet and script is registered through the WordPress enqueue API \u2014 no inline <code>&lt;script&gt;<\/code> or <code>&lt;style&gt;<\/code> output remains.<\/li>\n<li>Added a standard <code>uninstall.php<\/code> with the same conservative cleanup behaviour.<\/li>\n<li>Hardened settings import: uploads are validated and sanitized before being stored.<\/li>\n<li>Added <code>wp_unslash()<\/code> throughout input handling, and documented the nonce strategy for read-only admin filters.<\/li>\n<li>Updated the bundled Chart.js to 4.5.1.<\/li>\n<li>Translations are now delivered through translate.wordpress.org instead of being bundled.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Analytics: \"View all\" modals with date filtering and CSV export for content opportunities and top posts, plus rows-per-page pagination on the queries table.<\/li>\n<li>Incremental daily index refresh (replaces the full nightly rebuild) with index health diagnostics.<\/li>\n<li>\"Did you mean?\" precomputed suggestions for zero-result queries.<\/li>\n<li>Performance: denormalized index columns and results cache.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: indexed FULLTEXT search, autocomplete, analytics dashboard, click tracking, CSV export, global search tab and customizable appearance.<\/li>\n<\/ul>","raw_excerpt":"A faster replacement for the WordPress search: live autocomplete, did-you-mean suggestions, and a dashboard of what your visitors look for.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350658"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vacatiolabs"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350658"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350658"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350658"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350658"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350658"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}