FlowRunner
PricingContact
Theme
Start Free

Run cold email and LinkedIn outreach through Emelia, covering multichannel campaigns, contact lists, and the built-in email and phone finder and verifier. Agents build a verified list and launch the sequence in one motion.

37 actions API key available
Emelia website ↗ Capability data verified 2026-08-02
A multichannel sequence reaches a task step and holds the contact there
Agent reads the waiting queue with Get Pending Manual Tasks, narrowed to that step
Agent pulls the contact's full record with Get Contact and the exchange so far with Get Campaign Activities
Agent rechecks deliverability with Verify Email and Get Verify Email Result before the next step is allowed to send
Agent presents the contact, the step they are held at and what the sequence will do next if the task clears
The rep decides whether this person advances, and the agent records the outcome with Set Manual Task Status

What This Integration Enables

Emelia is worth looking at closely for one reason that has nothing to do with volume. Its multichannel sequence step vocabulary includes a task step: a point where the sequence stops and waits for a person to do something before the contact is allowed to advance. The API exposes that queue directly, through Get Pending Manual Tasks and Set Manual Task Status. In other words, the vendor shipped a pause-for-a-human primitive as part of the sequence model, and FlowRunner can drive it. That is the same architectural bet FlowRunner makes about Orchestration as a Service, arriving from the other direction.

The rest is a complete outbound stack in one connector. Multichannel campaigns mix email and LinkedIn steps in a single sequence, with per-day caps for each channel, a timezone, active days and a sending window. Contact lists carry import provenance, deliverability state and arbitrary custom variables. The finder and verifier for both email and phone run as asynchronous jobs inside the same account, so building a list and checking it are not two tools and an export. A LinkedIn scrapping engine collects contacts from a search, Sales Navigator or a list URL, enriches them and hands them to a downstream step. FlowRunner agents wire all of that into one flow, and put a person at the point where the sequence itself already says a person belongs.

Without FlowRunner

Manual steps stall the queue Sequence tasks pile up in the app until someone remembers to work them
Verification is a separate motion Addresses are found in one tool, checked in another and imported by hand
Scraped lists go straight to send LinkedIn-sourced contacts are enrolled before anyone checks whether the addresses resolve

With FlowRunner

Manual steps become a work queue Pending tasks are pulled into a flow, enriched with context and cleared with a recorded decision
Find and verify in the same run The email finder and verifier run inside the sequence build, so an unverifiable contact never reaches a campaign
Scrape, enrich, then decide Harvested contacts are enriched and verified, and a person approves the cohort before it is enrolled

Use Case Scenarios

Source, enrich, verify, then enrol

An agent starts a LinkedIn scrapping job with Create Scrapper against a saved search, polls List Scrappers until the status leaves running, and calls Enrich Scrapper to append email addresses for the target country. It then pulls the harvested contacts with Download Scrapper Data, submits each address through Verify Email, and collects the verdicts with Get Verify Email Result. Only addresses that come back valid are written into a list with Add Contacts In Bulk. The cohort that reaches the campaign has been sourced, enriched and checked without a spreadsheet touching it, and the addresses that failed verification are reported rather than quietly enrolled.

Clearing the manual task queue with context attached

A sequence includes a task step before the highest-value follow-up, so a person reads the account before the message goes out. Left alone, that queue becomes the bottleneck. A flow polls Get Pending Manual Tasks, and for each waiting contact assembles a short brief: the stored record from Get Contact, the exchange to date from Get Campaign Activities filtered to that contact, and the matching CRM record from HubSpot. The rep gets one message per contact with everything needed to decide in a few seconds, and their answer is written back with Set Manual Task Status. The human step stays in the sequence and stops being the reason the sequence stalls.

A single missing address, filled on demand

