FlowRunner
PricingContact
Theme
Start Free

Romulus

AI

Connect AI agents to Romulus, which qualifies and answers inbound leads across voice calls, WhatsApp, SMS, and web. Agents pick up the qualified lead and run the work that follows.

2 triggers 22 actions API key available
Romulus website ↗ Platform Documentation ↗ Capability data verified 2026-08-01
On Agent Call Completed fires when a Romulus voice agent finishes a qualification call
Agent pulls the AI summary, the turn-by-turn transcript, the sentiment score and the contact data the call carried
Agent compares what the summary claims was agreed against what the transcript actually contains
Agent writes the qualified lead into the CRM with the recording URL attached
Agent confirms the WhatsApp template that covers this commitment is approved and has every variable it needs
Agent drafts the follow-up message and posts it with the transcript excerpt sitting behind it
A sales lead approves before the message reaches the prospect's phone

What This Integration Enables

Romulus is not a dialer with a script attached. It runs AI voice agents that actually hold the conversation, inbound or outbound, and it reaches the same person over WhatsApp and SMS when voice is not the right channel. Each agent has its own prompt, language, timezone, voice and caller ID, and each completed call comes back with a recording URL, a full transcription, an AI summary, a sentiment score from 0 to 100 and the turn-by-turn agent transcript. That is a conversation product with an opinion about how conversations should go, and it does that part well enough that a workflow should not try to redo it.

Which is exactly the division of labour worth building around. Romulus owns the conversation. FlowRunner owns everything that has to happen because of it. The two triggers here are the seam: On Agent Call Completed fires when a call ends, and On Agent Action Completed fires the moment the agent does something specific mid-call, such as booking an appointment, forwarding the call or extracting a field. From there the work is ordinary and consequential, updating records, notifying owners, scheduling the next touch. Because a held decision does not stop the rest of the flow, a Flow conversation lets the sales lead ask the running workflow for the full transcript before deciding, without restarting anything. And human-in-the-loop sits where it belongs, on the message that reaches a real person.

Without FlowRunner

Conversations that end nowhere A call is qualified, the recording exists, and the next step waits for someone to listen to it
Rekeyed outcomes A rep retypes the summary into the CRM, and the sentiment and transcript stay behind in the call tool
Follow-up drift The message that lands hours later says something slightly different from what was agreed on the call

With FlowRunner

The call starts the workflow The completed call event carries the summary, transcript, sentiment and contact data into the next step
Written once, in place The lead record, the recording link and the outcome land together without a rekey
Follow-up that matches the call The message is drafted from the transcript and checked against it before it is sent

Use Case Scenarios

A completed call becomes a routed, enriched lead

The voice agent finishes an inbound qualification call. On Agent Call Completed delivers the summary, the transcript, the sentiment score and the contact data the call was started with. The agent creates or updates the record in HubSpot, attaches the recording URL, and routes by what the transcript supports rather than by the summary alone. Calls with a low sentiment score or a summary the transcript does not back up go to a human queue instead of into the assigned pipeline.

An in-call booking that has to be honoured elsewhere

On Agent Action Completed fires the instant the voice agent books an appointment during the conversation, carrying the action type, the call and agent IDs, the contact data and the action result. The flow writes the appointment into the owning rep's calendar and posts it to the team channel in Slack while the caller is still on the line. The commitment made on the call and the commitment in the calendar are the same commitment, made at the same moment.

Honouring an opt-out across everything queued

A contact asks not to be called again. Rather than cancelling one task and missing the rest, the agent calls Terminate Call Tasks By Phone Number, which stops every active call task queued for that number, and records the request against the contact. Where the opt-out applies to one campaign only, Terminate Campaign Call Tasks stops that campaign's tasks and leaves the contact's tasks in other campaigns alone. Retry configuration on Romulus tasks allows up to ten attempts with delays measured in days, so cancelling completely is the difference between honouring a request and appearing to ignore it for a week.

Human-in-Loop Highlight

The gate is the outbound message that states back what the caller agreed to, because that message is the artifact they will hold you to and there is no unsending it. Send WhatsApp Template Message and Send SMS both reach a phone in seconds. The risk is not that the agent is careless, it is that the AI summary of a call is a compression, and compressions lose qualifiers. A caller who said "probably the higher tier, if the March date works" can be summarised as agreeing to the higher tier. Send that back in an approved template and you have created a commitment nobody made. So when a follow-up would state a price, a date or a scope, the flow pauses and shows the sales lead both layers: "Draft to +34 600 000 000 using the approved booking template: confirms the Business tier starting 4 March. The summary says agreed. The transcript at turn 14 says 'probably, if March works.' Send, edit the template variables, or route to a rep to call back?" A person resolves the gap between the summary and the transcript, which is the one thing neither system can do for itself. The same review applies to Update Contact, which fully replaces a contact's record so any field left out of the request is cleared, and to Delete Contact, which removes the contact with all of its phones, emails and addresses permanently.

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

Agent Capabilities

22 actions

Account

1
  • Validate Authentication Checks that the configured API key is valid and returns the organization ID it belongs to. Used as a connection check before a longer sequence of operations, since a rejected key surfaces as an authorization failure on whatever call happens to run first.

Agents

1
  • List Agents Returns a paginated list of the AI voice agents configured in the organization, each with its name, first message, prompt, language, default timezone, direction, status, voice and outbound caller ID. Used to resolve the right agent before placing a call, and to audit which prompt an agent is actually running.

