Emelia n8n integrationAutomate Emelia with n8n.
Cold email that reacts on its own. The Emelia n8n integration gives a workflow 9 operations across campaigns and contact lists, plus a trigger that listens to 6 campaign events. Made for the people who run sequences and copy addresses by hand far too often.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Emelia n8n integration actually do?
Emelia is a cold email tool. The n8n node talks to its API through 9 operations spread over 2 resources, Campaign and Contact List, so a workflow can open a campaign, drop contacts into it, start it, pause it, or read back what already exists. The Emelia Trigger works the other way around: 6 campaign events reach n8n over a webhook, meaning a URL that n8n registers with Emelia when you activate the workflow.
Start with the list that fills itself. A row lands in Google Sheets after a webinar, n8n reads it, and contactList.add files the address in the Emelia contact list you selected. Nothing gets pasted by hand, and the list stays the one place your sequences draw from.
Second shape: replies that reach a human fast. The trigger listens for replied, the item travels through your workflow, and the alert lands in Slack where sales can pick it up. Same logic with Gmail when the answer has to leave from a personal mailbox rather than the sending tool.
Third shape: the campaign you rebuild every month. campaign.duplicate copies a reference campaign along with its Options, campaign.addContact fills it from wherever your prospects live, and campaign.start puts it live once the contacts and the email provider are set. One schedule drives all three.
The node covers those 9 operations over 2 resources. For an Emelia API endpoint outside that catalog, the HTTP Request node calls it directly and reuses the same credential through predefined authentication, so there is no second key to store anywhere.
Two habits save time while building. Every field marked required stops the node when it comes back empty, so an expression that resolves to nothing breaks the execution instead of sending half a contact. And on the two read operations, leaving Return All off means n8n stops at Limit, fine for a spot check, short for a full export. Still weighing platforms? The n8n review lays out the trade-offs, and the n8n training walks through building workflows like these.
How do you connect Emelia to n8n?
- 01
Generate the API Key in Emelia
You need an Emelia account first. Once you are in, select the avatar at the top right to open your Settings, then open API Keys and generate one. That key is the single authentication method the node and the trigger accept, so keep it somewhere safe while you set up the rest.
- 02
Create the credential in n8n
In n8n, open the Credentials menu and add an Emelia credential. A credential is the stored login n8n reuses on your behalf. Paste the API Key into the single field and save. Nothing else is asked for, since the node has no authentication selector: one key covers everything.
- 03
Select it in the node and the trigger
Drop an Emelia node on the canvas and pick the credential from the dropdown. It stays available in every other workflow, and the Emelia Trigger reads the same one. As soon as it is selected, fields like Campaign Name or ID load your real campaigns instead of asking you to type an identifier.
What can the Emelia Trigger listen to?
Emelia Trigger is the node that starts a workflow when something happens in Emelia. It listens to 6 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Emelia account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
bounced.*1bounced.bounced
clicked.*1clicked.clicked
opened.*1opened.opened
replied.*1replied.replied
sent.*1sent.sent
unsubscribed.*1unsubscribed.unsubscribed
Configuration notes
01Configure the Emelia Trigger
Version 1 of the trigger asks for two things before it runs.
Key parameters
- Campaign Name or ID: required, and it scopes the whole trigger. Pick one from the list. An expression such as
{{ $json.field }}works too, when the campaign is decided elsewhere. - Events: the six boxes you tick,
sent,opened,clicked,replied,bouncedandunsubscribed. There is no catch-all option, so select each one you want to react to.
{{ $json.field }} in the nodes that follow. One trigger node covers one campaign. A second sequence needs its own node, with its own selection of events, and it reuses the credential you already created for the Emelia node.02Email Replied
The replied event fires when Emelia records a reply on the campaign you selected in the trigger.
Key parameters
- Events: tick Email Replied on its own for a workflow dedicated to answers, since every ticked event enters the same branch.
- Campaign Name or ID: one campaign per trigger node, so a second sequence needs a second trigger.
contactList.add right after the trigger and let the address land in the list your next sequence reads. Keep one thing in mind: the trigger only fires while the workflow is active, so a reply that arrives during an editor test goes nowhere.03Link Clicked
The clicked event fires when Emelia records a click on a link in the campaign.
Key parameters
- Events: Link Clicked pairs badly with high-volume events in the same node if you want a clean branch, so give it its own trigger when the follow-up differs.
- Campaign Name or ID: the campaign whose links you care about.
{{ $json.field }}, and only then adds the person to a warmer campaign through campaign.addContact. Everyone else stays in the sequence they are already in. Nothing stops you from ticking it next to replied in a single node, as long as the branch that follows can tell the two apart from what it receives.04Email Bounced
The bounced event fires when Emelia records a bounce on the selected campaign.
Key parameters
- Events: Email Bounced is the one worth keeping on almost every workflow, because it is the event that tells you the data is wrong.
- Campaign Name or ID: bounces are reported per campaign, so a full picture means one trigger per active sequence.
campaign.pause so a human decides what happens next instead of the workflow deciding alone. Pair it with a dated line in the record your team actually reads, so the same address does not come back in the next import.05Unsubscribed Contact
The unsubscribed event fires when a contact unsubscribes from the campaign.
Key parameters
- Events: Unsubscribed Contact belongs in the workflow that owns your suppression handling, on its own or next to
bounced. - Campaign Name or ID: the sequence the person opted out of.
{{ $json.field }}. The point is that the person is removed from the next campaign before anyone builds it, not after. Ticking it on every trigger you build costs nothing, and missing one costs more than it looks on paper. A second branch can file the address in your reporting sheet, so the decision stays auditable months later.What can the Emelia node do?
The Emelia node exposes 9 operations across 2 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Add | Add Contact | Duplicate | Pause | Start |
|---|---|---|---|---|---|---|---|---|
| Campaign | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Contact List | ✓ | ✓ |
Operations index
Campaign
7 operationsAdd a contact to a campaign
campaign.addContactWhat you see in n8n
Notes & use cases
Pushes one contact into a campaign that already exists, so the person enters that sequence.
Key parameters
- Campaign Name or ID: required, chosen from the list n8n loads from your account or passed as an expression such as
{{ $json.field }}when the target changes per item. - Contact Email: required, the address to add.
- Additional Fields: 8 optional entries, among them First Name, Last Name, Phone Number and Custom Fields, added one at a time with Add Custom Field.
Create a campaign
campaign.createWhat you see in n8n
Notes & use cases
Opens a new campaign under the name you give it, the empty shell the other operations then fill.
Key parameters
- Campaign Name: required, and the only field asked for. A plain string, so an expression like
{{ $json.field }}can name the campaign after the account, the month or the segment that triggered the workflow.
Duplicate a campaign
campaign.duplicateWhat you see in n8n
Notes & use cases
Copies an existing campaign into a new one, and you decide what travels with it.
Key parameters
- Campaign Name or ID: required, the campaign used as the model.
- New Campaign Name: required, the name of the copy.
- Options: 4 switches, Copy Contacts, Copy Email Sequence, Copy Email Provider and Copy Global Settings. Leave Copy Contacts off to reuse the writing without carrying the old audience over.
Get a campaign
campaign.getWhat you see in n8n
Notes & use cases
Reads back a single campaign so the rest of the workflow can branch on what Emelia holds.
Key parameters
- Campaign ID: required. Here it is a plain text field rather than the dropdown used elsewhere in the node, so the value has to come from somewhere, usually an earlier node through
{{ $json.field }}.
Get many campaigns
campaign.getAllWhat you see in n8n
Notes & use cases
Lists the campaigns in the account, one item per campaign, ready for filtering downstream.
Key parameters
- Return All: on, n8n walks through the pages of the API and brings back every campaign; off, it stops at Limit.
- Limit: the maximum number of campaigns returned when Return All is off.
Pause a campaign
campaign.pauseWhat you see in n8n
Notes & use cases
Stops a campaign that is currently sending, without touching its contacts or its sequence.
Key parameters
- Campaign ID: required, and the campaign must be in RUNNING mode for the operation to apply. A campaign that is already stopped is not a valid target, which is worth an IF node before this one in a loop.
Start a campaign
campaign.startWhat you see in n8n
Notes & use cases
Puts a campaign into sending mode, which is the last step of any build-it-from-scratch workflow.
Key parameters
- Campaign ID: required, and two conditions apply before it works. The email provider must be set on the campaign, and the contacts must already be loaded. Create, then add, then start, in that order.
Contact List
2 operationsAdd a contact list
contactList.addWhat you see in n8n
Notes & use cases
Files a contact in one of your contact lists, the reusable pool that exists outside any single campaign.
Key parameters
- Contact List Name or ID: required, picked from the list or given as an expression.
- Contact Email: required, the address to store.
- Additional Fields: the same 8 optional entries as the campaign side, including Last Contacted, Last Open, Last Replied and Mails Sent when you are carrying history over from another tool.
Get many contact lists
contactList.getAllWhat you see in n8n
Notes & use cases
Returns the contact lists in the account, which is how a workflow finds an identifier it was never told.
Key parameters
- Return All: on, every list comes back across as many API pages as it takes; off, the node stops at Limit.
- Limit: caps how many lists are returned.
Need help automating Emelia with n8n?
A person reads every message.
