Skip to main content

Aimfox x n8n Integration

Connect Aimfox to n8n to automate LinkedIn campaigns, conversations, and lead management using the official community node.

Written by Bozidar Nikolic
Updated over 2 weeks ago

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

  1. Open your n8n instance.

  2. Go to Settings → Community Nodes.

  3. Click Install a community node.

  4. Enter n8n-nodes-aimfox and click Install.

  5. 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.

  1. Open any Aimfox node in n8n and click the Credential dropdown → Create New.

  2. Enter your API Key from Settings → API Keys in your Aimfox dashboard.

  3. Click Save. n8n will verify the credential by calling the /accounts endpoint.

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) or accepts_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 (list or search), Outreach Type (connect or inbound), 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 for GROUP MESSAGE or EVENT MESSAGE campaign 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-doe from linkedin.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_app parameter overrides the workspace privacy setting. Supports before (timestamp in ms) for pagination and an optional campaigns filter.

  • 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

  1. Add an Aimfox Trigger node as the first node in your workflow.

  2. Select one or more events under Trigger On.

  3. Activate the workflow. n8n registers a webhook via POST /webhooks.

  4. 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 event

  • event_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. Includes conversation_urn, message_urn, body, and full campaign/sender/recipient details.

  • Connect Sent (connect) — A connection request is sent through a campaign. Includes flow_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. Includes account and connected_profile objects.

  • Message Sent (message) — A message is sent through a campaign sequence. Includes template_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. Includes template_id, message text, and flow_type of INMAIL_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. Includes conversation_urn, body, and declined flag.

  • Reply (reply) — A lead replies to a campaign message. Only captures the first reply.

  • Inbox Event (inbox_event) — Any inbox activity. The type field indicates whether the message was sent or received. 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. Includes label_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 TriggerGoogle Sheets

  1. Aimfox Trigger — set Trigger On to Campaign Reply and New Reply.

  2. 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 TriggerAimfox

  1. HubSpot Trigger — fires on Contact Created.

  2. Aimfox — set Resource to Campaign, Operation to Add 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 TriggerAimfox – Add Label

  1. Aimfox Trigger — set Trigger On to New Reply.

  2. Aimfox — set Resource to Lead, Operation to Add 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 TriggerAimfox – List Recent LeadsSlack

  1. Schedule Trigger — set to run once per day (e.g. 9:00 AM).

  2. Aimfox — set Resource to Lead, Operation to List Recent Leads.

  3. 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!

Did this answer your question?