Reference · Tools

Emelia

Manage cold email outreach campaigns and contact lists on the Emelia platform

Action Communication v1

The Emelia node lets you automate cold email outreach directly from BusyBot workflows — create and duplicate campaigns, add contacts, and start or pause campaigns programmatically. You could, for example, build a workflow that adds a new CRM lead to an Emelia contact list and triggers a campaign start the moment they meet a qualification condition.

Node type
Action
Parameters
21
Outputs
Output, Error
Credentials
Emelia API

Emelia

Manage Emelia cold email campaigns and contact lists

Overview

Emelia is a cold email outreach platform. This tool interacts with Emelia’s GraphQL API to manage campaigns (create, get, list, start, pause, duplicate, add contacts) and contact lists (add contacts, list). All operations use GraphQL queries/mutations sent to https://graphql.emelia.io/graphql with the API key in the Authorization header (no Bearer prefix). The API returns all results in a single call (no server-side pagination), so getAll operations apply client-side slicing when a limit is set.

Category: Communication
Tool Name: emelia
Version: 1

Appearance: Icon: lucide-Mail | Color: #FC636B

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Emelia API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Campaigncampaign
Contact ListcontactList

Operations

OperationValueDescription
Add ContactaddContactAdd a contact to a campaign (Campaign resource)
CreatecreateCreate a campaign (Campaign resource)
DuplicateduplicateDuplicate a campaign (Campaign resource)
GetgetGet a campaign (Campaign resource)
Get ManygetAllGet many campaigns (Campaign resource)
PausepausePause a campaign (Campaign resource)
StartstartStart a campaign (Campaign resource)
AddaddAdd a contact to a contact list (Contact List resource)
Get ManygetAllGet many contact lists (Contact List resource)

Parameters

Campaign: Add Contact

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign to add the contact to. Find in Emelia dashboard URL or via the Get Many operation. Supports expressions like {{ $json.campaignId }}.
Contact EmailstringYesThe email address of the contact to add to the campaign. Supports expressions.
Additional FieldscollectionNo{}Optional contact attributes. Add only the ones you need.
— Custom FieldsfixedCollectionNo{}Custom fields to set on the contact. Add one entry per field.
— — Field NamestringNoThe name of the custom field.
— — ValuestringNoThe value to set on the custom field.
— First NamestringNoFirst name of the contact.
— Last ContacteddateTimeNoLast contacted date of the contact.
— Last NamestringNoLast name of the contact.
— Last OpendateTimeNoLast opened date of the contact.
— Last ReplieddateTimeNoLast replied date of the contact.
— Mails SentnumberNo0Number of emails sent to the contact.
— Phone NumberstringNoPhone number of the contact.

Campaign: Create

ParameterTypeRequiredDefaultDescription
Campaign NamestringYesThe name of the campaign to create. Supports expressions.

Campaign: Get

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign to retrieve. Supports expressions.

Campaign: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. (shown when Return All is false)

Campaign: Pause

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign to pause. The campaign must be in RUNNING mode. Supports expressions.

Campaign: Start

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign to start. Email provider and contacts must be set. Supports expressions.

Campaign: Duplicate

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the source campaign to duplicate. Find in Emelia dashboard URL or via the Get Many operation. Supports expressions.
New Campaign NamestringYesThe name for the new duplicated campaign. Set it as campaignName in a JSON config. Supports expressions.
OptionscollectionNo{}Choose what carries over from the original campaign.
— Copy ContactsbooleanNofalseWhether to copy all the contacts from the original campaign.
— Copy Email ProviderbooleanNotrueWhether to set the same email provider as the original campaign.
— Copy Email SequencebooleanNotrueWhether to copy all the steps of the email sequence from the original campaign.
— Copy Global SettingsbooleanNotrueWhether to copy all the general settings from the original campaign.

Contact List: Add

ParameterTypeRequiredDefaultDescription
Contact List IDstringYesThe ID of the contact list to add the contact to. Find in Emelia dashboard or via the Get Many operation. Supports expressions.
Contact EmailstringYesThe email address of the contact to add to the contact list. Supports expressions.
Additional FieldscollectionNo{}Optional contact attributes. Add only the ones you need.
— Custom FieldsfixedCollectionNo{}Custom fields to set on the contact. Add one entry per field.
— — Field NamestringNoThe name of the custom field.
— — ValuestringNoThe value to set on the custom field.
— First NamestringNoFirst name of the contact.
— Last ContacteddateTimeNoLast contacted date of the contact.
— Last NamestringNoLast name of the contact.
— Last OpendateTimeNoLast opened date of the contact.
— Last ReplieddateTimeNoLast replied date of the contact.
— Mails SentnumberNo0Number of emails sent to the contact.
— Phone NumberstringNoPhone number of the contact.

