Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every morning, ClickRuntime lists the Crisp conversations still waiting for an answer.

  2. It keeps the ones that have been waiting more than a day.

  3. 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

RunsOn a schedule
Get reminded about unresolved Crisp chatstoday, 9:00Succeeded
Email · Crisp chats unresolvedkai@acme.example: "Any update on my exchange?" https://app.crisp.chat/website/…/inbox/session_…/

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
unresolved_chat_reminder.pyexample
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?
You choose the age threshold, such as two hours or one day. Chats pending for less time are ignored, so the list shows only those that really need follow-up. You choose the age threshold, such as two hours or a day, and chats pending for less time are left out.
Does it include resolved chats?
No. It lists conversations whose state is pending, and resolved or unresolved but recently active chats are left out. Only the ones waiting on a response should appear. Only conversations in the pending state are listed, and resolved ones or those with recent replies are not part of the email.
Can the reminder go to a channel instead?
Yes, you can have it post in Slack or email the whole team. Request the destination you prefer and approve the change before it goes live. Slack posts or an email to the whole team are both possible, and you get to check it first.
What permissions does it need?
conversation read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.