A form submission arrives with a name, a company and no email. Rather than dropping the lead, the agent calls Find Email with the name and company, polls Get Find Email Result until the job leaves running, and reads the qualification the lookup returns. If the address comes back valid it is written with Add Contact, using Update If Exists so a duplicate merges rather than creating a second record, and the contact is enrolled with Add Contact To Campaign. If the lookup fails or returns an invalid address, the lead is routed to a person instead of being enrolled with a guess.

Human-in-Loop Highlight

Set Manual Task Status looks like a housekeeping call. It is actually the send decision. Emelia sequences can hold a contact at a task step, and marking that task completed is what releases the person to the next step, which in a cold sequence is an email or a LinkedIn message leaving under your domain and your name. The agent is well placed to prepare that decision and badly placed to make it. The reasons a task step exists in the first place, an account that changed hands or a deal already in flight, are exactly the reasons that appear in no field the API returns. So the flow gathers and stops: "Sofia Bran at Larkfield is held at step 4 of the Nordics sequence. Last touch was 11 days ago, no reply. Address re-verified as valid. Next step sends the case study email. Advance, or fail the task and stop the sequence for this contact?" A person answers, and the agent writes the outcome. The human-in-the-loop step is not something FlowRunner bolts onto Emelia here. It is the step Emelia already put in the sequence, finally staffed.

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

37 actions

Campaigns

8
  • List Campaigns Returns every multichannel campaign with its sending identities, schedule including daily email and LinkedIn caps, tracking flags, timezone, active days and sending window, plus its steps and status. Multichannel campaigns are the current generation and mix email and LinkedIn steps in one sequence.
  • Create Campaign Creates an empty multichannel campaign and returns its id. Only a name is required, so this is the programmatic half of a setup whose identities, schedule and steps are completed afterwards.
  • Get Campaign Retrieves one campaign in full, including the ordered sequence steps with their type, whether email, LinkedIn visit, connection, message, InMail, like, follow, condition, task, wait or API call, and the delays between them. Reading the step types is how a flow knows where the human gates are.
  • Get Campaign Activities Returns the activity log for a campaign: every visit, invitation, acceptance, message, InMail, reply, follow, like, open, click, bounce, unsubscribe and completed task, stamped with contact, step, version and timestamp. Filter by activity type, by contact, by sequence version or by free text.
  • Get Campaign Stats Returns aggregate performance for a campaign and, when detail is requested, a per-step breakdown, optionally restricted to a date range. Use this rather than counting activities when only headline numbers are needed.
  • Add Contact To Campaign Enrols a contact so it starts at the first sequence step. The contact is a flat map of field names to values, covering email, LinkedIn URL, name, company and any custom variables the sequence references.
  • Get Pending Manual Tasks Returns the manual tasks a campaign is currently waiting on: sequence steps that require a human action before the contact can advance, optionally narrowed to one step. This is the queue that turns into a work list.
  • Set Manual Task Status Marks a pending task completed or failed for a specific contact, releasing them to continue or stopping them there. The task id is the sequence step id returned by the pending task action.

Lists

5
  • List Lists Returns a page of contact lists with import source, whether CSV, LinkedIn, Sales Navigator, API, HubSpot, Pipedrive or another, plus status and counts of contacts, emails, phones and LinkedIn profiles. Supplying a full email or LinkedIn URL finds only the lists containing that person, which is a quick membership check.
  • Create List Creates an empty contact list and returns its id and name, ready for import and campaign attachment.
  • Get List Retrieves one list with its import source, status, timestamps and the counts of contacts, emails, phone numbers and LinkedIn profiles it holds.
  • Rename List Changes a list's display name. The id, its contacts and any campaign attachments are unaffected.
  • Delete List Permanently deletes a list and its membership. Campaigns already fed from it keep the contacts they enrolled, but the list itself cannot be recovered.

Contacts

