Resources · n8n integration

Affinity n8n integrationAutomate Affinity with n8n.

The Affinity n8n integration puts relationship data inside a workflow. The node exposes 16 operations over 4 resources: lists, list entries, organizations and people. The trigger, the node that starts a workflow, listens to 25 events grouped in 9 families.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What does the Affinity n8n integration actually do?

Affinity is where a deal team keeps its relationships. The n8n node reaches that data through the Affinity API: 16 operations spread over 4 resources, lists, list entries, organizations and people. The Affinity Trigger covers the other direction, 25 events grouped in 9 families, so a change made inside Affinity starts a workflow instead of waiting for someone to notice it.

A form fills in, a company signs up, an inbound email arrives: that intake moment is where most of these workflows start. The workflow creates the organization with organization.create, then drops it into the right pipeline list with listEntry.create. The second node needs the ID returned by the first, which travels through an expression, a small formula written as {{ $json.id }} that reads a field from the incoming item.

Going the other way, the trigger is what tells the workflow something moved. It fires on opportunity.updated or list_entry.created, the workflow reads the full record, and the result goes out to the channel the team actually watches. Slack works for deal rooms, Gmail for a daily digest to partners who live in their inbox.

Reporting and sync run on a slower clock but touch more records at once. person.getAll and organization.getAll with Return All on stream the address book into Google Sheets for a board update, or line it up against records held in HubSpot so the marketing side and the deal side stop disagreeing about who owns an account.

Two things are worth knowing before you build. Return All walks the API pages until everything has come back; leave it off and Limit caps the number of items the node returns, which is fine for a preview and wrong for an export. And when an Affinity API endpoint falls outside the 16 operations above, the HTTP Request node calls it directly and reuses the same Affinity credential through its predefined authentication, so nothing is blocked, it just takes one extra node.

If n8n itself is the unfamiliar part, the n8n review covers what the platform is good at and where it gets tedious.

Connect

How do you connect Affinity to n8n?

  1. 01

    Check the Affinity plan

    API access is tied to the subscription. The n8n credentials documentation states that an Affinity account on the Scale, Advanced or Enterprise tier is required before the key exists at all. Worth confirming with whoever owns the Affinity account first, because everything else in this page depends on it and a plan change is not something a workflow can fix.

  2. 02

    Get the API key from Affinity

    Affinity issues an API key from its own settings, and its support article 360032633992 walks through where to find it. Copy the value once and keep it somewhere safe. Both the Affinity node and the Affinity Trigger authenticate with this single key, so there is nothing else to collect on the Affinity side.

  3. 03

    Create the credential in n8n

    In n8n, open the Credentials menu and create an Affinity credential, a stored set of authentication details that any workflow can reuse. Paste the value into the API Key field and save. From then on, every Affinity node offers that credential in its dropdown, and you never paste the key into a node again.

Triggers

What starts a workflow from Affinity ?

Affinity Trigger is the node that starts a workflow when something happens in Affinity. It listens to 25 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Affinity 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.

field.*3
  • field.
    • created
    • deleted
    • updated
field_value.*3
  • field_value.
    • created
    • deleted
    • updated
list.*3
  • list.
    • created
    • deleted
    • updated
note.*3
  • note.
    • created
    • deleted
    • updated
opportunity.*3
  • opportunity.
    • created
    • deleted
    • updated
organization.*3
  • organization.
    • created
    • deleted
    • updated
person.*3
  • person.
    • created
    • deleted
    • updated
file.*2
  • file.
    • created
    • deleted
list_entry.*2
  • list_entry.
    • created
    • deleted

Configuration notes

01Set up the Affinity TriggerThe Affinity Trigger, version 1 of the node, is what turns activity inside Affinity into a workflow run. It works by webhook: when you activate the workflow, n8n registers a URL with Affinity, and Affinity calls that URL whenever something happens. Each event lands in the workflow a few seconds later, with no schedule to configure and nothing being checked on a loop.

The Affinity Trigger, version 1 of the node, is what turns activity inside Affinity into a workflow run. It works by webhook: when you activate the workflow, n8n registers a URL with Affinity, and Affinity calls that URL whenever something happens. Each event lands in the workflow a few seconds later, with no schedule to configure and nothing being checked on a loop.

Key parameters

  • Events: the events this workflow subscribes to, picked from the 25 available. There is no catch all value, so each event you care about has to be ticked by name. Ticking several is fine, and the incoming item tells you which one fired.
