Prerequisites: you understand what a workflow is and how a trigger starts one. If that is new, read What are Attio Workflows? first.By the end you can: build, publish, and debug a live workflow that posts a Slack alert every time a deal reaches a chosen stage.
What you build
The finished workflow follows the shape that most go-to-market (GTM) automation shares. A trigger fires, a filter narrows it, and an action runs. Here the Attribute value changed trigger watches the deal stage. A Filter block keeps only the stage you care about. The Slack Post message to channel block sends the alert. A few facts orient you before you start:- Workflows live under Automations → Workflows in the left sidebar.
- You build in a draft. Nothing runs until you publish.
- Workflows have no write access to objects by default. A read-only Slack alert needs none. But bookmark Permissions & workflow access for the first workflow you build that changes data.
Build the workflow
1
Create and name the workflow
Open Automations → Workflows and click the Create workflow button. Click the Untitled Workflow name in the top-left and rename it to something a colleague would recognize, such as
Deal stage → Slack alert. Add a one-line description while you are there. Future-you will be grateful.2
Add the trigger
Press
B (or click the Add block button) and choose Attribute value changed. Configure it with these two fields.Why this trigger and not Record updated? Because Record updated does not fire when an attribute is first set during record creation. A deal created straight into “Won” would silently skip your workflow. Attribute value changed catches both the creation-time value and every later change. That distinction is the single most common trigger mistake. Choosing the right trigger covers the full decision.
3
Filter to the stages you care about
You almost never want an alert for every stage change, so narrow the run with a filter. Add a Filter block after the trigger, then add one condition.
A Filter block silently stops the run when its condition is not met, with no error and no alert. If you want a different message for each stage instead of stopping, use a Switch block in this position.
4
Post the Slack message
Add the Slack Post message to channel block, available once the Slack app is connected. Pick your channel, such as Each
#revenue. Write the message and click the {x} use variable button to inject live data.Message body
{…} token is a variable pulled from the trigger’s outputs. Passing an earlier block’s output into a later block’s input is data passing, the mechanism every multi-step workflow relies on. The new engine renders Slack messages in standard Markdown rather than Slack’s own markup, which is a change from legacy.5
Publish and test
Click the Publish workflow button. Attio highlights any misconfigured block in red. Fix each one and publish again. Then trigger the workflow for real by moving a test deal, such as
Acme renewal, into the target stage. Open the Runs tab to confirm it worked. You see the run, the green-arrow path it took, and every block’s inputs and outputs. The run viewer is where you will spend your time when a workflow misbehaves.What it costs
The trigger is free, the filter is free, and the Slack post costs 1 credit. So each alert costs 1 credit in total. The arithmetic stays trivial here, but it matters far more once you add loops or AI blocks. Learn to read it now. Credits & pricing explained shows how every block is priced.Where this goes next
The trigger → filter → act shape you just built is the skeleton of most GTM automation. You change one block at a time to reach a new outcome:- Swap the action for Enroll in sequence to drive stage-based outbound, as in Enroll and auto-exit sequences.
- Swap the trigger for Webhook received to capture product signals, as in Webhook lead intake with safe upsert.
- Add a Web agent before the Slack post to attach research to every alert, as in AI ICP-fit research and routing.
See also
- Slack deal alerts on stage change
- Choosing the right trigger
- Variables & data passing
- Runs, debugging & publishing
- Credits & pricing explained