Calls

2
  • Initiate Outbound Call Places an outbound call immediately from a chosen agent to a phone number. Contact data supplied here is available to the agent during the conversation and is echoed back on the completed call event. Used for time-sensitive callbacks where waiting for a scheduled task is the wrong behaviour.
  • Search Calls Returns a paginated list of calls matching the supplied filters, each carrying direction, status, numbers, duration, voicemail flag, recording URL, full transcription, AI summary, sentiment score and turn-by-turn transcript. Used for reconciliation, review and quality sampling.

Call Tasks

4
  • List Agent Call Tasks Returns a paginated list of call tasks queued for an agent, with the contact number and data, attempts made, retry and availability configuration, status and next scheduled attempt. Used to see what outreach is actually pending before adding more.
  • Start Agent Call Task Schedules a call task for an agent, starting in pending status. Retry attempts each carry their own delay, up to ten attempts, and availability days restrict calling to specific weekdays and time ranges. Used instead of an immediate call whenever no-answer handling or calling hours matter.
  • Terminate Call Task Terminates a single active call task by ID, cancelling any attempts still scheduled for it. Used to stop one queued conversation without touching the rest.
  • Terminate Call Tasks By Phone Number Terminates every active call task queued for a phone number. Used to stop all pending outreach to a contact at once, which is the correct handling for an opt-out.

Campaigns

2
  • Create Campaign Call Tasks Adds call tasks to an existing campaign, one per recipient. Each recipient is validated on import and the response reports status and errors per row, so valid rows queue even when others fail. Used to load a vetted list into a campaign from an upstream step.
  • Terminate Campaign Call Tasks Terminates every call task queued for a phone number within one campaign, leaving that contact's tasks in other campaigns untouched. Used for a campaign-scoped opt-out.

Contacts

5
  • Create Contact Creates a contact with any number of email addresses, phone numbers and postal addresses, plus job title, company, website and tags. The source is recorded automatically as API.
  • Get Contact Retrieves a single contact by ID with its emails, phones, addresses, job title, company, website, tags, source and CRM linkage. Used to read the current record before any update.
  • Update Contact Fully replaces a contact's data. Fields left out of the request are cleared, so the complete record must be sent including any emails, phones and addresses that should survive. Used with a preceding read, never on its own.
  • Delete Contact Permanently deletes a contact together with all of its phones, emails and addresses. Used for erasure requests, and appropriate to gate.
  • Search Contacts Searches contacts with optional filters combined using AND logic. Names, phone, email, job title, company and website match partially, and phone matching runs right to left so a national number still matches an international record. Used for deduplication before creating anything.

WhatsApp

2
  • List WhatsApp Bots Returns the WhatsApp bots configured on the account along with the message templates registered to each, including every template's name, category, language, approval status and components. Used to find the bot and template IDs a send requires, and to confirm a template is approved before drafting against it.
  • Send WhatsApp Template Message Sends an approved WhatsApp template message to a recipient, with one components entry per template component that carries variables. Used for confirmations and follow-ups, and gated whenever the message states something the recipient could reasonably treat as binding.

SMS

3
  • List SMS Senders Returns a paginated list of the SMS senders configured for the organization, showing inbound and outbound enablement, whether each is an alphanumeric sender ID or a long number, and when it was last used. Used to pick a sender that is actually enabled for outbound traffic.
  • Search SMS Messages Returns a paginated list of SMS messages matching the supplied filters, with partial case-insensitive matching on message text. Used to reconstruct a message history for a contact during review.
  • Send SMS Sends an SMS from one of the organization's configured senders to a recipient phone number. Used where WhatsApp is not available to the recipient, under the same approval as any other message that reaches a phone.

Webhooks

2
  • List Webhook Subscriptions Returns a paginated list of the webhook subscriptions on the account, including those created by FlowRunner triggers, each with its event, status, target URL, retry settings and filtering. Used to audit which events are wired up.
  • Get Webhook Subscription Retrieves a single webhook subscription by ID with its event, status, target URL, entity scope, retry settings and filtering. Used to verify a specific subscription while debugging a trigger that is not firing.

Triggers

2 triggers

Event Triggers

2
  • On Agent Call Completed Fires when an AI agent call finishes. The event carries the call and agent IDs, the final status, the direction, the originating and destination numbers, and the duration. It also carries the recording URL, the full transcription, the AI summary, a sentiment score from 0 to 100 and the turn-by-turn agent transcript. Finally it carries the contact data the call was started with, any action results the agent produced, and the call task reference when the call came from a task. Used as the entry point for every workflow that has to happen because a conversation ended.
  • On Agent Action Completed Fires when an AI agent completes a configured action during a call, such as booking an appointment, forwarding the call, extracting data or sending a WhatsApp message. The event carries the action ID and type, the agent and call IDs, the contact data and the action result, and can be filtered to a single action type. Used to act on a mid-call commitment while the caller is still on the line.

Frequently Asked Questions

What can FlowRunner do with Romulus?

FlowRunner agents can run Validate Authentication, List Agents, and Initiate Outbound Call in Romulus, plus 19 more actions.

Does connecting Romulus to FlowRunner require OAuth?

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

Can Romulus trigger a FlowRunner workflow automatically?

Yes. Romulus supports 2 triggers that can start a FlowRunner workflow automatically.

Start building with Romulus

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