Prerequisites
- An Attio plan of Plus or above, running the Workflows engine (June 2026 and later).
- A connected Slack integration with a channel or direct message the workflow can post to.
- A People object whose inbound records carry a
country(orregion) attribute and ajob_titleattribute. - A
territorysingle-select attribute on People with the options EMEA, AMER, and APAC. - An inbound list, for example Demo requests, that new leads land on from your form or webhook.
- Two or more Attio users assigned to each territory-and-tier pool you plan to route to.
How it works
The trigger fires the moment a record joins your inbound list. That scopes each run to a genuinely new lead, not to every edit on a person. A Filter then drops records that are not real inbound demo requests. A condition that stops a run is free, so the Filter screens out noise before any write happens. Next, a Switch reads the country or region field and sends the run down an EMEA, AMER, or APAC branch. A second Switch on each path separates senior titles from the rest. Senior titles are vice president (VP), director, and head. Splitting on seniority means your strongest reps get the named-account leads. Finally, Round robin picks one rep from the matched pool. Round robin shares leads evenly across a list of reps, handing each new one to the next rep in turn. Three writes then finish the job. The blocks run in this order:- Record added to list: a lead joins the inbound list.
- Filter: keep only real demo requests.
- Switch: branch on territory (EMEA, AMER, or APAC).
- Switch: branch on seniority within the territory.
- Round robin: pick a rep from the matched pool.
- Update record: set the owner and territory.
- Create task: schedule the first touch.
- Slack: alert the assigned rep.
Build steps
1
Add the trigger
Create a new workflow and add Record added to list as the trigger. Point it at your inbound list. Do not use Record updated for this build. That trigger fires on every edit to a person, so it re-routes leads that already have an owner.
2
Filter to real inbound
Add a Filter so the workflow acts only on genuine demo requests. A condition that stops the run is free. Use it to screen out test entries, internal emails, and rows missing a territory before any write happens.
3
Switch on territory
Add a Switch that reads the country or region field and creates one branch per territory. Map each set of countries to a branch label.
4
5
Round robin within the pool
On each seniority branch, add a Round robin and list only the reps who own that territory and tier. Round robin is free and returns one user.
6
Update the record
Add an Update record that writes the owner and territory back to the lead. This is the first write, so it costs 1 credit.
7
Create the first-touch task
Add a Create task so the rep has a concrete next action. This costs 1 credit.
8
Slack the owner
Add the Slack block to alert the assigned rep. This costs 1 credit.
Variable mapping
Credit cost worked example
The trigger, both Switch blocks, the Filter, and Round robin are free logic blocks, so they never consume credits. Only the three writes cost. That is Update record (1) plus Create task (1) plus Slack (1), which equals 3 credits per qualified lead. At 400 inbound demo requests a month, that is 400 × 3 = 1,200 credits per month. A lead that the Filter in step 2 stops costs 0 credits, so your real spend tracks qualified inbound rather than raw form fills. Check that monthly figure against your plan allowance on Credits & pricing explained.Test plan
- In your form or test tool, submit a demo request for
jane@acme.com, countryGermany, titleVP Marketing, sourceDemo request. The lead lands on the Demo requests list and fires the trigger. - Open the run in run history and confirm the Filter passed, with all three conditions matched.
- Confirm the territory Switch took the EMEA branch and the seniority Switch took the Senior branch.
- Confirm Round robin returned one EMEA Senior rep, for example Priya Sharma. Confirm that the same name appears in the Update record, Create task, and Slack steps.
- Verify the lead’s
ownerandterritoryare set, a task is due today, and a Slack direct message arrived. - Submit a deliberately failing input: a lead with
countryempty and sourceNewsletter. The step 2 Filter stops the run, and run history shows it halted at the Filter with zero writes and zero credits.
Failure modes
Variations
Routing by ICP score instead of seniority
Replace the seniority Switch with one that reads anicp_score attribute. ICP stands for ideal customer profile, a score of how well a lead matches the kind of customer you want. Branch high scores to your senior pool and the rest to the standard pool. Everything downstream stays the same.
Emailing the owner instead of Slack
Swap the Slack block for a Send HTTP request to your email provider, or enroll the rep in a notification via Enroll in sequence. Both are 1-credit writes, so the per-lead cost is unchanged.See also
Source: Attio Help Center: Workflows and Attio Help Center: Assign records and tasks. Last reviewed against the Attio Help Center, June 2026.