Skip to content

The moment it happens

Track Copper opportunity status changes

I see when a deal moves between Open, Won, Lost or Abandoned, with the old and new status.

Runs
The moment it happens
Apps
Copper
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: when a Copper opportunity's status changes, post the opportunity name, owner, old status and new status to #sales-leads in Slack.

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

Deals rarely die loudly. A prospect goes quiet, a rep marks the Copper opportunity as Lost or Abandoned, and nobody else learns that the forecast just dropped. Revenue reviews then include deals that are already gone, and the team misses its chance to ask why the deal failed while the details are fresh.

When Copper reports an opportunity update, this compares its status with the value stored earlier and posts to Slack only when the status has actually changed to lost or abandoned. Ordinary edits to other fields are ignored.

Sales leaders and revenue operations teams use it to keep forecasts honest and learn from lost deals. Because the status is compared with the value stored earlier, an ordinary edit to an amount or a close date is ignored, and the channel only hears about real losses.

What you get out of it

  • Keep forecasts accurate

    A lost deal removed from the forecast the same day means leadership plans on real numbers. Hidden losses lead to optimistic projections that are corrected painfully later. A lost deal taken out of the forecast the same day means leaders plan on real numbers and not optimistic ones.

  • Learn why deals are lost while it is fresh

    A prompt message lets a manager ask the rep about the reason that same day. Honest answers are far more useful than recollections weeks afterwards. A prompt message lets a manager ask the rep about the reason that same day, and honest answers fade quickly.

  • Rescue deals marked lost too early

    Sometimes a lost status is premature. Seeing it in Slack gives a manager a chance to step in with a call before the prospect is gone. Sometimes a lost status is premature, and a manager who sees it in Slack can step in with a call before the prospect is gone.

  • Avoid wasting effort on dead deals

    Other team members stop preparing for a deal that is no longer live. Their time goes to opportunities that can still close. Other team members stop preparing for a deal that is dead, and their time goes to opportunities that can still close.

  • Build a record of lost opportunities

    The channel history becomes a dated list of lost deals. It helps analyse patterns by product, rep or competitor. The channel history becomes a dated list of lost deals, which helps analyze patterns by product, rep or competitor.

How it works

What happens, step by step

  1. Each time an opportunity is updated in Copper, Copper tells ClickRuntime straight away.

  2. It compares the status with the one it saved last time, so other edits are ignored.

  3. When the status has changed, a message goes to #sales-leads showing the deal, its owner and the old and new status, like "Open → Lost".

Before it runs live

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

What you get

RunsThe moment it happens
Track Copper opportunity status changesjust nowSucceeded
Slack · #sales-leads*Northwind expansion* (Morgan): Open → Lost

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 Copper 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.
opportunity_status_change_alert.pyexample
from clickruntime import on_event, credentials, http, notify

API = "https://api.copper.com/developer_api/v1"

@on_event
def handle(event):
    body = event.json or {}
    change = body.get("updated_attributes", {}).get("status")
    if body.get("type") != "opportunity" or not change:
        return {"skipped": "no status change"}
    old, new = change
    headers = {"X-PW-AccessToken": credentials.secret("COPPER_API_KEY"), "X-PW-Application": "developer_api",
               "X-PW-UserEmail": "admin@acme.example", "Content-Type": "application/json"}
    for opp_id in body.get("ids", []):
        opp = http.get(f"{API}/opportunities/{opp_id}", headers=headers).json()
        owner = http.get(f"{API}/users/{opp['assignee_id']}", headers=headers).json()["name"] if opp.get("assignee_id") else "-"
        notify.slack(f"*{opp['name']}* ({owner}): {old} → {new}", channel="#sales-leads")
    return {"ids": body.get("ids"), "status": new}

FAQ

Common questions

Why does it compare with a stored value?
Copper sends an event for any update to an opportunity. Comparing the status with the previously stored one means you are only told when the status itself changes, and not for every edit. Copper sends an event for every update to an opportunity, so comparing with the stored status is what limits posts to real changes.
Which statuses does it alert on?
Lost and Abandoned, as described. If you want to hear about other changes, such as moving to Won or Open, tell your AI assistant and check the new rule before it is used. Won, Open and other transitions can be added to the rule, and the final say is yours.
Does it post who changed the status?
The message includes the information Copper sends with the event. If the owner or modifying user is available in that data, it can be shown, and you can request that addition. The message carries what Copper sends with the event, and the owner or modifying user can be added when that data is present.
What permissions does it need?
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 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 “Track Copper opportunity status changes” from your assistant

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