6
  • List Contacts Returns a page of contacts with name, job title, primary and secondary email, phone and mobile, LinkedIn and Twitter URLs, location, seniority, department, bio and email verification state. Look a contact up exactly by email or LinkedIn URL, search free text, or sort by any field.
  • Get Contact Retrieves a single contact by lead id with the full stored record including identity, employment, location, enrichment fields and custom variables.
  • Add Contact Adds one contact to a list. Unrecognised keys become custom variables automatically. Duplicates are detected on email or LinkedIn URL, and by default nothing is written, though enabling Update If Exists merges the payload into the existing record instead.
  • Add Contacts In Bulk Imports several contacts in one call with the same flat structure and the same duplicate handling. This is the right action after a sourcing or verification step has produced a clean cohort.
  • Update Contact Applies a partial update. Only the fields present are written, and unrecognised keys are created as custom variables, so a flow can add personalization data without restating the record.
  • Delete Contact Removes a contact from a list permanently. Activity already recorded against them in campaigns is retained, but they will no longer be enrolled from this list.

Finder and Verifier

6
  • Find Email Queues an email lookup for one person from their name and company, optionally narrowed by company website and country. Returns a job id immediately, so poll for the result rather than expecting an address in the response.
  • Get Find Email Result Fetches the outcome of a queued email lookup, reporting the status and, once finished, the discovered address with a qualification of valid or invalid.
  • Find Phone Queues a phone number lookup from a LinkedIn profile URL and returns a job id immediately.
  • Get Find Phone Result Fetches the outcome of a queued phone lookup, reporting status and the discovered number once the job completes.
  • Verify Email Queues a deliverability check for one address and returns a job id. Run this before enrolling bought or scraped addresses, because sender reputation is the shared asset that a bad list spends.
  • Get Verify Email Result Fetches the deliverability verdict for a queued verification job once the check has finished.

LinkedIn Scrapping

8
  • List Scrappers Returns the scrapping jobs on the account with source URL, status covering running, enriching, paused, done, error or planified, total contacts collected, start date and estimated completion.
  • Create Scrapper Starts a new job against a search, Sales Navigator or list URL using one or more stored LinkedIn authentication configurations, optionally scheduled for later. Returns the generated job id.
  • Pause Scrapper Suspends a running job. Contacts already collected are kept and the job can be picked up again.
  • Resume Scrapper Restarts a paused job from where it stopped, keeping the contacts already collected.
  • Enrich Scrapper Runs enrichment across the contacts a job has collected, appending email addresses and other data for a given country. The job status moves to enriching while it works.
  • Download Scrapper Data Exports the collected contacts in one of the three column layouts Emelia supports, so a flow can hand the data to a downstream step without routing it through a list first.
  • Delete Scrapper Permanently removes a scrapping job and the contacts it holds. Export first with Download Scrapper Data if the data still matters, because this cannot be undone.
  • List LinkedIn Authentications Returns the stored LinkedIn authentication configurations. Each one represents a session a scrapper can run under, and their identifiers are what the create action expects.

Webhooks

4
  • Create Webhook Registers a webhook that posts to your URL when chosen events occur on a campaign. Passing the literal value ALL_CAMPAIGNS watches every campaign of that type. Valid events depend on the campaign type, with LinkedIn campaigns emitting visit, invite, accept, message and reply, email campaigns emitting reply, open, click, sent, bounce and unsubscribe, and multichannel campaigns emitting both families. Emelia does not publish the delivered payload schema, so read the raw request body.
  • List Webhooks Returns every registered webhook with the campaign type and campaign it watches, its target URL, subscribed events and status.
  • Test Webhook Sends a test delivery so a receiving endpoint can be verified without waiting for real campaign activity.
  • Delete Webhook Removes a subscription. The webhook is identified by the campaign it watches and its target URL rather than by id, so pass the same values used to create it.

Frequently Asked Questions

What can FlowRunner do with Emelia?

FlowRunner agents can run List Campaigns, Create Campaign, and Get Campaign in Emelia, plus 34 more actions.

Does connecting Emelia to FlowRunner require OAuth?

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

Can Emelia trigger a FlowRunner workflow automatically?

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

Start building with Emelia

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