Skip to content

Every 30–60 minutes

Get a Slack alert when orders stop or ship late

Slack tells you when no orders have come in for longer than usual, or when paid orders are waiting too long to ship.

Runs
Every 30–60 minutes
Apps
Shopify, Slack
AI
Not needed
Access
Shopify read_orders; Slack chat:write

Send this to your assistant

Create a ClickRuntime automation: every 30 minutes, check Shopify: alert #ops if there's been no order for 3 hours, or if any paid order has been unfulfilled for more than 48 hours.

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

An online gift shop usually takes an order every half hour. One Saturday a payment setting changed and checkout failed silently for six hours. No error appeared anywhere; orders simply stopped, and the owner only noticed on Monday when the weekend total looked wrong.

A check that notices when orders stop, and when paid orders sit unshipped past your promise, catches both kinds of problem while they are still small. You find out about a broken checkout in hours, and late parcels before customers start asking.

What you get out of it

  • Silent checkout failures get caught

    A broken payment method or theme bug rarely announces itself. A gap in orders is often the first sign, and hearing about it quickly limits the lost sales.

  • Shipping promises are kept

    Orders waiting longer than your dispatch time are flagged while there is still time to send them. Fewer customers write in asking where their parcel is.

  • One alert per problem

    Each quiet spell and each late order is reported once, not every half hour. The channel stays useful during a busy weekend.

  • Peace of mind away from the desk

    Owners can step away knowing they will hear if something is wrong. No need to refresh the orders page to check the shop is still selling.

How it works

What happens, step by step

  1. Every 30 minutes, ClickRuntime checks when the last order came into your Shopify store.

  2. If the gap is longer than the limit you set, it posts an alert once, and again only after orders have resumed and stopped again.

  3. It also looks for paid orders that have not been shipped within your dispatch time.

  4. Each late order is reported once in your #ops Slack channel, with its order number and how long it has been waiting.

Before it runs live

  • Connect Shopify
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsEvery 30–60 minutes
Get a Slack alert when orders stop or ship latetoday, 9:00Succeeded
Slack · #opsNo Shopify orders for 3.4 hours (last was #4821). Is checkout working?

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 Google Sheets
  • Combine it with other Shopify and Slack 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.
alert_slack_when_orders_stop_or_ship_late.pyexample
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify, state

STORE = "your-store.myshopify.com"

def gql(query, variables=None):
    resp = http.post(f"https://{STORE}/admin/api/2025-07/graphql.json", json={"query": query, "variables": variables or {}},
                     headers={"X-Shopify-Access-Token": credentials.connection("shopify", "store")})
    return resp.raise_for_status() or resp.json()["data"]

QUIET_HOURS, SLA_HOURS = 3, 48

@on_trigger
def run(event):
    now = datetime.now(timezone.utc)
    last = gql("{ orders(first: 1, sortKey: CREATED_AT, reverse: true) { nodes { name createdAt } } }")["orders"]["nodes"][0]
    gap = now - datetime.fromisoformat(last["createdAt"].replace("Z", "+00:00"))
    if gap > timedelta(hours=QUIET_HOURS) and state.get("quiet_after") != last["name"]:
        notify.slack(f"No Shopify orders for {gap.total_seconds() / 3600:.1f} hours (last was {last['name']}). Is checkout working?", channel="#ops")
        state.set("quiet_after", last["name"])
    cutoff = (now - timedelta(hours=SLA_HOURS)).strftime("%Y-%m-%dT%H:%M:%SZ")
    late = gql(f'{{ orders(first: 50, query: "financial_status:paid fulfillment_status:unfulfilled created_at:<{cutoff}") {{ nodes {{ name createdAt }} }} }}')["orders"]["nodes"]
    alerted = set(state.get("late") or [])
    new = [o for o in late if o["name"] not in alerted]
    if new:
        notify.slack(f"{len(new)} paid orders waiting over {SLA_HOURS}h to ship: " + ", ".join(o["name"] for o in new), channel="#ops")
    state.set("late", sorted(alerted | {o["name"] for o in new})[-500:])
    return {"gap_hours": round(gap.total_seconds() / 3600, 1), "late": len(new)}

FAQ

Common questions

Will it alert me every night when it is naturally quiet?
You can set quiet hours, such as midnight to 7 am, when gaps in orders are ignored. The late-shipping check still runs.
How do I choose the right gap?
Pick a gap that is rare on a normal day. If you usually get an order every 20 minutes, 3 hours without one is worth knowing about.
Does it count partly shipped orders as late?
Orders that are partly fulfilled are left out by default. You can include them if you promise to ship everything within your dispatch time.
What permissions does it need?
Shopify read_orders; Slack chat:write. 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 (every 30–60 minutes). 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 a Slack alert when orders stop or ship late” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.