Skip to main content
Route every inbound demo request to the right rep in seconds, matched on region and seniority. Then set the owner, a first-touch task, and a Slack alert. A lead is a new person who fills out your demo form. When that lead lands on your inbound list, this workflow starts on Record added to list. From there, it screens out noise with a Filter. It then branches on territory with a Switch, and branches again on seniority. Next, it picks a rep with Round robin. Finally, it writes the owner with Update record, books the first call with Create task, and direct-messages that rep over Slack. Speed-to-lead drops from hours to seconds, and the right rep owns every demo request.

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 (or region) attribute and a job_title attribute.
  • A territory single-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:
  1. Record added to list: a lead joins the inbound list.
  2. Filter: keep only real demo requests.
  3. Switch: branch on territory (EMEA, AMER, or APAC).
  4. Switch: branch on seniority within the territory.
  5. Round robin: pick a rep from the matched pool.
  6. Update record: set the owner and territory.
  7. Create task: schedule the first touch.
  8. 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

Switch on seniority

On each territory branch, add a nested Switch that reads the job title. Use a Filter instead if you only need a senior-or-standard split. Both blocks are free.
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

  1. In your form or test tool, submit a demo request for jane@acme.com, country Germany, title VP Marketing, source Demo request. The lead lands on the Demo requests list and fires the trigger.
  2. Open the run in run history and confirm the Filter passed, with all three conditions matched.
  3. Confirm the territory Switch took the EMEA branch and the seniority Switch took the Senior branch.
  4. 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.
  5. Verify the lead’s owner and territory are set, a task is due today, and a Slack direct message arrived.
  6. Submit a deliberately failing input: a lead with country empty and source Newsletter. 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 an icp_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.