Skip to main content
Post a Slack alert to your revenue team the moment a deal changes stage, without firing on every minor CRM edit. A stage is the column a deal sits in on your pipeline, such as Qualified or Won. This recipe watches the stage attribute on your Deals object with the Attribute value changed trigger. It can optionally change the message per stage with Switch. It then posts the deal name, value, owner, and Attio link to #revenue with the Slack block. Sales leaders see momentum the moment it happens, not at the next pipeline review.

Prerequisites

  • A Plus plan or above, which includes the Slack integration and the new Workflows engine.
  • The Slack integration connected to your workspace. The user who connected it must be a member of the target channel #revenue.
  • A Deals object with a single-select Stage attribute. A single-select attribute is one that holds exactly one value from a fixed list. Its slug, the short internal name you reference in the workflow, is stage. The stages you announce must already be defined, for example Qualified, Proposal, and Won.
  • An Owner attribute on Deals (slug owner) and an Amount or Deal value attribute (slug value). Both must be filled in on the deals you expect to announce.
  • No API key is required. The Slack block signs in through the connected integration.

How it works

The Attribute value changed trigger fires only when the stage attribute changes. Edits to any other field never reach the Slack step. An optional Switch block reads the new stage value and sends the run down a different message branch for each stage. Skip the Switch when one message format covers every stage you announce. The Slack block then posts a formatted message into #revenue. It pulls the deal name, value, owner, and Attio link from the record that triggered the run. The Slack post is the only block that writes to an outside service. That makes it the only block that costs a credit. The run executes in this order:
  1. Attribute value changed fires on Deals → Stage.
  2. Switch branches by the new stage value. This step is optional and free.
  3. Slack posts the alert to #revenue for 1 credit.

Build steps

1

Add the Attribute value changed trigger

In a new workflow, click the Add trigger button and choose Attribute value changed. Set the object to Deals and the attribute to Stage.Do not reach for an unscoped Record updated trigger here. An unscoped trigger fires on every field edit. It would even post to Slack when someone fixes a typo in a company name. Scoping the trigger to the Stage attribute is what keeps the channel useful.
2

Branch by stage with Switch

When different stages deserve different messages, add a Switch block. Set the input to the trigger’s new Stage value, then add one branch per stage you announce.Leave the default branch empty. Unlisted stages such as Discovery then stop the run silently, and a stopped run is free.Skip this step when one message works for every stage. In that case, wire the trigger straight to Slack instead.
3

Post the alert to Slack

Add the Slack block and choose Post message to channel. Select the connected workspace and set the channel to #revenue. Compose the message with variables from the trigger. Use Slack markdown so the deal name and stage stand out.

Variable mapping

A variable is a placeholder that the run fills in with a real value. Each one here resolves from the record that triggered the run. Map them with the syntax described in Variables & data passing.

Credit cost worked example

The trigger is free. The optional Switch is a free logic block. Only the Slack post costs a credit, and only when the run reaches it. Suppose 120 deals move into an announced stage in a month. That is 120 runs at 1 credit each, or 120 credits. Runs that hit the empty Switch default stop before Slack and cost nothing. Deals cycling through Discovery therefore add no cost. Compare 120 credits against your plan’s monthly allowance on Credits & pricing explained to confirm you have headroom. You can add the optional Summarize record upgrade from the variations. That block’s cost is variable and based on tokens rather than a flat credit. To estimate its monthly total, sample about 10 representative deals and run them through. Then read the per-run cost in the run viewer.

Test plan

  1. Open a real deal such as Acme renewal and change its Stage from Qualified to Proposal.
  2. Open the workflow’s run history and confirm a new run appears, triggered by the stage change.
  3. Check the Attribute value changed trigger output. new_value reads Proposal, and the record is Acme renewal.
  4. If you built the Switch, confirm the run took the Proposal branch and not the default.
  5. Check the Slack block output for a 200 status and a message timestamp. Then open #revenue and confirm the post shows the deal name, value, owner, and a working Attio link.
  6. Fire a deliberately failing input: change a deal’s Stage to Discovery, an unlisted value. Confirm the run stops at the Switch default with no Slack post and no credit consumed.

Failure modes

Variations

Route each stage to its own channel

Replace the single Slack block with one Slack block per Switch branch. Send Proposal to #deals-active, Won to #wins, and so on. Each branch’s Slack post still costs 1 credit. Only one branch runs per stage change, so the per-run cost is unchanged.

Announce only above an amount threshold

Add a free If block before Slack that continues only when Deal value is greater than 25000. Small deals stop the run for free, so the channel stays focused on material movement.

Add a one-line summary of why it moved

Insert a Summarize record block before Slack. It generates a short narrative from the deal’s recent notes, which you then add as a fourth message line. Gate it behind a free Filter so the model runs only on deals reaching Proposal or Won. This block’s cost is variable and based on tokens, so do not run it on every stage change.

Create a task instead of posting

Swap the Slack block for Create task to assign a follow-up to the deal owner when a deal reaches Proposal. The task write also costs 1 credit and keeps the alert inside Attio.

See also

Source: Attio Help Center, Build a workflow that sends Slack messages. Last reviewed against the Attio Help Center, June 2026.