Contact List: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. (shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Emelia result is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

OperationWhat lands on the item
campaign / addContactcontactId — the identifier Emelia assigned to the new campaign contact.
campaign / createThe created campaign record.
campaign / getThe campaign record.
campaign / getAllFans out — one output item per campaign. Return All returns every campaign; otherwise the list is trimmed to Limit.
campaign / pause, startsuccess: true.
campaign / duplicate_id — the ID of the newly created copy.
contactList / addcontactId — the identifier Emelia assigned to the new list contact.
contactList / getAllFans out — one output item per contact list, trimmed to Limit unless Return All is on.

Emelia returns everything in one call, so Limit is applied after the fetch rather than by the API.

Usage Examples

  • Create a new cold email campaign in Emelia
  • Add a contact to an Emelia campaign
  • List all campaigns with their statistics
  • Start a paused Emelia campaign
  • Duplicate a campaign with all settings
  • Add a contact to an Emelia contact list
  • Get all contact lists from Emelia

Example Configuration

Create a campaign:

{
  "type": "emelia",
  "parameters": {
    "resource": "campaign",
    "operation": "create",
    "campaignName": "New Product Launch Outreach"
  }
}

Add a contact to a campaign:

{
  "type": "emelia",
  "parameters": {
    "resource": "campaign",
    "operation": "addContact",
    "campaignId": "camp_newproduct123",
    "contactEmail": "{{ $json.email }}",
    "additionalFields": {
      "firstName": "Alex",
      "lastName": "Johnson"
    }
  }
}

Start the campaign once contacts and a provider are in place:

{
  "type": "emelia",
  "parameters": {
    "resource": "campaign",
    "operation": "start",
    "campaignId": "camp_123456"
  }
}

Duplicate a campaign, carrying everything over:

{
  "type": "emelia",
  "parameters": {
    "resource": "campaign",
    "operation": "duplicate",
    "campaignId": "camp_123456",
    "campaignName": "Duplicated Campaign - Q1 2024",
    "options": {
      "copyContacts": true,
      "copyProvider": true,
      "copyMails": true,
      "copySettings": true
    }
  }
}

Add a fully described contact to a contact list:

{
  "type": "emelia",
  "parameters": {
    "resource": "contactList",
    "operation": "add",
    "contactListId": "list_789012",
    "contactEmail": "jane.smith@example.com",
    "additionalFields": {
      "firstName": "Jane",
      "lastName": "Smith",
      "phoneNumber": "+1987654321",
      "lastContacted": "2024-01-15T10:30:00Z",
      "mailsSent": 5,
      "customFieldsUi": {
        "customFieldsValues": [
          { "fieldName": "industry", "value": "Technology" }
        ]
      }
    }
  }
}

List every contact list:

{
  "type": "emelia",
  "parameters": {
    "resource": "contactList",
    "operation": "getAll",
    "returnAll": true
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Use Emelia to manage cold email campaigns and contact lists — create campaigns, add contacts, start/pause campaigns, and list contact lists.

Parameter Dependencies

  • Resource selection: Always set resource first, as it determines available operation values
  • Operation dependencies: Many parameters only appear after selecting specific operations
  • Pagination control: Use returnAll: false with limit for controlled result sets
  • Additional fields: Both campaign and contact list operations support the same additionalFields structure
  • Campaign state: Pause/Start operations require campaigns to be in appropriate states

Notes

  • New Campaign Name is written as campaignName. Duplicate reuses the same internal name as Create, so a JSON config sets the copy’s name with campaignName even though the panel labels it “New Campaign Name”.
  • Start has prerequisites. A campaign needs an email provider and at least one contact before it will start; Pause only works on a campaign that is currently running.
  • Duplicate returns only an ID. Follow it with Campaign: Get on the returned _id if you need the full record.

Frequently asked questions

What credential does this node require, and how does authentication work?

You need an Emelia API credential (type: emeliaApi), which is your Emelia API key. The node sends it in the Authorization header without a Bearer prefix — just the raw key. Make sure your key is active in your Emelia account before connecting.

Can I start a campaign immediately after creating it in the same workflow?

Not instantly — Emelia requires a campaign to have an email provider configured and at least one contact added before the Start operation will succeed. A safe workflow sequence is: Create campaign → Add contact(s) → Start campaign. Skipping those prerequisites will result in an error on the Start step.

I'm duplicating a campaign and want to set the copy's name. What parameter controls that?

Use the `campaignName` parameter. Even though the UI labels it 'New Campaign Name' on the Duplicate operation, it uses the same internal parameter name as the Create operation. If you're building the step in JSON config, set `campaignName` and it will apply to the duplicated campaign's name.

The Duplicate operation only returned an ID — how do I get the full campaign details?

That's expected behavior. The Duplicate operation returns only the new campaign's `_id`. To retrieve the full record, follow it with a Campaign: Get operation using that returned `_id` as the identifier.

How does result pagination work when listing campaigns or contact lists?

Emelia's API returns all results in a single response — there is no server-side pagination. When you set `returnAll: false` and provide a `limit`, BusyBot applies that limit client-side by slicing the full result set after it arrives. If you need a controlled batch size, set `returnAll` to false and specify your desired `limit`.

Build with the Emelia node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Emelia API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.