When to use it
any time the reaction has to be immediate, a mention in a channel, a record copied elsewhere, a follow up task created. The trigger uses the same Affinity credential as the node, so once the key is stored there is nothing extra to configure.
02People, company and opportunity eventsThree families cover the records a deal team touches every day, 9 events in total. person.created, person.updated and person.deleted follow contacts. organization.created, organization.updated and organization.deleted follow companies. opportunity.created, opportunity.updated and opportunity.deleted follow the deals themselves.

Three families cover the records a deal team touches every day, 9 events in total. person.created, person.updated and person.deleted follow contacts. organization.created, organization.updated and organization.deleted follow companies. opportunity.created, opportunity.updated and opportunity.deleted follow the deals themselves.

Key parameters

  • Events: tick the three opportunity values alone for a pipeline watcher, or pair the created values of person and organization when the goal is to catch anything new entering the CRM.
When to use it
a new opportunity posts a card to the sales channel. An updated organization refreshes the same company held in another system. A deleted person triggers the cleanup that removes them from the mailing list too, which is the kind of chore that never gets done by hand. Pair the event with the matching get operation whenever the message you want to send needs more detail than the event itself carries.
03List and list entry eventsLists are how Affinity organizes work, and 5 events across 2 families report on them. list.created, list.updated and list.deleted fire on the list itself, its existence and its settings. list_entry.created and list_entry.deleted fire on membership, meaning a record entering or leaving a list.

Lists are how Affinity organizes work, and 5 events across 2 families report on them. list.created, list.updated and list.deleted fire on the list itself, its existence and its settings. list_entry.created and list_entry.deleted fire on membership, meaning a record entering or leaving a list.

Key parameters

  • Events: the list entry pair is the useful one for pipeline automation, since moving a company into a list is usually what a stage change looks like in Affinity.
When to use it
a fund that keeps one list per stage can treat list_entry.created as a stage entry and start the matching checklist. Pair it with listEntry.get to load the full entry, because the event tells you something changed and the operation tells you what.
04Field, note and file eventsThe remaining 4 families, 11 events, cover the content attached to records rather than the records themselves. field.created, field.updated and field.deleted report on the structure, a column being added or renamed. field_value.created, field_value.updated and field_value.deleted report on what someone actually typed in. note.created, note.updated and note.deleted follow written notes, and file.created and file.deleted follow attachments.

The remaining 4 families, 11 events, cover the content attached to records rather than the records themselves. field.created, field.updated and field.deleted report on the structure, a column being added or renamed. field_value.created, field_value.updated and field_value.deleted report on what someone actually typed in. note.created, note.updated and note.deleted follow written notes, and file.created and file.deleted follow attachments.

Key parameters

  • Events: field value events are noisy on an active team, so subscribe to them in a dedicated workflow rather than mixing them with quieter families.
When to use it
notes carry the meeting context nobody else sees, so note.created is a good hook for a summary sent to the people who missed the call. File events sit at the other end of the scale: an attachment showing up on a record is rare enough to be worth archiving every single time it happens.
Actions

What can the Affinity node do?

The Affinity node exposes 16 operations across 4 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.

Resources × operations matrix
ResourceCreateGetGet ManyUpdateDelete
List✓✓
List Entry✓✓✓✓
Organization✓✓✓✓✓
Person✓✓✓✓✓

List

2 operations
01

Get a list

list.get

What you see in n8n

Notes & use cases

Reads one Affinity list and returns its details, which is how a workflow confirms it is pointing at the right list before writing anything into it.

Key parameters

  • List ID: the unique ID of the list object to be retrieved. Hardcode it for a list you always use, or pass {{ $json.listId }} when an earlier node decided which one.
Use cases
a deal flow workflow reads the list first and branches on its name, so a sandbox list never receives production entries.
02

Get many lists

list.getAll

What you see in n8n

Notes & use cases

Pulls the lists that exist in the account, one item per list, which gives a workflow the map it needs to turn a list name into an ID.

Key parameters

  • Return All: on, n8n keeps requesting pages until every list has come back. Off, Limit decides how many lists the node returns.
Use cases
a quarterly tidy up dumps every list name into a spreadsheet, so the team can see which pipelines were created for one deal and never closed.

List Entry

4 operations
03

Create a list entry

listEntry.create

What you see in n8n

Notes & use cases

Adds an existing person, organization or opportunity to a list. This is the operation that actually moves a record into a pipeline.

