Prerequisites
- An Attio Plus plan or higher. Workflows is available from Plus up.
- The Slack integration connected to your workspace, with the workflow allowed to post to your target channel.
- A People object with an
ownerattribute of type User. Swap in Companies if you route accounts instead of contacts. - A defined pool of reps as workspace members. These are the people who should receive routed leads.
- A
lead_statusattribute (or your equivalent) you can filter on to tell qualified leads from raw signups. - Workspace admin access to publish a workflow, plus the Slack channel for the alert.
How it works
The trigger fires once for each new lead. A free Filter drops anything that is not qualified or that already has an owner. That way the rotation only advances on real work. Round robin returns the next rep from your pool and remembers its position across runs. Update record writes that rep onto the lead’sowner attribute. Create task gives the rep a dated first touch, and a Slack message tells them to go work it. The three logic blocks at the front are free. The only paid steps are the two record writes and the Slack send.
The blocks run in this order:
- Record created on People fires the run. Free.
- Filter keeps only qualified, unowned leads. Free.
- Round robin picks the next rep in the rotation. Free.
- Update record sets
ownerto that rep. 1 credit. - Create task schedules the first touch for 24 hours out. 1 credit.
- Slack third-party block notifies the assigned rep. 1 credit.
Build steps
1
Add the trigger
Open a new workflow, click the Add trigger button, and choose Record created. Set the object to People. If you instead stage inbound on a list, choose Record added to list and select that list. A list entry is the row that links a record to a list. The rest of the build is identical. The one difference is that you read fields from the list entry’s parent record.
2
Filter to qualified, unowned leads
Click the Add block button, choose Filter, and add two conditions joined with And. This is a free condition. When it does not pass, the run stops and costs nothing. Stopping here also keeps the rotation fair. Round robin only advances on leads you actually route.
3
Pick the next rep
Add a Round robin block. Add each rep in the pool as an entry. The block hands out the next member in sequence and remembers its place between runs, so assignment stays even over time.
4
Set the owner
Add an Update record block. Target the lead from the trigger and write the rep from Round robin into
owner. This is the one write that makes ownership real, so it costs 1 credit.5
Create the first-touch task
Add a Create task block. Assign it to the same rep and date it 24 hours out. That way first touch is enforced rather than hoped for.
6
Notify the rep in Slack
Add the Slack block, choose Send message, and post to your inbound channel. Keep the message short, and include the rep and a link to the record. Click the Publish button to go live.
Variable mapping
Credit cost worked example
The trigger, Filter, and Round robin are free logic blocks. So a run that is filtered out costs 0 credits. A lead that routes costs 3 credits: 1 for Update record, 1 for Create task, and 1 for the Slack message. At 400 new leads a month with a 50% qualification rate, 200 leads route:Test plan
- Create a test person with
lead_statusset toQualifiedandownerempty. Use a record you can delete, such as jane@acme.com. - Open Run history and find the run the create triggered.
- Confirm the Filter shows Passed.
- Confirm Round robin output names a real pool member, such as Priya Sharma.
- Confirm Update record set
ownerto that member on the record. - Confirm a first-touch task exists, assigned to that member, due about 24 hours out.
- Confirm the Slack message landed in
#inbound-leads. - Now fail it on purpose. Create a person with
lead_statusset toUnqualified. The run should stop at the Filter with Did not pass and consume 0 credits, and Round robin must not advance its cursor.
Failure modes
Variations
Route by territory or segment first
Add a Switch on aregion or segment attribute before Round robin. A Switch sends each lead down a different branch based on its value. Keep a separate pool per branch. EMEA (Europe, Middle East, and Africa) leads rotate through the EMEA reps. SMB (small and medium business) leads rotate through the SMB reps. The writes after Round robin are unchanged. For a full territory build, see Inbound routing by territory and seniority.
Weighted pools
If one rep should carry more volume, list them more than once in the pool. You can also split into tiers. Use a Filter to send one slice, such as enterprise leads, to a smaller senior pool. Round robin stays free, so only the writes after it cost credits.Enroll routed leads into a sequence
Replace or follow the Create task step with Enroll in sequence to start automated outreach the moment a lead is assigned. The owner you just set on the record carries through as the sequence sender.See also
- Inbound routing by territory and seniority
- Enroll in sequence
- Records vs list entries
- Round robin
- Assign records and tasks in Attio