Weekly
Email yourself last week's zero-result searches
Each Monday you get the top searches on your site that found nothing.
- Runs
- Weekly
- Apps
- Algolia
- AI
- Not needed
- Access
- analytics ACL
Send this to your assistant
Create a ClickRuntime automation: every Monday at 8am, email me the 50 most frequent Algolia searches on my products index that returned no results in the last 7 days.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Every empty search results page is a missed sale, a failed support lookup or a frustrated reader. For a site using Algolia, the list of queries that returned nothing is available in analytics, but only if you open the dashboard, choose the right index, set the date range and read the list. In practice that happens when someone has an hour to spare, which means rarely, and the same missing products or unknown spellings keep costing visitors for months.
Each week, the automation calls Algolia's no-results endpoint for the last seven days and emails you the queries, with how many times each was searched. The most frequent ones are at the top, so you see where the biggest gaps are first.
It suits site owners, merchandisers and content teams who want a regular look at what visitors could not find.
What you get out of it
You see what visitors wanted and could not find
The list is a direct record of unmet demand. It shows the words customers use and the products or pages they expected, with no interpretation needed. It is plain evidence of what to fix first, with the exact words customers typed.
Quick wins are easy to find
A query searched 80 times with no results is worth ten minutes. Adding a synonym or a page for it can turn that repeated failure into a purchase. That is often the cheapest revenue win available on the site.
Content and range decisions get evidence
If readers keep searching for a topic you have not covered, or shoppers for a brand you do not stock, the report is the evidence you can show when proposing it.
Regular review replaces occasional review
Reading this every Monday takes a few minutes. A habit like that finds problems that an annual search audit would catch far too late. A ten-minute habit beats an annual audit.
Easy to share with the team
Because it is an email, you can forward it to buyers, editors or developers who do not have Algolia access, and each can act on the part that concerns them.
How it works
What happens, step by step
Every Monday, ClickRuntime asks Algolia for the searches on your site from the past 7 days that found nothing.
It ranks them by how many times each was searched.
You get an email with the numbered list, such as "waterproof hiking sandals (84×)".
Before it runs live
- Connect Algolia
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Algolia steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, notify
INDEX = "products"
@on_trigger
def run(event):
resp = http.get("https://analytics.algolia.com/2/searches/noResults",
headers={"X-Algolia-Application-Id": credentials.secret("ALGOLIA_APP_ID"),
"X-Algolia-API-Key": credentials.secret("ALGOLIA_ANALYTICS_KEY")},
params={"index": INDEX, "limit": 50,
"startDate": (date.today() - timedelta(days=7)).isoformat(), "endDate": date.today().isoformat()})
searches = resp.json()["searches"]
lines = [f"{i}. \"{s['search']}\" ({s['count']}×)" for i, s in enumerate(searches, 1)]
notify.email_me(f"Top {len(searches)} searches with no results", "\n".join(lines))
return {"queries": len(searches)}FAQ
Common questions
Does it include the number of times each query was searched?
Which time range is used?
Can I filter out queries that I know are not relevant?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Alert Slack when the no-results rate passes 10%
Your team hears the same day if a growing share of searches return nothing.
See how it worksTurn failed searches into synonym ideas
Failed queries arrive grouped by intent, with suggested synonyms for each group.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Email yourself last week's zero-result searches” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.