n8n-nodes-aidenix
v0.1.14
Published
Aidenix Business Fit node for n8n — evaluate ICP fit and generate personalized outreach for a LinkedIn slug or email.
Downloads
1,427
Maintainers
Readme
n8n-nodes-aidenix
An n8n community node for Aidenix — score how well a lead matches your Ideal Customer Profile and generate personalized email + LinkedIn outreach in a single workflow step.
Drop a LinkedIn slug or an email address into the node, get back a fit score, an enriched person summary, and ready-to-send copy — no separate enrichment / scoring / copywriting steps needed.

Table of contents
- Why Aidenix
- Features
- Prerequisites
- Installation
- Credentials
- Quick start
- Operations
- Response schema
- Common workflow patterns
- Error handling
- Idempotency & retries
- Troubleshooting
- Compatibility
- Resources & support
- License
Why Aidenix
Most outbound workflows in n8n stitch together 3–5 separate services: enrichment (Apollo / Clearbit), scoring (custom LLM step), copywriting (another LLM step), then a sender. Each step is a moving part — keys, rate limits, prompt tuning, retries.
The Aidenix node collapses all of that into one call:
- Input:
[email protected]orjane-doe-12345 - Output: fit score, person/company context, subject line, email body, LinkedIn DM, plus reasoning and Do/Don't guidance
Use it when you need to qualify and personalize at the same time — typical lead-routing, SDR enablement, and event-triggered outreach flows.
Features
- Business Fit operation — pass a LinkedIn slug or email, get an ICP fit score (0–100), a person summary, and ready-to-send email + LinkedIn copy.
- Built-in idempotency — deterministic
Idempotency-Keyper item, so retried executions reuse the cached server response instead of paying for a duplicate AI run. - Automatic retry on
409 in_progress(still computing) and504 timeout, with configurable backoff. - Standard n8n error handling via
NodeApiError, with full Continue On Fail support. - HTTPS-only by default, with a runtime warning if a non-loopback Base URL is configured over plain HTTP.
Prerequisites
- An n8n instance (Cloud or self-hosted), n8n v1.0+ recommended.
- An Aidenix account and an API token — see Getting an API token.
- For self-hosted n8n: Node.js 18.10+ (this matches n8n's own engine requirement).
Installation
n8n Cloud / self-hosted UI
- Open Settings → Community Nodes.
- Click Install a community node.
- Enter the package name:
n8n-nodes-aidenix - Accept the risk prompt and click Install.
The Aidenix node appears in the node picker as Aidenix.
Manual install (self-hosted, advanced)
cd ~/.n8n/custom # create if missing
npm install n8n-nodes-aidenix
# restart n8nCredentials
Getting an API token
- Sign up or log in at aidenix.com.
- Open your Profile → API Tokens.
- Click Generate token, copy the value (it's shown only once — store it somewhere safe).
- In n8n, create a new Aidenix API credential and paste the token into the API Token field.
Credential fields
| Field | Required | Default | Description |
| ---------- | -------- | ------------------------ | --------------------------------------------------------------------------------------------- |
| API Token | Yes | — | Token issued in the Aidenix dashboard. Stored encrypted by n8n; sent as X-API-Token header. |
| Base URL | No | https://api.aidenix.com | Override only for dedicated tenants or self-hosted Aidenix. |
Security note: the node refuses to log the token and warns if Base URL is plain HTTP to a non-loopback host. Keep Base URL on
https://in all real environments.
Quick start
A minimal "score-and-send" workflow:
- Add a Schedule Trigger (or any trigger producing leads).
- Add a Google Sheets / Airtable node to read a list of leads — each row should have an
email(orlinkedin_slug) column. - Add the Aidenix node:
- Operation:
Business Fit - Query:
={{ $json.email }} - Leave Options at their defaults.
- Operation:
- Add an IF node:
- Condition:
={{ $json.fit_score_pct }}≥70
- Condition:
- On the
truebranch, add Gmail / Outlook with:- Subject:
={{ $json.email_subject }} - Body:
={{ $json.email_message }}
- Subject:
That's the whole pipeline. Idempotency is on by default — re-running the workflow on the same row will reuse the cached Aidenix response instead of charging you twice.
Operations
Business Fit
Evaluates ICP fit for a contact and generates personalized outreach.
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------------------------------------- |
| Query | string | Yes | LinkedIn slug (jane-doe-12345) or email ([email protected]). Auto-detected. |
Options
| Option | Default | Description |
| ------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Idempotency Key Strategy | Deterministic | Deterministic — UUID v5 from workflowId + executionId + itemIndex + query. Replays reuse the cached response. Random — new UUID v4 per item. Custom — supply your own. |
| Idempotency Key | — | Only used when strategy is Custom. Useful when the key comes from an upstream node, e.g. ={{ $json.idempotency_key }}. |
| Max Retries (409 / 504) | 10 | Retries when the API responds with 409 in_progress or 504 timeout. |
| Retry Delay (Ms) | 5000 | Delay between retries. |
Response schema
The node returns a flat JSON object per input item:
{
"job_id": "9f1c…",
"status": "completed",
"query": "jane-doe-12345",
"fit_score_pct": 82,
"person_description": "Jane — CTO at a fintech startup, ~50 engineers, recently raised Series B.",
"email_subject": "Quick question about your payment flow",
"email_message": "Hi Jane, …",
"linkedin_message": "Hi Jane, …",
"logic_explanation": [
"Role matches ICP (technical decision-maker)",
"Company at the right stage (post-Series B)"
],
"strategy": "Practical, problem-first approach",
"strategy_do": ["Mention the specific pain", "Be concrete about ROI"],
"strategy_dont": ["Don't open with generic claims", "Don't reference unrelated case studies"]
}All fields are safe to reference directly in downstream nodes via ={{ $json.field_name }}.
Common workflow patterns
1. Trigger → Score → Conditional send

Trigger ─▶ Aidenix (Business Fit) ─▶ IF (fit_score_pct ≥ 70) ─▶ Gmail (send)
└▶ No-op (skip)Score every lead, send only to those above your threshold, drop the rest. Swap the manual trigger for a Schedule or Webhook in production.
2. Webhook → Real-time enrichment for CRM
Webhook (CRM "new lead") ─▶ Aidenix ─▶ HTTP Request (PATCH /crm/leads/{{id}})Push fit score and personalized copy back into HubSpot / Pipedrive in seconds.
3. LinkedIn slug enrichment from form fills
Typeform Trigger ─▶ Aidenix (Query = ={{ $json.linkedin_url | extractSlug }}) ─▶ Slack (#sales)Notify sales the moment a high-fit lead fills out a form.
Error handling
The node maps Aidenix's HTTP responses into n8n's standard error flow:
| Code | Meaning | Node behavior |
| ---- | ------------------------------------ | ------------------------------------------------------------------------------ |
| 200 | Success | Body returned as-is. |
| 409 | in_progress — still computing | Auto-retry with the same Idempotency-Key. |
| 504 | Timeout | Auto-retry with the same Idempotency-Key. |
| 422 | Body mismatch on a reused key | Raised as NodeApiError. |
| 451 | Contact opted out / unavailable | Raised as NodeApiError. |
| 402 | Quota exhausted | Raised as NodeApiError. Top up in the Aidenix dashboard. |
| 401 | Invalid or revoked token | Raised as NodeApiError. Re-issue the token. |
Enable Continue On Fail on the node to push errored items into the success branch as { error, query, idempotencyKey } — useful for partial-success batch workflows.
Idempotency & retries
The Aidenix API uses Idempotency-Key to deduplicate expensive AI runs. By default this node generates a deterministic key from workflowId:executionId:itemIndex:query, which means:
- Re-running a failed execution reuses the previously-computed result for free.
- Running the same workflow on the same lead in a new execution generates a new key — you'll get a fresh computation. This is usually what you want, since context (your ICP definition) may have changed.
To force a single deterministic key across executions (e.g. "score this lead once per day, regardless of how many times the workflow fires"), switch the strategy to Custom and supply your own:
={{ $json.email + ':' + $now.format('yyyy-MM-dd') }}Troubleshooting
The node returns 409 in_progress even after all retries.
Increase Max Retries or Retry Delay in the node options. Large batches can occasionally exceed the default 10×5s window during peak load.
402 quota_exhausted.
Your plan has run out of credits — top up in the Aidenix dashboard. The node will surface this immediately rather than silently degrading.
401 unauthorized after rotating the token.
n8n credentials cache. Re-open the credential in n8n, paste the new token, save.
The score looks wrong / outreach feels generic. Open a ticket at aidenix.com — fit scoring is tied to your account's ICP definition, which is configured outside n8n.
Base URL warning in execution logs.
You've set Base URL to a non-loopback http:// host. Switch to https:// — the warning means the API token is being sent in cleartext.
Compatibility
- n8n: tested on 1.x. Uses the v1
INodeTypeAPI. - Node.js: 18.10+ (matches n8n's
enginesrequirement). - Aidenix API: this package is maintained alongside the API by the Aidenix team — versions are kept compatible.
Resources & support
- Aidenix — aidenix.com
- API docs — aidenix.com/api
- n8n community nodes guide — docs.n8n.io/integrations/community-nodes
- Issues & feature requests — GitHub issues
- Email — [email protected]
License
MIT © Aidenix
