Library / Lead routing / lead-routing-001

Round-robin lead assignment by territory

Lead routing Sales Hub Professional Contact Intermediate ~45 min to build

Outcome. New leads are split into territory groups and each group is assigned to the right owner pool in round-robin order, with no manual triage.

Workflow mapEnrollment, branches and actions at a glance
flowchart TD
    A[Contact created / Territory set] --> B{Territory value?}
    B -->|north-america| C[Rotate to NA pool]
    B -->|emea| D[Rotate to EMEA pool]
    B -->|apac| E[Rotate to APAC pool]
    B -->|blank / unknown| F[Notify sales ops + add to Needs manual routing list]
    C --> G[Set routed date, notify owner, create call task]
    D --> G
    E --> G

When to use it / when not to

Prerequisites

Enrollment

Steps

  1. If/then branch: Territory is north-america
    • Rotate record to owner: pool = NA rep list (round-robin, evenly distributed)
    • Set property value: Lead routed date = current date
    • Send internal email notification to: record owner, subject "New lead assigned: {{contact.firstname}} {{contact.lastname}}"
    • Create task: type "Call", title "First contact - {{contact.firstname}}", due in 1 business day, assigned to record owner
  2. If/then branch: Territory is emea
    • Same 4 actions as above, pool = EMEA rep list
  3. If/then branch: Territory is apac
    • Same 4 actions as above, pool = APAC rep list
  4. Else branch (territory unknown or blank)
    • Send internal email notification to sales ops distribution owner: "Lead with no territory value: {{contact.hs_object_id}}"
    • Add to static list: "Needs manual routing"

Known pitfalls

Test plan

  1. Create 3 test contacts, one per territory value, using the actual form or by manually setting the property.
  2. Open workflow history (Automation > Workflows > this workflow > History tab) and confirm each contact enrolled within a minute.
  3. Check each contact's record timeline for the "Owner changed" event and confirm it matches the expected pool.
  4. Confirm the internal email notification arrived in the assigned owner's inbox.
  5. Confirm the call task appears in the owner's task queue with the correct due date.

Variants

Build spec

trigger:
  type: event-based
  event: contact_created_or_property_changed
  property: territory
  criteria:
    - territory: is_known
    - lifecycle_stage: not_equal customer
  reenrollment: false
  suppression_list: "Do not auto-route - named accounts"
branches:
  - condition: territory == "north-america"
    actions:
      - type: rotate_record_to_owner
        pool: "NA rep rotation list"
      - type: set_property_value
        property: lead_routed_date
        value: current_date
      - type: send_internal_email_notification
        to: record_owner
        subject: "New lead assigned: {{contact.firstname}} {{contact.lastname}}"
      - type: create_task
        task_type: call
        title: "First contact - {{contact.firstname}}"
        due: +1_business_day
        assigned_to: record_owner
  - condition: territory == "emea"
    actions: [same_as_above, pool: "EMEA rep rotation list"]
  - condition: territory == "apac"
    actions: [same_as_above, pool: "APAC rep rotation list"]
  - condition: else
    actions:
      - type: send_internal_email_notification
        to: sales_ops_owner
        subject: "Lead with no territory value: {{contact.hs_object_id}}"
      - type: add_to_static_list
        list: "Needs manual routing"
This spec is one of the five free ones, complete as shown. Download all 5 free specs as PDF, Markdown and properties JSON. Paid packs add the same files for every spec in the pack, plus the custom coded actions.
Everything add-on Install this workflow in my portal Two clicks: authorise your portal, confirm. Properties created, workflow delivered switched off, ready to review. Coming to Everything and Pro buyers first.