
Index Settings Dashboard - Manage post type indexes, view document counts, and trigger indexing operations
Scry Search is built by developers for developers — but you don’t need to be one to run it.
If you can install a plugin and paste API keys, you can connect Meilisearch, pick post types, index content, tune ranking/filterable fields/synonyms/typo tolerance/weights, and turn on autosuggest from wp-admin. No theme edits required. Existing search forms keep working. WooCommerce products are a first-class post type.
If you are a developer, the same plugin is meant to be extended: scry_ms_* filters/actions, optional window.scrySearch, and a full hook reference in DOCS.md (GitHub). We use this kind of surface on client work and our own products, so the priorities are boring on purpose: stable hook names, easy-to-find call sites, a real docs file, and no forced frontend chrome.
Site owners and agencies can go live without custom development. Developers can still hook in when a project needs it.
This plugin does not force a search UI on you. No required shortcode, widget, or results template.
What you get by default is indexing and Meilisearch-backed queries. Autosuggest and highlighting are optional and off unless you turn them on. Keep your theme’s search, or build your own UI against WP_Query / the autosuggest REST endpoint.
Scry Search hooks posts_pre_query. Any WP_Query with a search string can go through Meilisearch (main search, programmatic queries, autosuggest) and still return normal WP_Post objects.
search.php, searchform.php, core search widgets/blocks, and page-builder search elements keep working if you use themscry_ms_should_search when you need native WP searchWorks with Elementor, Divi, Beaver Builder, and similar tools: whatever search box they output still hits WordPress search, which Scry Search routes to Meilisearch.
Enable Autosuggest under Scry Search Search Settings. The plugin attaches debounced AJAX to existing name="s" fields. Suggestions use the same Meilisearch indexes as full-site search. Optional CSS class selector so only the forms you choose get typeahead. Thumbnails supported when a featured image exists.
Shape the result data with scry_ms_autosuggest_results, or the rendered HTML with scry_ms_autosuggest_results_rendered. Leave autosuggest off to stay fully headless.
Index any registered post type independently — posts, pages, WooCommerce products, CPTs from other plugins. Each type gets its own Meilisearch index:
taxonomies.<name>.id), and more for facets and advanced filtersattribute:asc / attribute:desc rules per indexSearch uses Meilisearch federated multi-search: indexes queried together, results merged and re-ranked with your per–post-type weights (not a hand-stitched PHP merge).
Per index from the tabbed Index Settings dialog (or via filters):
Fully compatible. Select product in Index Settings, choose product fields and meta, set federation weights if you also search posts/pages. Catalog search upgrades; theme and checkout stay as they are. Same hooks as any other post type if you need custom product documents or autosuggest rows.
Scry Search Search Analytics:
scry_ms_analytics_event_to_insert (non-column keys go into search_metadata)Task drawer on plugin admin screens:
Scry Search Logs:
Admin covers setup and tuning. When you need custom behavior, use the public scry_ms_* PHP hooks and the optional window.scrySearch runtime. Call sites are marked //@HOOK: scry_ms_… in source.
Full argument lists, return types, timing, and JS examples: DOCS.md on GitHub (also shipped with the plugin).
Code is split into features/<name>/ packages. Prefer a search-only API key for front-end paths; the shared client factory supports admin vs search.
PHP filters
Indexing and documents:
scry_ms_should_indexscry_ms_should_deletescry_ms_index_prepare_documentscry_ms_index_namesscry_ms_index_searchable_attributesscry_ms_index_filterable_attributesscry_ms_index_filterable_fieldsscry_ms_index_typo_tolerancescry_ms_bulk_index_query_argsscry_ms_bulk_index_batch_sizescry_ms_index_ranking_rulesscry_ms_index_fieldsscry_ms_index_meta_keysIndex settings:
scry_ms_index_settings_ajaxscry_ms_index_settings_backupscry_ms_index_ranking_rules_before_updatescry_ms_index_searchable_attributes_before_updatescry_ms_index_synonyms_before_updatescry_ms_index_stop_words_before_updatescry_ms_index_filterable_attributes_before_updatescry_ms_index_dictionary_before_updatescry_ms_index_typo_tolerance_before_updateSearch and client:
scry_ms_should_searchscry_ms_meilisearch_clientscry_ms_multi_search_index_namesscry_ms_multi_search_query_paramsscry_ms_multi_search_queryscry_ms_multi_search_queriesscry_ms_multi_search_federationscry_ms_multi_search_raw_resultsscry_ms_multi_search_final_resultsAutosuggest, admin, analytics, logs, window:
scry_ms_autosuggest_queryscry_ms_autosuggest_resultsscry_ms_autosuggest_results_renderedscry_ms_admin_pagesscry_ms_analytics_event_to_insertscry_ms_log_messagescry_ms_window_localizedscry_ms_premium_upgrades_displayPHP actions
scry_ms_after_index_documentscry_ms_after_delete_documentscry_ms_after_bulk_indexscry_ms_after_create_indexscry_ms_index_settings_restorescry_ms_index_update_settingsscry_ms_index_settings_sections_uiscry_ms_premium_upgrade_settings_uiJavaScript runtime (window.scrySearch)
Optional. Enqueued on the front end (script handle scry_ms_window-script). Wait for the scrySearchReady event on document before using it.
window.scrySearch.versionwindow.scrySearch.getSearchForms()window.scrySearch.getSearchFormsByClass(className)window.scrySearch.registerUpgrade(name, version) — namespace for add-ons under window.scrySearch.upgradesPer form (ScrySearch_SearchForm):
formElement, searchInput, datasubmit(), submitAjax() (debounced)addPreSubmitAction(fn, order) / addPostSubmitAction(fn, order)addPreSubmitAjaxAction(fn, order) / addPostSubmitAjaxAction(fn, order)A search form is any <form> with role="search" or a text/search input named s. Autosuggest and similar features attach through the AJAX action lists. Details and examples: DOCS.md.
Enter URL + keys under Scry Search Connection Settings, pick post types, index, done.
search.php, searchform.php)Don’t want to run Meilisearch yourself? ScryWP Search is managed hosting aimed at WordPress.
Hooks/docs: DOCS.md or GitHub. Issues and questions: same repo or JG Web Development.