You can connect your n8n instance to Aimfox and automate your LinkedIn outreach using two community nodes - Aimfox (action node) and Aimfox Trigger (webhook node). This allows full access to our API routes, outlined in our official documentation.
Common use cases include managing campaigns, conversations, leads, labels, and templates - with support for custom variables, blacklists, and real-time webhook triggers.
Rate limit: The Aimfox API allows a maximum of 60 requests per minute. Exceeding this limit returns a 429 HTTP status code.
Prerequisites
A running n8n instance (self-hosted or n8n Cloud)
An active Aimfox account with API access
An Aimfox API key — go to Settings → API Keys in your Aimfox dashboard
Installation
Open your n8n instance.
Go to Settings → Community Nodes.
Click Install a community node.
Enter
n8n-nodes-aimfoxand click Install.After installation, both the Aimfox and Aimfox Trigger nodes will be available in the node palette.
If you are self-hosting, you can also install via the CLI:
npm install n8n-nodes-aimfox
Then restart your n8n instance.
Authentication Setup
Both nodes use the same credential type: Aimfox API.
Open any Aimfox node in n8n and click the Credential dropdown → Create New.
Enter your API Key from Settings → API Keys in your Aimfox dashboard.
Click Save. n8n will verify the credential by calling the
/accountsendpoint.
The API key is sent as a Bearer token with every request to https://api.aimfox.com/api/v2. API keys do not expire but can be deleted from your dashboard at any time.
Aimfox Node — Resources & Operations
The Aimfox action node exposes eight resources, each with its own set of operations.
Account
Manage accounts and set interaction limits.
List Accounts — Retrieves all accounts in the workspace, including state, profile details, and license information.
Get Account Limits — Retrieves the weekly interaction limits (connect, email connect, message request, InMail, warmup) for a specific account. Requires Account ID.
Set Account Limits — Updates the weekly interaction limits for an account. Min: 1, max: 1,000. Aimfox recommends limits between 50 and 200 for optimal results. Requires Account ID, Connect Limit, Message Request Limit, and InMail Limit.
Blacklist
Blacklisted profiles and companies are excluded from all campaign targeting.
List Blacklisted Profiles — Returns all blacklisted LinkedIn profiles, including name, URN, occupation, and location.
List Blacklisted Companies — Returns all blacklisted LinkedIn companies, including URN, name, description, and logo.
Add Profile to Blacklist — Blacklists a LinkedIn profile by Profile URN.
Add Companies to Blacklist — Blacklists multiple companies. Provide a comma-separated list of LinkedIn company URLs (e.g.
https://www.linkedin.com/company/aimfox/). Returns any companies that failed to be added.Remove Profile From Blacklist — Removes a profile from the blacklist by Profile URN.
Remove Company From Blacklist — Removes a company from the blacklist by Company URN.
Campaign
Create, update, and manage campaigns and their audiences.
List Campaigns — Retrieves all campaigns and their status. Optionally filter by
outreach_type(inbound/outbound) oraccepts_profiles(true/false).Get Campaign — Retrieves a specific campaign by Campaign ID, including schedule, flows, metrics, and custom variable keys.
Create Campaign — Creates a new campaign. Requires Campaign Name, Type (
listorsearch), Outreach Type (connectorinbound), Audience Size, and comma-separated Account IDs.Add Profile to Campaign — Adds a LinkedIn profile by URL. Supported states:
ACTIVE,PAUSED,DONE,CREATED. Not supported forGROUP MESSAGEorEVENT MESSAGEcampaign types.Add Profile to Campaign with Custom Variables — Adds a profile along with a JSON object of custom variables (e.g.
{"first name": "John"}). Returns successfully added profiles and any that failed with reasons.Remove Profile From Campaign — Removes a profile by URN or Public Identifier (e.g. extract
john-doefromlinkedin.com/in/john-doe).Pause — Pauses a running campaign (sets state to
PAUSED).Resume — Resumes a paused campaign (sets state to
ACTIVE).
Conversation
Retrieve conversations, send messages, and mark conversations as read.
List Conversations — Retrieves all workspace conversations. The
in_appparameter overrides the workspace privacy setting. Supportsbefore(timestamp in ms) for pagination and an optionalcampaignsfilter.Get Conversation — Returns all messages with sender info and timestamps. Requires Account ID and Conversation URN.
Get Lead Conversation — Retrieves the conversation URN for a specific lead. Requires Account ID and Lead ID (must be a number).
Start Conversation — Starts a new conversation with a lead. Requires Account ID, Lead ID, and a Message. Note: adding multiple recipients creates a group conversation, not individual messages.
Send Message To Conversation — Sends a message to an existing conversation. Requires Account ID, Conversation URN, and a Message.
Mark Conversation As Read — Sets a conversation's status to "seen". Requires Account ID and Conversation URN.
Custom Variable
Inject dynamic, per-target data into campaign message templates for personalization.
Get Campaign Custom Variables — Retrieves all variable keys and values for every target in a campaign (e.g.
FIRST_NAME,LAST_NAME,GENERATED_MESSAGE). Requires Campaign ID.Get Target Custom Variables — Retrieves custom variables for a specific target. Requires Campaign ID and Target URN.
Add Custom Variables to Target — Adds custom variables to a specific target. Requires Campaign ID, Target URN, and a JSON Variables object (e.g.
{"CUSTOM_MESSAGE": "Hello", "FIRST_NAME": "John"}).
Label
Organize and categorize leads with colored labels.
List Labels — Retrieves all workspace labels, including each label's ID, name, color, and lead count.
Add Label — Creates a new label. Requires a Name and a Color. Available colors:
info(light blue),quaternary(light gray),success(light green),secondary(light purple),danger(light red),yellow(light yellow).Edit Label — Updates an existing label's name or color. Requires Label ID.
Delete Label — Removes a label from the workspace. Requires Label ID.
Lead
Leads contain rich profile data including work experience, education, skills, interests, languages, and certifications.
List Recent Leads — Retrieves recent leads with full profile data and origin campaign info.
Get Lead — Retrieves detailed information about a specific lead by Lead ID, including all profile fields, labels, notes, and linked accounts (
lead_of).Search Leads — Searches all workspace leads. Supports Keywords, pagination (Start/Count, max 100), an Optimize flag, and filters: Current Companies, Past Companies, Education, Interests, Labels, Languages, Locations, Origins, Skills, and Lead Of.
Add Label To Lead — Adds a label to a specific lead. Requires Lead ID and Label ID.
Remove Label From Lead — Removes a label from a specific lead. Requires Lead ID and Label ID.
Add Note To Lead — Adds a text note to a specific lead. Requires Lead ID and Note Text.
Update Note — Updates a specific note. Requires Lead ID, Note ID, and the new Note Text.
Delete Note From Lead — Removes a note from a specific lead. Requires Lead ID and Note ID.
List Lead Notes — Retrieves all notes for a specific lead, including ID, text, and creation timestamp.
Get Lead Custom Variables — Retrieves custom variables for a specific lead (campaign ID, flow ID, state, variable keys and values). Requires Account ID and Lead URN.
Template
Create and manage message templates used in campaigns. Each template tracks usage stats: sent, replies, and accepted.
List Templates — Retrieves all workspace templates, including name, type, message, AI flag, creation date, and stats.
Get Template — Retrieves full details of a template by Template ID, including subject, message body, and edit history.
Create Template — Creates a new template. Available types:
NOTE_TEMPLATE,INMAIL_TEMPLATE,MESSAGE_TEMPLATE. InMail templates require a Subject. Requires Template Name, Template Message, Template Type, and whether to enable AI generation.Update Template — Updates an existing template's name, subject, message, AI flag, or type. Requires Template ID.
Remove Template — Deletes a template. Requires Template ID.
Aimfox Trigger Node
The Aimfox Trigger node starts a workflow whenever selected events occur in your workspace. It works via webhooks — n8n automatically registers and deregisters the webhook when you activate or deactivate the workflow.
Setup
Add an Aimfox Trigger node as the first node in your workflow.
Select one or more events under Trigger On.
Activate the workflow. n8n registers a webhook via
POST /webhooks.When the workflow is deactivated, n8n deletes the webhook via
DELETE /webhooks/:id.
Automatic Retries
If a webhook call fails, Aimfox retries up to 6 times:
1st retry — 1 minute after the failure
2nd retry — 5 minutes after the previous retry
3rd retry — 30 minutes after the previous retry
4th retry — 1 hour after the previous retry
5th retry — 6 hours after the previous retry
6th retry — 1 day after the previous retry
Payload Structure
Every webhook payload includes the following top-level fields:
id— Unique identifier for the eventevent_type— Type of the event (e.g.reply,campaign_reply)workspace— Object containing workspace details (id,name,created_at)event— Object containing event-specific details
Most campaign-related events include account, target, and campaign objects inside the event field. Inbox/reply events include sender, recipient, conversation_urn, message_urn, and body.
Available Events
Account Logged In (
account_logged_in) — A LinkedIn profile successfully logs in. Includes account state, URN, and profile details.Account Logged Out (
account_logged_out) — A LinkedIn profile is logged out.Campaign Created (
campaign_created) — A new campaign is created. Includes full campaign object with schedule, flows, and metrics.Campaign Started (
campaign_started) — A campaign is started for the first time (state →ACTIVE).Campaign Ended (
campaign_ended) — A campaign ends (state →DONE).Campaign Reply (
campaign_reply) — A lead replies to a campaign message. Includesconversation_urn,message_urn,body, and full campaign/sender/recipient details.Connect Sent (
connect) — A connection request is sent through a campaign. Includesflow_id,flow_type, and target profile.Connect Accepted (
accepted) — A connection request is accepted. Includes state transition details.New Connection (
new_connection) — A new connection is acquired. Includesaccountandconnected_profileobjects.Message Sent (
message) — A message is sent through a campaign sequence. Includestemplate_id, message text, and campaign details.Message Request Sent (
message_request) — A message request is sent to a non-connection.Inmail Sent (
inmail) — A LinkedIn InMail is sent. Includestemplate_id, message text, andflow_typeofINMAIL_OPTIMIZATION.Inmail Reply (
inmail_reply) — A lead replies to a LinkedIn InMail, initiating a conversation.New Reply (
new_reply) — A message is replied to on LinkedIn. Catches all replies, not just campaign replies. Includesconversation_urn,body, anddeclinedflag.Reply (
reply) — A lead replies to a campaign message. Only captures the first reply.Inbox Event (
inbox_event) — Any inbox activity. Thetypefield indicates whether the message wassentorreceived. Includes full message object with reactions, links, and custom variables.Profile Viewed (
view) — A LinkedIn profile is viewed through a campaign. Includes state transition and target profile.Lead Label Added (
lead_label_added) — A label is added to a lead. Includeslabel_id,label_name, and lead profile details.
Workflow Examples
Example 1 — Sync New Replies to a Google Sheet
Goal: Log every campaign reply in a Google Sheet for your sales team in real time.
Aimfox Trigger → Google Sheets
Aimfox Trigger — set Trigger On to
Campaign ReplyandNew Reply.Google Sheets — use the Append Row operation and map fields from the trigger output (lead name, message text, timestamp) to your sheet columns.
Example 2 — Add CRM Contacts to a Campaign
Goal: When a new contact is created in HubSpot, automatically add their LinkedIn profile to an Aimfox campaign.
HubSpot Trigger → Aimfox
HubSpot Trigger — fires on Contact Created.
Aimfox — set Resource to
Campaign, Operation toAdd Profile to Campaign. Select the target campaign and map the LinkedIn URL from the HubSpot contact to the Profile URL field.
To include personalization, use the Add Profile to Campaign with Custom Variables operation and provide a JSON object such as:
{ "COMPANY": "{{ $json.company }}", "DEAL_VALUE": "{{ $json.deal_amount }}" }Example 3 — Auto-Label Leads Who Reply
Goal: Automatically apply a "Replied" label to any lead who sends a reply.
Aimfox Trigger → Aimfox – Add Label
Aimfox Trigger — set Trigger On to
New Reply.Aimfox — set Resource to
Lead, Operation toAdd Label To Lead. Map the Lead ID from the trigger and set the Label ID to your pre-created "Replied" label. You can get the label ID using the Label → List Labels operation.
Example 4 — Daily Lead Report via Slack
Goal: Send a daily summary of recent leads to a Slack channel.
Schedule Trigger → Aimfox – List Recent Leads → Slack
Schedule Trigger — set to run once per day (e.g. 9:00 AM).
Aimfox — set Resource to
Lead, Operation toList Recent Leads.Slack — format the lead data into a message and post it to your desired channel.
You can add an IF node between Aimfox and Slack to only send the message when there are new leads.
Need Help?
Visit our API Docs for technical reference: https://docs.aimfox.com/
Reach out to us on the Live Chat for 1:1 help setting up your workflow
We'll be adding tutorials and templates soon - let us know what you'd like to see!