On a schedule
Get reminded about unresolved Crisp chats
Every morning you get a list of chats that have been waiting more than a day.
- Runs
- On a schedule
- Apps
- Crisp
- AI
- Not needed
- Access
- conversation read
Send this to your assistant
Create a ClickRuntime automation: every morning at 9am, email me Crisp conversations that are still unresolved after 24 hours, with the visitor's email and last message.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Chats get lost when the conversation stops mid-way. A customer asks a question in Crisp, an agent replies that they will check, and then the day gets busy. The conversation stays pending, the customer waits, and the next sign of life is an angry email asking why nobody answered.
On a schedule, this lists the Crisp conversations that are still pending, filters them by how long they have been waiting, and emails you the ones that have gone unanswered too long. Pending chats stop sitting in the inbox unnoticed.
Support teams of any size use it as a safety net, because it catches the chat nobody remembers promising to follow up on. The list is built from conversations that Crisp itself marks as pending, filtered by age, so only chats that have really waited too long are included, not every open conversation.
What you get out of it
Stop customers feeling ignored
A reminder about chats pending for hours gives the team a chance to reply before the customer gives up. Responding late is better than never responding. Replying late is better than never, and a reminder after a few hours gives the team a chance before the customer leaves.
Protect your reputation for responsiveness
Slow replies are what customers remember. A regular nudge keeps response times in check without needing a full ticketing system. Customers remember slow replies above all, and a regular nudge keeps response times in check without a full ticketing system.
Make handovers safer
When an agent finishes a shift, any chat left pending appears in the list. The next person picks it up instead of assuming someone else did. When a shift ends, any chat left pending shows up in the list, so the next person picks it up and does not assume someone else did.
Prevent small issues becoming complaints
Many complaints begin as simple unanswered questions. Resolving them while they are still small avoids refunds, bad reviews and churn. Many complaints begin as a simple unanswered question, and resolving it while it is small avoids refunds and bad reviews.
See how many chats are stuck
A growing list of pending chats shows when the team needs help. It is a simple measure of workload that needs no dashboard. A growing list of pending chats shows when the team needs help, which makes it a simple measure of workload.
How it works
What happens, step by step
Every morning, ClickRuntime lists the Crisp conversations still waiting for an answer.
It keeps the ones that have been waiting more than a day.
You get one email with each visitor, their last message and a link to the chat.
Before it runs live
- Connect Crisp
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 Crisp steps into one automation
Under the hood
The code that runs this automation
import base64, time
from clickruntime import on_trigger, credentials, http, notify
WEBSITE_ID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"
@on_trigger
def run(event):
auth = base64.b64encode(f"{credentials.secret('CRISP_IDENTIFIER')}:{credentials.secret('CRISP_KEY')}".encode()).decode()
convs = http.get(f"https://api.crisp.chat/v1/website/{WEBSITE_ID}/conversations/1",
params={"filter_unresolved": 1},
headers={"Authorization": f"Basic {auth}", "X-Crisp-Tier": "plugin"}).json()["data"]
cutoff = (time.time() - 86400) * 1000
old = [c for c in convs if c["created_at"] < cutoff]
lines = [f"{c['meta'].get('email', 'no email')}: \"{(c.get('last_message') or '')[:150]}\"\n"
f" https://app.crisp.chat/website/{WEBSITE_ID}/inbox/{c['session_id']}/" for c in old]
if lines:
notify.email_me(f"{len(old)} Crisp chats unresolved for over a day", "\n".join(lines))
return {"unresolved": len(old)}FAQ
Common questions
How long must a chat wait to be listed?
Does it include resolved chats?
Can the reminder go to a channel instead?
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
Get a daily summary of your Crisp chats
Each evening you get the main topics people raised that day and a list of chats still unresolved.
See how it worksGet an email when a visitor starts a Crisp chat
You see each new visitor's first message and email address as soon as they write.
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 “Get reminded about unresolved Crisp chats” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