Key parameters

  • List Name or ID: pick the target list from the dropdown n8n loads from the account, or pass an ID with an expression.
  • Entity ID: the unique ID of the entity (person, organization or opportunity) to add, typically {{ $json.id }} from the node that just created it.
  • Creator ID: a Person who can access Affinity, recorded as having added the entry. Empty, it defaults to the owner of the API key.
Use cases
a sign up creates the company, then places it in the inbound list in the same run.
04

Delete a list entry

listEntry.delete

What you see in n8n

Notes & use cases

Removes one entry from one list. The person or organization stays in Affinity, only its membership of that list goes away.

Key parameters

  • List Name or ID: the list that contains the entry, chosen from the dropdown or passed as an ID.
  • List Entry ID: the unique ID of the list entry object to be deleted, which is not the ID of the company or the person.
Use cases
a deal goes cold, the entry leaves the active pipeline list, and the relationship history stays untouched for the next attempt.
05

Get a list entry

listEntry.get

What you see in n8n

Notes & use cases

Fetches a single entry and returns what Affinity holds about it, so a workflow can read an entry it was told about instead of scanning a whole list.

Key parameters

  • List Name or ID: the list that contains the entry.
  • List Entry ID: the unique ID of the list entry object to be retrieved.
Use cases
the trigger reports a list_entry.created event, this operation turns that reference into the full record, and only then does the workflow have enough to write a useful message.
06

Get many list entries

listEntry.getAll

What you see in n8n

Notes & use cases

Walks a list and returns its entries as separate items, one per entry, ready for a loop or a batch write.

Key parameters

  • List Name or ID: the list whose entries are to be retrieved.
  • Return All: on for a complete export. Off, Limit caps the number of entries returned, which is what you want while testing.
Use cases
a weekly snapshot of the fundraising list, exported for the partner meeting, with Return All on so no company is silently missing.

Organization

5 operations
07

Create an organization

organization.create

What you see in n8n

Notes & use cases

Creates a company in Affinity and returns it with its ID, the value every later operation on that company will need.

Key parameters

  • Name: the name of the organization.
  • Domain: the domain name of the organization, and the field worth normalizing upstream, since a stray prefix creates a duplicate rather than a match.
  • Person Names or IDs: people the new organization is associated with, chosen from the list or passed as IDs.
Use cases
the published template 476 does exactly this, creating an organization in Affinity from whatever the workflow received.
08

Delete an organization

organization.delete

What you see in n8n

Notes & use cases

Erases a company record from Affinity. Everything the team attached to it goes with the record, so this one usually sits behind a condition rather than running on its own.

Key parameters

  • Organization ID: the unique identifier for the organization, not its name and not its domain.
Use cases
a bulk import created the same company twice, a workflow keeps the record with the interaction history and removes the empty duplicate.
09

Get an organization

organization.get

What you see in n8n

Notes & use cases

Looks up one company by ID and returns its record, with an option that changes how much context comes back.

Key parameters

  • Organization ID: the unique identifier for the organization.
  • With Interaction Dates: switch it on and interaction dates are present on the returned resource, which is what lets a workflow reason about how long it has been quiet.
Use cases
before a check in email goes out, read the company with interaction dates on and skip anyone the team already spoke to.
10

Get many organizations

organization.getAll

What you see in n8n

Notes & use cases

Searches the company side of the address book and returns one item per organization.

Key parameters

  • Term: a string used to search all the organizations in your team's address book, such as an email address, a first name or a last name.
  • Return All: on for the full set, off and Limit caps the result.
  • With Interaction Dates: adds interaction dates to every organization returned.
Use cases
a deduplication pass searches by term before any create runs, so an existing company gets updated instead of cloned.
11

Update an organization

organization.update

What you see in n8n

Notes & use cases

Edits a company already in Affinity. Only the fields you fill in are sent, so a workflow can correct one detail without touching the rest.

Key parameters

  • Organization ID: the unique identifier for the organization to edit.
  • Name and Domain: the new company name and domain when either one changes.
  • Person Names or IDs: the people associated with the organization.
Use cases
a portfolio company rebrands, one workflow updates the name and the domain from the press release feed.

Person

5 operations
12

Create a person

person.create

What you see in n8n

Notes & use cases

Registers a new contact in Affinity and returns the created record, ready to be attached to a list or a company.

Key parameters

  • First Name and Last Name: both required, and both blocking, since a required field left empty stops the node from running.
  • Emails: the email addresses of the person, in the info@example.com shape.
  • Organization Names or IDs: the organizations the person is associated with.
