When a potential customer types a misspelled product name into your search bar, a default "No results found" page can instantly kill a sale. These small typing mistakes often lead directly to abandoned carts, sending ready-to-buy shoppers straight to your competitors.
Fortunately, modern e-commerce tools like smart auto-correct, typo tolerance, and synonym mapping can seamlessly guide visitors to the right products. Optimizing your store’s search functionality ensures every query turns into a seamless purchase and boosts your overall conversion rate.
Why Store Search Typos Are a Silent Revenue Leak
Every typo search that returns "no results" is a near-certain lost sale, because the shopper rarely tries again. The fix is typo tolerance (fuzzy search), which uses string-similarity algorithms like Levenshtein distance to match misspelled queries to the closest real product names, categories and keywords. On PrestaShop, you can add this with a dedicated search module or implement it manually via a search controller override.
Someone hunting for a leather satchel on their phone taps out "sachel", hits enter, and lands on an empty results page. There is no "did you mean" prompt, no suggested products, just blank space and a back button.
Typos are not an edge case you can design away. Approximately 25% of all site search queries on ecommerce websites are misspelled, which means roughly one in four shoppers arrives with a query that exact-match search cannot resolve.
The failures come in predictable shapes:
- Keyboard slips, where fingers hit an adjacent key ("shoos" instead of "shoes", "dreess" instead of "dress").
- Phonetic guesses, where shoppers spell what they hear ("nikey" for "Nike", "corteze" for "Cortez").
- Missing or doubled letters ("headfones", "jewlery").
- Wrong word endings, especially plurals and UK/US variants ("trainers" against a catalogue built around "trainer").
PrestaShop's native search is unforgiving here. It matches on how your product names, categories and keywords are actually stored, so a query that is one character off fails outright rather than being treated as the obvious near-match it is.
A shopper who gets zero results does not assume they typed badly; they assume you do not stock the item. They leave, and most go straight to a competitor who stocks the same product under a slightly different spelling.
The leak is quiet for two reasons. Search typos do not appear in your error logs, and the shopper's exit looks identical to any other bounce. You cannot fix what you never see, which is why typo tolerance belongs on your list before the next traffic spike.
Method 1: Install A Typo-Tolerant Search Module for PrestaShop
PrestaShop changed how it handles search in recent versions, adding a new search engine built on the Symfony framework. Some older search modules were written for the legacy engine and no longer behave as expected on modern stores, so the first thing to check before you buy anything is that the module explicitly supports your PrestaShop version.
A dedicated module is the low-maintenance route. You install it once, tune one or two settings, and it keeps working as your catalogue grows. No core files to patch, no merge conflicts when PrestaShop releases an update.
What a Typo-Tolerant Search Module Should Actually Do
Not every module advertised as "smart search" tolerates misspellings in the way you need. Check the feature list against what your customers actually do wrong when they type.
- True fuzzy matching, which finds results for words a character or two away from the real product name. A search for "sandl" should still surface sandals.
- Synonym support so a store that sells "trainers" and receives searches for "sneakers" or "running shoes" still returns the right products.
- Autocompletion, which suggests corrections as the customer types, catching the mistake before they hit enter.
- Search analytics showing the real queries people typed, including the ones that returned nothing. Those zero-result queries are your most valuable input for synonyms.
- Compatibility with your PrestaShop version and theme, confirmed before purchase rather than after.
Browse the module listings on the PrestaShop Addons Marketplace and filter by your version. Read the changelog, not just the description. A module last updated several years ago is a risk on a current store, regardless of how good its feature list looks.
Step 1: Install and Enable the Module
Installing through the back office keeps the module files in the correct location and registers its hooks automatically.
- Log in to your PrestaShop back office.
- Go to Modules, then the Module Manager.
- Click Upload a module and select the ZIP file you downloaded from Addons, or search for the module by name if you bought it while logged in.
- Wait for the installation to complete, then click Configure.
Step 2: Set Your Typo Tolerance
This setting decides how forgiving your search becomes, and it is the one worth getting right before anything else.
- Set the typo tolerance level to one or two characters. One is safe and precise. Two catches more mistakes but starts returning looser matches.
- Set the minimum word length for fuzzy matching. Short words like "bag" should usually be matched exactly, because a one-character change can turn them into an entirely different product.
- Leave exact match priority enabled so a correctly spelled query always outranks a fuzzy correction.
Raise tolerance one notch at a time and test after each change. Setting it to the maximum immediately tends to produce results so loose that customers stop trusting the search box.
Step 3: Test With the Misspellings Your Customers Actually Make
Run real misspellings through your own search box and watch what comes back.
- Drop a letter: search "sandl" instead of "sandal".
- Swap two letters: search "shrits" instead of "shirts".
- Double a letter that should be single: search "dressess" instead of "dresses".
- Use the wrong vowel: search "sandels" instead of "sandals".
- Search a synonym your catalogue does not use, such as "sneakers" on a store that lists "trainers".
You should see relevant products for every one of those queries, with the closest matches ranked near the top rather than buried further down.
Step 4: Feed Your Own Search Data Back In
After a week or two of live traffic, open the module's search analytics and look at the queries that returned no results. Each one is either a misspelling you can tune for or a gap in your catalogue worth fixing.
Add the recurring ones as synonyms or as additional search keywords on the relevant product pages. This is the single highest-value maintenance task for store search, and it takes a few minutes a week rather than a development project. Once the synonyms are in place, the module handles new misspellings on its own, which is what keeps this route low-effort over time.
If you would rather not depend on a module, or you have a small catalogue and want to keep your stack lean, the manual override route is covered next.
Method 2: Add Fuzzy Matching Manually with a PrestaShop Search Controller Override
If you have a developer on hand and want full control over how corrections are ranked, PrestaShop lets you extend its own search internals rather than swapping them out. The search box funnels into the SearchController front controller, which hands the raw term to the Search core class. That class is where the database lookup actually happens, so it is the natural place to intercept a term that returns nothing.
An override means your store keeps the default behaviour when a query matches, and adds a second pass only when it does not. That second pass is the fuzzy layer.
The override approach, step by step
This is not a copy-paste job. Treat the following as the shape of the work, then implement it against your own PrestaShop version's classes.
- Create a class file that extends the core Search class, following PrestaShop's override conventions so your version takes precedence.
- Capture and sanitise the incoming query term. Normalise case, strip punctuation, and trim the term before you compare anything.
- Build a candidate pool. Pull product names, and optionally category or brand names, into a list you can score. Cache this list; do not rebuild it on every keystroke.
- Score each candidate against the query using a distance algorithm such as Levenshtein, or a trigram-based similarity check. Both measure how close two strings are.
- Set a threshold. A short word like "rug" needs a tight tolerance, or it will match "mug" and "jug". A longer word like "headphones" can tolerate more noise safely.
- When the exact query returns no products, inject the highest-scoring candidates as fallback results instead of showing an empty page.
Length matters when you pick that threshold. A one-character edit on a five-letter word changes it completely, while the same edit on a twelve-letter word usually just means a slipped finger. Many implementations scale the allowed distance to the word length rather than using one fixed number.
Fuzzy matching that suggests the wrong product is worse than an empty page, because the customer trusts the result and buys the wrong thing.
Risks you are taking on
- Performance. Scoring every product name on every search adds processing time. Cache aggressively and limit the candidate pool.
- Upgrades. Overrides live alongside core files. A PrestaShop update can change the parent class and break your override silently.
- Search results page. Your fallback results still need to render through the normal results template, or the customer lands on a page that looks broken.
- Relevance drift. Without tuning, fuzzy matching starts surfacing loosely related products and diluting the results page.
Back up your store and database, and build and test this on a staging copy first. An override that breaks search on a live store takes the whole catalogue browsing path down with it.
Is this the right path for you?
| Consideration | Manual override | Ready-made module |
|---|---|---|
| Setup effort | Significant development time | Install and configure |
| Ongoing maintenance | You own it after every upgrade | Handled by the module author |
| Tuning control | Complete, you set every threshold | Limited to exposed settings |
| Best for | Stores with unusual catalogues or in-house developers | Most stores wanting a fix this week |
If your catalogue uses heavy industry jargon, part numbers, or multiple languages, the manual route can be worth it, because you can tune the scoring to your own vocabulary. For a standard catalogue, the effort rarely pays back. For most operators, the configuration route is the one that actually ships.
How Fuzzy Search Works: Matching Typos to Real Product Names
Fuzzy matching is what lets a search box decide that the word a shopper typed is close enough to a real product name to show results anyway. Instead of demanding an exact character-for-character match, it measures how far apart two strings are and accepts anything within a tolerance you control.
The most common way to measure that distance is Levenshtein distance. It counts the minimum number of single-character edits (insertions, deletions, or substitutions) needed to turn one word into another. The smaller the number, the closer the match.
Consider a shopper typing shooes into a PrestaShop search bar. Comparing it with shoes takes one deletion, so the distance is 1. That is comfortably inside a threshold of 1 or 2 edits, so the query resolves to shoe products and the visitor never sees a zero-result page. A longer word such as headphones needs a single transposition, which most fuzzy implementations also treat as a low-cost error.
A second approach uses n-grams, which slice words into overlapping fragments. Shooes and shoes share most of their letter pairs, so they score as similar even when edit distance is ambiguous. Many production search engines combine both: n-grams for broad candidate generation, then Levenshtein distance or a scoring function to rank the survivors.
The commercial payoff is recall: more real matches surface from imperfect input, so fewer shoppers abandon. Precision is protected by the threshold, because tightening the allowed edit count stops unrelated products from crowding the top of the results. The trick is tuning that balance for your catalogue, and it is exactly the job a PrestaShop module handles for you.
| Typed query | Intended term | Edit type | Distance |
|---|---|---|---|
| shooes | shoes | Insertion | 1 |
| headphoens | headphones | Transposition | 1 |
| jakcet | jacket | Substitution pair | 2 |
Tolerance is not unlimited, though. Set it too high and a query for coat may start pulling in coats, boots, and boats, which dilutes relevance and frustrates shoppers who knew what they wanted. Fuzzy matching earns its keep when the threshold forgives typos but never forgives a genuinely different product.
Fuzzy Search vs Exact Match: Which Should Your Store Use?
PrestaShop's default search behaviour leans towards exact matching. It compares the shopper's string against product names, references, and descriptions, and returns a result only when the characters line up. That is precision, and precision has a cost: one wrong letter and the results page comes back empty.
Fuzzy matching swings the other way. It measures how close a query is to a real product name, and returns matches within a tolerance threshold. Shoppers get results from imperfect input, but loosen the tolerance too far, and unrelated products start appearing next to the right ones. Neither approach is correct on its own.
| Behaviour | Exact match | Fuzzy search |
|---|---|---|
| Typo tolerance | None. One wrong character returns nothing. | Returns near-matches within the tolerance setting. |
| Result relevance | High. Everything shown genuinely matches the query. | Variable. Depends on how loose the threshold is. |
| Best suited to | Product references, SKUs, model numbers, barcodes. | Descriptive names, categories, brand names typed from memory. |
| Main risk | Zero-result pages and abandoned sessions. | False positives that bury the product the shopper wanted. |
The practical answer for most PrestaShop catalogues is a layered search: try the exact match first, and only fall back to fuzzy matching when the exact pass returns nothing. A shopper who types a full product reference correctly gets an instant, accurate hit with no noise. A shopper who types "blak leather jaket" still lands on something useful instead of a dead end.
Fallback ordering matters because it protects both audiences at once. Reference-based buyers (trade customers, replacement-part shoppers, anyone copying a code from an invoice) are the ones most damaged by fuzzy results appearing first, since a wrong SKU match can send them to the wrong product page entirely. Browsing shoppers searching by description are the ones most damaged by exact-only search, because they rarely type the catalogue's wording exactly.
Tune the tolerance until near-misses appear but unrelated products do not, and keep exact matching as the first pass rather than the only pass.
If your catalogue relies heavily on structured references, keep the tolerance tight and let fuzzy matching handle only single-character slips. If it relies on descriptive names, widen it, then spot-check searches like "blue" and sounding brand names where over-matching is most likely to show up.
Troubleshooting: When Typo Tolerance Causes More Problems Than It Solves
Fuzzy matching is a trade-off, not a switch you flip once and forget. Loosen it too far, and your store starts guessing on behalf of customers, returning a wall of loosely related products when they typed something specific. Tighten it too much, and you are back to zero-result pages. Most problems after enabling typo tolerance fall into three buckets: results that feel wrong, a search bar that feels slow, and a catalogue that mixes languages.
Irrelevant or Over-Eager Results
A customer types "cable" and your results page fills with "table", "candle" and "cradle". That is a threshold set too loosely, usually a short-word minimum that lets the matcher rewrite almost anything into a near neighbour.
- Raise the minimum word length before fuzzy logic kicks in, so short queries like "bag" or "pen" are matched exactly.
- Reduce the maximum edit distance allowed, typically from two characters to one, so "shoos" still finds "shoes" but "chair" does not drift to "chain".
- Exclude reference codes, SKUs and model numbers from fuzzy matching entirely, since a wrong part number is worse than no result.
- Check whether the module boosts results by popularity rather than relevance. A bestseller with a weak name match can outrank the exact product the customer wanted.
If a customer can see why a result appeared, they will forgive it. If they cannot, they assume your search is broken.
Slow Search on Large Catalogues
Typo tolerance adds work to every keystroke, because each partial query has to be compared against your product names rather than looked up directly. On a small catalogue, this is invisible. On a large one, combined with an autocomplete that fires on every letter, it becomes noticeable.
Start by checking whether the slowdown comes from matching or from autocomplete suggestions, which often run as a separate query. Debounce the suggestion call so it waits for a pause in typing, and cap the number of suggestions returned. If the store runs on shared hosting, a caching layer in front of search results usually recovers most of the difference. Test any change on a staging copy of the catalogue rather than on the live store.
Conflicts Across Multiple Languages
Multilingual PrestaShop shops hit a specific trap: an edit distance that works in English will not behave the same way in French, German or Polish, where accents and word length change what counts as a near miss. A one-character tolerance that feels right for "trousers" is far too generous for short German compounds.
- Check whether accent-insensitive matching is enabled, so "cafe" finds "café" without treating the accent as a typo.
- Review whether the module applies one global threshold across all languages or lets you set it per language.
- Test the same handful of misspelled queries in each language you sell in, since a fix for one can degrade another.
A practical debugging habit: keep a short list of ten real misspelled queries your customers actually type, and re-run them after every configuration change. That list tells you more than any settings screen.
How to Test Your New Search Setup and Measure the Impact
Once typo tolerance is live, you need proof it is working. That means deliberately searching for things nobody would type correctly, tracking what shoppers do after they search, and watching for the typos your catalogue still cannot catch.
Run a Misspelling Test Pass
Build a short list of deliberate errors based on your own best-selling products, then run each one through your storefront search box and note the result.
- Drop a letter: "headfones" instead of "headphones".
- Swap two letters: "reciever" instead of "receiver".
- Use the wrong vowel: "sandels" instead of "sandals".
- Type it phonetically: "nite lite" for a night light.
- Search a product in the singular when your catalogue only uses the plural.
Repeat the same list after any changes to your search settings so you can compare like for like. A search that returned nothing last week should now return a sensible product grid, not an empty page.
Compare Before and After
If your PrestaShop install gives you a way to run two variants of the shop, test typo tolerance on one and leave the other on exact matching. Send roughly half your traffic to each and give the test enough time to collect meaningful order volume.
| Metric | What it tells you |
|---|---|
| Zero-result searches | Whether the typo-tolerance setting is actually catching misspellings. |
| Search exit rate | How often a shopper searches and then leaves without opening a product. |
| Search-to-cart rate | Whether typo-tolerant results lead to products people actually buy. |
| Search-driven revenue | The money attributed to shoppers who used the search box before ordering. |
If your store does not support formal A/B testing, compare the same figures across consecutive months instead. Record the numbers before you enable fuzzy matching, then check them again four to six weeks later. Search-to-cart rate is the metric that matters most, because a shopper who reaches a product page is far closer to a sale than one staring at zero results.
Monitor Search Terms Over Time
Check your analytics search-term report on a regular schedule, ideally once a month. New product names, seasonal spellings, and regional word choices all create fresh typos, and the report is where they surface first.
The searches that return nothing are your most valuable report, because every one of them is a customer telling you exactly what they wanted to buy.
When a term appears repeatedly with no results, decide whether it is a misspelling your fuzzy matching should catch, or a genuinely missing product. If it is a spelling issue, tighten your search settings. Consider adding a promoted search term or a redirect for the highest-volume offenders, so anyone who types that phrase lands on the right category rather than an empty page.
Keep the loop running. Test, measure, then adjust, and your PrestaShop store search gets better at reading your customers' fingers rather than punishing them for them.