Hourly
Mark digital orders as fulfilled automatically
Paid orders that match your rules, like digital products, are marked fulfilled without you touching them.
- Runs
- Hourly
- Apps
- Shopify
- AI
- Not needed
- Access
- read_orders, write_merchant_managed_fulfillment_orders
Send this to your assistant
Create a ClickRuntime automation: every hour, mark paid, unfulfilled Shopify orders that only contain products tagged digital as fulfilled.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Some Shopify stores sell products that need no shipping, or are fulfilled by a third party that never reports back: digital goods, print-on-demand items, drop-shipped products or items handed over in person. The orders remain unfulfilled in the admin, so the unfulfilled list fills with hundreds of orders that need no action. Real orders needing attention get lost among them, and reports on fulfillment time are meaningless because nothing is ever marked done.
Every hour the automation finds paid, unfulfilled orders, checks them against your rules, fetches the fulfillment orders for each, and creates a fulfillment so that Shopify records them as fulfilled. Orders that do not match are left alone. Stores selling digital items, gift cards or externally fulfilled goods use it to keep the unfulfilled list limited to real work.
What you get out of it
The unfulfilled list shows real work
With no-ship orders closed automatically, whatever remains unfulfilled needs a person. Packers stop wading through noise and orders that really need shipping are seen first. When 300 digital orders no longer clutter the list, the one physical order with a note is seen first.
Customers receive their status updates
When an order is marked fulfilled, Shopify can send the customer a notification. People who bought a digital product expect to see their order complete, and the confirmation reduces 'where is my order' emails.
Fulfillment reports become meaningful
Average time to fulfill is only useful if orders are closed. Automated fulfillment gives you accurate figures for measuring how quickly real orders are handled. Average fulfillment time only means something if closed orders are really closed, instead of three hundred open digital ones.
Only orders meeting your rules are closed
Rules such as product type, tag or payment status limit which orders are touched. A wrongly closed physical order would be a serious problem, so the conditions keep it narrow.
Hours of clicking removed
Marking dozens of orders fulfilled by hand each day is repetitive and easy to forget. Handling it hourly means the admin is tidy without anyone remembering to do it. Clicking through dozens of gift card orders every evening is the sort of chore that gets forgotten.
How it works
What happens, step by step
Every hour, the automation looks for paid Shopify orders that haven't been fulfilled yet.
It checks each order against your rules, for example orders that only contain digital downloads.
Matching orders are marked as fulfilled in Shopify, without anyone touching them.
Before it runs live
- Connect Shopify
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
- Act only on the items that match your own rules, and skip the rest
- 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 Shopify steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, report_fetched
STORE = "your-store.myshopify.com"
def gql(query, variables=None):
resp = http.post(f"https://{STORE}/admin/api/2025-07/graphql.json",
headers={"X-Shopify-Access-Token": credentials.connection("shopify", "store")},
json={"query": query, "variables": variables or {}})
resp.raise_for_status()
return resp.json()["data"]
FIND = """{ orders(first: 50, query: "financial_status:paid fulfillment_status:unfulfilled") { nodes {
id name lineItems(first: 50) { nodes { product { tags } } }
fulfillmentOrders(first: 5) { nodes { id status } } } } }"""
FULFIL = """mutation($f: FulfillmentInput!) { fulfillmentCreate(fulfillment: $f) {
fulfillment { id } userErrors { message } } }"""
@on_trigger
def run(event):
orders = [o for o in gql(FIND)["orders"]["nodes"]
if o["lineItems"]["nodes"] and all("digital" in ((li["product"] or {}).get("tags") or [])
for li in o["lineItems"]["nodes"])]
report_fetched(len(orders))
if not orders:
return {"fulfilled": 0}
done = []
for o in orders:
open_fos = [{"fulfillmentOrderId": fo["id"]} for fo in o["fulfillmentOrders"]["nodes"] if fo["status"] == "OPEN"]
if open_fos:
gql(FULFIL, {"f": {"lineItemsByFulfillmentOrder": open_fos, "notifyCustomer": True}})
done.append(o["name"])
return {"fulfilled": done}FAQ
Common questions
What rules can decide which orders are fulfilled?
Does marking an order as fulfilled email the customer?
Does it need access to fulfillment orders in Shopify?
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 last week's orders as a CSV
Every Monday you get all of last week's orders in one file, with customer, total and status.
See how it worksTag orders when your delivery service updates
When your delivery service reports a status, the matching order gets a tag like delivered.
See how it worksGet a daily list of abandoned checkouts
Each evening you get today's abandoned checkouts with the customer email, cart value and recovery link, so you can follow up.
See how it worksKeep exploring
Set up “Mark digital orders as fulfilled automatically” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.