FlowRunner
PricingContact
Theme
Start Free

EnforcedFlow

Productivity

Route work to the right person with EnforcedFlow's round-robin engine, picking the next available agent from a group while honoring availability rules. Agents assign ownership without a manager arbitrating every handoff.

6 actions API key available
An inbound support conversation arrives and needs an owner
Agent reads the message body, the customer's plan and the language it was written in
Agent calls Get Group Fields to confirm which routing criteria the support group accepts
Agent calls Get Next Agent with language and product area as criteria
Agent confirms agent_found came back true before assigning anything
Agent assigns the conversation in the helpdesk and posts the handoff into the team channel
When no agent satisfies the criteria, the agent stops and asks the duty manager who should take it instead of falling back to a default inbox

What This Integration Enables

Most automation stops one question short. It knows what to do and it does not know who should do it, so the work lands in a shared queue and a person spends their morning deciding ownership by hand. EnforcedFlow is built for that gap specifically: an advanced round-robin engine that picks the next agent from a group while honoring skill and language filters, per-agent weighting and timezone-based business hours. FlowRunner agents call it as the assignment step in a larger flow, so ownership gets decided at the same moment the work gets created rather than in a triage meeting afterwards.

Two of the field types are worth understanding before you design a group. Multi Select fields match an agent's configured values by exact string, which is what you want for a department or a product line. AI Select fields classify free text with a language model against the configured options, which means a raw customer message can be routed on its content without any parsing step in front of it. Weight and Timezone fields take no input at all and are applied automatically, so an out-of-hours agent is skipped without the flow having to know anyone's schedule. Any field the flow omits defaults to matching all agents, which makes broad routing easy and makes an accidentally omitted field quietly wide. Read the group's configuration with Get Group Fields before you write the criteria object.

Without FlowRunner

A counter in a spreadsheet Round-robin keeps assigning to people who are on leave or off shift
Skills matched by memory A Spanish-language ticket lands with whoever is next, not with whoever reads Spanish
Unroutable work disappears Anything that does not match a rule ends up in one overloaded default inbox

With FlowRunner

Availability honored Timezone and weighting rules skip agents who are out of hours before selection happens
Criteria matched explicitly Language, department and product area are supplied as routing criteria on every call
Unroutable work escalates A failed match becomes a question for a manager rather than a silent redirect

Use Case Scenarios

Inbound conversations routed on their content

A support conversation arrives with no tags and no form fields, just a paragraph of customer prose. Rather than run a classification step, hold the result and then look up an owner, the agent passes the message text straight into an AI Select routing field and lets EnforcedFlow classify and select in one call. It gets back a named person with their metadata, including the Slack user ID stored against them, and assigns the conversation in Zendesk while posting the handoff into that person's Slack DM. The customer's first reply comes from someone who can actually answer.

Leads distributed inside working hours

A form submission creates a lead. The agent calls Get Next Agent against the sales group with territory and product interest as criteria, and the group's timezone rules exclude reps whose working day has ended. The selected rep is written onto the opportunity in Salesforce and the lead detail is emailed to them. Weighted round-robin means the two senior reps carrying larger quotas receive proportionally more, without anyone maintaining a rota. Nothing sits overnight waiting for a region to wake up before it is even owned.

A roster that stays true to the org chart

A scheduled flow reads the current support and sales headcount from BambooHR and calls Update Or Create Agent for each person, filtering on their email address so an existing record is updated and a new hire is inserted. Leavers are flipped to inactive in the same pass. Because the metadata carries the email and Slack ID that downstream steps need, the roster in EnforcedFlow and the roster in the HR system stop diverging. This is the maintenance job that decides whether routing rules still mean anything in six months.

Human-in-Loop Highlight

The consequential moment here is not a selection. It is a non-selection. Get Next Agent reports agent_found as false when nobody in the group satisfies the criteria, and Email Next Agent, called on its own, falls back to the account owner when no agent matches and returns an acknowledgement while selection and delivery happen in the background. Read those two behaviors together and you have the failure that quietly ruins a routing system: an escalating pile of unmatched work landing on one person's inbox, with every call returning success. Nothing errors, so nothing gets fixed.

FlowRunner treats a false agent_found as a stop, not a fallback. The agent does not retry with looser criteria and it does not hand the item to Email Next Agent to be absorbed. It pauses the run and messages the duty manager in Slack: "No active agent in the EMEA support group matches language: Portuguese with product: billing. Four conversations are waiting. Assign to the global group, assign to a named person, or hold until the Lisbon shift starts at 09:00?" The manager makes the call, the flow resumes with their answer, and the gap gets seen while it is still four conversations. Deciding who does the work is a real decision, and a routing engine returning nothing is exactly the point at which a person should be told rather than routed around.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via Slack
Human decides
Agent resumes with decision

Agent Capabilities

6 actions

Groups

2
  • List Groups Retrieves every advanced round-robin group the connected Provider Key can reach, with a summary of each group's routing fields and whether those fields expect input at selection time. Used to discover the group identifier that Get Next Agent needs, and to confirm which criteria a group accepts before a flow starts routing work to people.
  • Get Group Fields Retrieves the full routing field configuration for one group, including each field's evaluator type, display label and available options. Used as the setup step before writing a criteria object, because Multi Select fields match by exact string, AI Select fields classify free text, and Weight and Timezone fields take no input at all.

Routing

2
  • Get Next Agent Selects the next person from a round-robin group and returns their identifier, name and metadata, so a flow can assign a review, approval or ticket to a specific human. Used as the ownership step in any workflow that creates work someone has to pick up. Criteria are supplied keyed by the group's field names, omitted fields match all agents, and weighting and timezone rules are applied automatically so out-of-hours agents are skipped. Branch on agent_found rather than assuming a person came back.
  • Email Next Agent Selects the next available agent in a group and emails them the supplied content, using a language model to extract routing criteria from that same content. Used when the delivery is the assignment, for example sending a generated summary straight to whoever is next in rotation. The endpoint returns immediately with an acknowledgement while selection and delivery happen in the background, so treat success as queued rather than delivered, and note that an unmatched request falls back to the account owner.

Agents

2
  • List Agents Retrieves every agent in a group with their identifier, display name, custom metadata such as email or Slack user ID, active flag and routing field values, optionally restricted to active or inactive only. Used to audit who is currently eligible to receive work, and to look up an agent ID before an update.
  • Update Or Create Agent Creates a new agent in a group, or updates an existing one when the filter matches. Used to keep the roster in step with an HR or directory system on a schedule. Filtering by ID takes priority, otherwise name and active combine with AND logic and metadata filters match on JSON containment, which makes filtering by email the practical way to sync. An empty filter always creates a new agent, so build the filter deliberately.

Frequently Asked Questions

What can FlowRunner do with EnforcedFlow?

FlowRunner agents can run List Groups, Get Group Fields, and Get Next Agent in EnforcedFlow, plus 3 more actions.

Does connecting EnforcedFlow to FlowRunner require OAuth?

No. EnforcedFlow connects to FlowRunner with an API key, no OAuth flow required.

Can EnforcedFlow trigger a FlowRunner workflow automatically?

EnforcedFlow doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with EnforcedFlow

$100 in credits. No card required. Connect in minutes.