Skip to content

The moment it happens

Add new orders to the customer's Zendesk tickets

When a customer places an order, agents see it on their Zendesk profile and as a note on their open tickets.

Runs
The moment it happens
Apps
Zendesk
AI
Not needed
Access
read+write

Send this to your assistant

Create a ClickRuntime automation: give me a link my store can send new orders to. Find the Zendesk user by email, create them if they don't exist, and add the order number, items and total as an internal note on their open tickets.

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

A customer writes in asking where their order is, and the agent opens the ticket to find only an email address. To answer, they switch to Shopify, search the address, copy the order number and status, and paste it back. Multiply by 60 tickets a day and half the handling time is lookups. Worse, if the customer has placed three orders, the agent has to ask which one they mean.

When a new order arrives from your store or billing system, the customer's Zendesk profile is found by email, or created if they are new. Order details such as order number, total and status are written to user fields, and an internal comment with the same information is added to any of that customer's open tickets.

Retail and subscription teams with high ticket volume see the biggest saving.

What you get out of it

  • The answer is already on the ticket

    Agents open a ticket and see order number, total and status without switching tools. First replies get shorter and include the real details the customer asked for. Replies reach customers sooner as a result.

  • Fewer back-and-forth messages

    When the ticket shows the latest order, nobody has to ask for an order ID. Each avoided question removes a full round trip, which can mean hours for customers in other time zones.

  • Profiles that reflect purchasing history

    User fields on the Zendesk profile hold the latest order information. Agents can recognize a repeat buyer or a first-time customer at a glance and adjust tone and priority. The note appears where the agent already looks.

  • No missed context on open tickets

    If a customer wrote in an hour before their order confirmation came through, the internal comment lands on that open ticket too. The agent sees the order that explains the question. Errors from retyping an order number are removed.

  • Less copy-paste, fewer typos

    Retyping an order number from one window into another invites errors that lead to refunds on the wrong order. Writing the data automatically removes that risk. Typos are removed at the source.

  • Easier refunds and replacements

    With the order total and status in front of them, agents can approve a refund or send a replacement without a second system open. Since the profile and the ticket both carry the data, even agents who open the customer from a different view see the order details in the same way.

How it works

What happens, step by step

  1. When a new order comes in, ClickRuntime looks up the customer in Zendesk by email address.

  2. It creates the customer if they are new, or updates their details if they already exist.

  3. It adds an internal note with the order number, items and total to each of their open tickets, so agents can see it without leaving Zendesk.

Before it runs live

  • Connect Zendesk
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Add new orders to the customer's Zendesk ticketsjust nowSucceeded
Zendesk · Internal noteOrder 1042: 2× Northwind Mug, 1× Gift card. Total $64.00

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

  • 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 Zendesk 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.
attach_order_info_to_customer_tickets_and_contacts.pyexample
from clickruntime import on_event, http, credentials

ZD = "https://yourcompany.zendesk.com/api/v2"
AGENT_EMAIL = "you@yourcompany.com"

def zd(method, path, **kw):
    r = http.request(method, f"{ZD}{path}", auth=(f"{AGENT_EMAIL}/token", credentials.secret("ZENDESK_API_TOKEN")), **kw)
    r.raise_for_status()
    return r.json() if r.content else None

@on_event
def handle(event):
    order = event.json or {}
    email = order["email"]
    user = zd("POST", "/users/create_or_update", json={"user": {"email": email, "name": order.get("name", email)}})["user"]
    items = ", ".join(f"{i['quantity']}× {i['name']}" for i in order.get("line_items", []))
    note = f"Order {order.get('order_number')}: {items}. Total {order.get('total')}"
    tickets = zd("GET", "/search.json", params={"query": f"type:ticket requester_id:{user['id']} status<solved"})["results"]
    for t in tickets:
        zd("PUT", f"/tickets/{t['id']}", json={"ticket": {"comment": {"body": note, "public": False}}})
    return {"user": user["id"], "tickets_noted": len(tickets)}

FAQ

Common questions

What if the customer has no Zendesk profile yet?
The profile is created from the email address on the order and the order fields are filled in. A later ticket from the same email will then find the existing user rather than create a duplicate.
Does it work if the ticket uses a different email than the order?
Matching is by email address, so a ticket from a different address will not be linked to the order. Many teams handle this by also matching on phone or name, which can be added if your customers often use several emails. Multiple matching profiles can be handled with extra rules.
Which order systems can send the event?
Anything that can call a webhook when an order is placed, including common shop platforms and billing tools. The event arrives at a trigger link and the automation runs as soon as it is received. Check that your platform can send a signed webhook when an order is created.
What permissions does it need?
read+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 for each event the app sends.
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 “Add new orders to the customer's Zendesk tickets” from your assistant

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