Use cases
a webinar registration becomes a person, linked to the employer the form already captured.
13

Delete a person

person.delete

What you see in n8n

Notes & use cases

Deletes a contact from Affinity by ID. Short operation, permanent effect, so it belongs at the end of a branch that has already checked something.

Key parameters

  • Person ID: the unique identifier for the person, the value returned by a get or carried by a trigger event.
Use cases
a removal request arrives in a shared inbox, a workflow finds the matching person and clears the record without anyone opening the CRM.
14

Get a person

person.get

What you see in n8n

Notes & use cases

Returns one contact and what Affinity knows about them, in a single item the next node can read field by field.

Key parameters

  • Person ID: the unique identifier for the person.
  • With Interaction Dates: on, interaction dates come back with the record, which is the difference between knowing a contact exists and knowing whether anyone has spoken to them.
Use cases
a person.updated event arrives with little detail, this operation loads the current state before the workflow decides anything.
15

Get many people

person.getAll

What you see in n8n

Notes & use cases

Scans the contact side of the address book, returning one item per person, which is the starting point for any export or audit.

Key parameters

  • Term: a string used to search all the persons in your team's address book, such as an email address, a first name or a last name.
  • Return All: on to page through everyone, off to stop at Limit.
  • With Interaction Dates: adds interaction dates to each person returned.
Use cases
a monthly network map, exported once with Return All on and never assembled by hand again.
16

Update a person

person.update

What you see in n8n

Notes & use cases

Patches an existing contact. Anything left blank stays as it is in Affinity, which makes this safe to run on a schedule against a source of truth.

Key parameters

  • Person ID: the unique identifier for the person to edit.
  • Emails: the email addresses of the person, useful when someone changes employer.
  • First Name, Last Name and Organization Names or IDs: the name and affiliation fields, updated only when supplied.
Use cases
a job change detected elsewhere rewrites the email and the associated organization in one run.
Need help

Need help automating Affinity with n8n?

A person reads every message.

FAQ

Affinity and n8n, the questions that come next

01Is the Affinity n8n integration free to use?
The node and the trigger ship with n8n. There is nothing to install, no marketplace purchase and no extra cost on the n8n side, whether you run n8n Cloud, the hosted offer run by n8n, or your own instance under the Community Edition and its Sustainable Use license. A workflow built in one runs identically in the other. The Affinity side is a different question: the n8n credentials documentation states that API access requires an Affinity account on the Scale, Advanced or Enterprise tier, so check the plan before budgeting the automation work.
02What credentials does the Affinity node need?
One, and it is the simplest kind. Affinity authenticates with an API key, so the n8n credential holds a single API Key field. The support article referenced by n8n, numbered 360032633992, explains where to generate the key inside Affinity. Create the credential once from the Credentials menu and every workflow can select it from a dropdown, including the Affinity Trigger, which uses the same key as the node. Remember that the key identifies its owner: on a list entry created without a Creator ID, Affinity records the key owner as the person who added it.
03What are the limits of the Affinity node in n8n?
Two things to plan for. Pagination is manual: on the get many operations, Return All keeps requesting pages until everything has come back, while leaving it off means Limit decides how many items you get, which quietly truncates an export. And the node covers 16 operations across 4 resources; for an Affinity API endpoint outside that catalog, the HTTP Request node calls it directly and reuses the same Affinity credential through predefined authentication. One extra node, same key, no separate setup. Required fields are strict too: leave one empty and the node stops rather than guessing.
04Does the Affinity Trigger work in real time?
Yes. The Affinity Trigger runs on webhooks, meaning a URL that n8n registers with Affinity when you activate the workflow, and that Affinity calls on its side whenever something happens. Events reach the workflow within seconds and nothing is polled on a schedule, so there is no interval to tune. One detail decides whether it fires at all: the Events parameter has no catch all value, so each of the 25 events you want has to be selected by name. Activate the workflow before testing, since an inactive workflow has no registered URL.
05n8n or Make for Affinity?
Both connect to Affinity, so the decision rarely comes down to features. Make is hosted only and billed per operation, which is predictable for small volumes and less so when a workflow fans out over hundreds of list entries. n8n runs on its own cloud or on your servers, which matters when relationship data and deal notes are the thing moving through the workflow, and its cost model is not tied to the number of steps executed. Make is more forgiving visually for a first build. n8n gives more room once the logic branches.