Resources · n8n integration

Keap n8n integrationAutomate Keap with n8n.

A Keap n8n integration you can wire in an afternoon. The node exposes 28 operations across 8 resources: contacts, companies, tags, notes, orders, products, emails and files. The Keap Trigger catches form submissions through a webhook. Written for ops people who keep both tools open all day.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What does the Keap n8n integration actually cover?

The Keap n8n integration puts two pieces in your workflow: the Keap node, which calls the Keap REST API across 8 resources and 28 operations, and the Keap Trigger, which starts a workflow when Keap posts a form submission. The trigger works over a webhook, an URL that n8n registers when you activate the workflow, so a submission lands in your workflow within seconds and nothing polls Keap on a timer.

Start with lead capture, because that is where most Keap workflows begin. A submission hits the Keap Trigger, contact.upsert writes the person in with Duplicate Option set to Email so a repeat visitor updates the existing record instead of creating a twin, contactTag.create stamps the right tags on them, and contactNote.create logs where the lead came from. Four steps, no manual retyping.

The second pattern is commerce. An order confirmed elsewhere, say in WooCommerce or paid through Stripe, gets matched against the Keap catalog with ecommerceProduct.getAll, then written back with ecommerceOrder.create. You keep the shop as the source of truth for the cart, and Keap as the source of truth for the customer lifecycle.

The third one is reporting, and it is the least glamorous of the three. contact.getAll with Since and Until pulls everything that changed in a window, Return All keeps n8n paging until the API runs out of contacts, and the rows land in Google Sheets for the weekly review. Teams running Keap alongside HubSpot use the same shape to keep two systems in step.

When an endpoint of the Keap REST API sits outside the node's 28 operations, the HTTP Request node calls it directly and reuses the same Keap credential through predefined authentication. You keep one OAuth2 connection for the whole workflow, whether the call goes through the dedicated node or not.

Two things are worth knowing before you build. Reads are paginated: leave Return All off and n8n stops at Limit, which is fine for a preview and wrong for an export. And some properties are trimmed from responses by default, which is exactly what the Fields option is for on contacts and companies. If you are still comparing platforms before you commit, the n8n review goes through the trade-offs in detail.

Connect

How do you connect Keap to n8n?

  1. 01

    Create a Keap developer account

    The credential starts on Keap's side, not in n8n. Sign up on the Keap developer portal, which is the prerequisite listed in the n8n credential documentation, and create the application that will hold your OAuth2 keys. Keap's own Getting Started with OAuth2 guide walks through the web flow if you have never issued keys there before.

  2. 02

    Add the Keap credential in n8n

    In n8n, open the Credentials menu and create a Keap credential. OAuth2 is the supported authentication method, so n8n sends you through Keap's consent screen and stores the tokens for you. A credential is created once and reused everywhere: every later workflow simply picks it from the dropdown on the node, and you never paste keys into a node again.

  3. 03

    Select the credential and run one operation

    Drop a Keap node on the canvas, pick the credential, then choose a resource and an operation. contact.getAll with Limit set low is a good first call: it proves the connection without touching any data. Once it returns records, add the Keap Trigger and activate the workflow so n8n registers the webhook URL with Keap.

Triggers

What starts a Keap workflow?

Keap Trigger is the node that starts a workflow each time Keap receives a new submission. Pick the form, activate the workflow: n8n registers the webhook on your Keap account.

What you see in n8n

Configuration notes

01Set Up the Keap TriggerThe Keap Trigger starts the workflow when Keap sends it a form submission. It runs on a webhook, so Keap calls the n8n URL as soon as the submission happens and the execution starts within seconds. Nothing is checked on an interval.

The Keap Trigger starts the workflow when Keap sends it a form submission. It runs on a webhook, so Keap calls the n8n URL as soon as the submission happens and the execution starts within seconds. Nothing is checked on an interval.

Key parameters

  • Event Name or ID: required. Pick it from the list the node loads, or supply an ID yourself with an expression such as {{ $json.eventId }} when the value comes from an earlier node.
When to use it
any workflow that has to react to what happens in Keap rather than go looking for it. Pair it with contact.upsert to write the submitter in, or with contactTag.create to segment them the moment they arrive. Remember that the URL is registered with Keap when the workflow goes active, so nothing reaches the trigger while the workflow is still sitting in the editor.
02Return RAW DataOne setting decides what the rest of your workflow sees. RAW Data returns the payload exactly as it arrived from the Keap API, untouched by the node.

One setting decides what the rest of your workflow sees. RAW Data returns the payload exactly as it arrived from the Keap API, untouched by the node.

Key parameters

  • RAW Data: optional boolean. On, the item keeps the API's own shape and field names; off, the node hands over what it normally returns.
When to use it
turn it on while you are building, so you can read the real payload in the execution view and copy the field names into your expressions. It also saves a debugging session later, when a downstream node expects a field that the API spells differently. Left off, the item arrives in the shape the node normally produces, which is usually closer to what the rest of your workflow already expects. Once the expressions are written, the setting rarely needs to change again.
Actions

What can the Keap node do?

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

Resources × operations matrix
ResourceCreateGetGet ManyUpdateDeleteCreate RecordSendUploadCreate or Update
Company✓✓
Contact✓✓✓✓
Contact Note✓✓✓✓✓
Contact Tag✓✓✓
Ecommerce Order✓✓✓✓
Ecommerce Product✓✓✓✓
Email✓✓✓
File✓✓✓

Company

2 operations
01

Create a company

company.create

What you see in n8n

Notes & use cases

Adds a company record to Keap, the object you attach contacts and orders to when you sell to organizations rather than individuals.

Key parameters

  • Company Name: the only required field, typically {{ $json.company }} coming off a form submission.
  • Addresses, Phones and Faxes: separate collections, each one added line by line rather than typed into a single box.
  • Additional Fields: holds Email, Website, Notes and Opt In Reason, plus the address details such as Country Code in ISO Alpha-3 form.
Use cases
a B2B demo request creates the company first, so the contact created right after can be filed under it.
02

Get many companies

company.getAll

What you see in n8n

Notes & use cases

Pulls the company list out of Keap, either whole or filtered, and returns one item per company for the next node to work through.

Key parameters

  • Return All: on, n8n keeps requesting pages until the API has none left; off, it stops at Limit.
  • Company Name: narrows the query to companies matching that name.
  • Order and Order Direction: sort by datecreated, id or name, ascending or descending.
  • Fields: a comma-separated list of properties to add back to the response, since notes, fax number and custom fields are left out by default.
Use cases
a monthly export of every account, ordered by datecreated, to see which organizations arrived since the last review.

Contact

4 operations
03

Create or update a contact

contact.upsert

What you see in n8n

Notes & use cases

One call that creates the contact, or updates the record already sitting in Keap. This is the workhorse of most Keap workflows, because it removes the duplicate problem instead of managing it.

Key parameters

  • Duplicate Option: required. Email matches on the address alone, Email And Name needs both to line up before Keap treats it as the same person.
  • Emails, Phones, Addresses and Social Accounts: collections, each entry typed by Field or Type.
  • Additional Fields: 17 of them, including Given Name, Family Name, Job Title, Owner Name or ID, Company ID and Source Type.
Use cases
the same person fills your webinar form twice and ends up as one contact with a fuller profile, not two half-filled ones.
04

Delete a contact

contact.delete

What you see in n8n

Notes & use cases

Removes a contact from Keap. There is no confirmation step inside the node, so whatever reaches it gets deleted.

Key parameters

  • Contact ID: required, the Keap identifier and not the email address. It usually comes from a preceding lookup as {{ $json.id }}.
Use cases
an erasure request arrives, a support workflow finds the contact by email with contact.getAll, then passes the ID here. Putting a manual approval step between the lookup and the deletion is a habit worth keeping.
05

Get a contact

contact.get

What you see in n8n

Notes & use cases

Fetches a single contact by identifier and returns its properties as one item, ready to be read by expressions further down.

Key parameters

  • Contact ID: required, the numeric Keap ID of the person.
  • Fields: a comma-separated list of properties to include, because lead source ID, custom fields and job title are not returned by default.
Use cases
before sending a follow-up, the workflow reads the contact fresh so the email uses the current job title rather than the one captured at signup months ago.
06

Get many contacts

contact.getAll

What you see in n8n

Notes & use cases

Reads your contact base, page after page, with filters that make the result usable instead of enormous.

Key parameters

  • Return All: on for a full export, off to cap the result at Limit.
  • Since and Until: a date window applied to the last update, which is how you get an incremental sync rather than a full reload.
  • Email, Given Name, Family Name: filters to find a specific person.
  • Order and Order Direction: sort by date, email, id or name.
Use cases
a nightly job takes everything updated since yesterday and pushes it to your warehouse.

Contact Note

5 operations
07

Create a contact note

contactNote.create

What you see in n8n

Notes & use cases

Writes a note on a contact's history, the trace a salesperson reads before picking up the phone.

Key parameters

  • Contact ID: who the note belongs to.
  • User Name or ID: the Infusionsoft user the note is created on behalf of, chosen from the list or set by expression.
  • Additional Fields: Title, Body, and Type among appointment, call, email, fax, letter and other.
Use cases
a call recorded in your telephony tool becomes a call note with the summary in the body, so the history stays complete without anyone typing it.
08

Delete a contact note

contactNote.delete

What you see in n8n

Notes & use cases

Takes a note off the record permanently. Nothing else on the contact is affected.

Key parameters

  • Note ID: required, the identifier of the note itself, which is not the contact ID. Fetch it with contactNote.getAll if you only know who the note belongs to.
Use cases
a sync ran twice and left two identical call notes on the same contact. A cleanup workflow lists the notes, keeps the oldest, and deletes the rest.
09

Get a contact note

contactNote.get

What you see in n8n

Notes & use cases

Returns one note with its content, so a workflow can read what was written before deciding what to do next.

Key parameters

  • Note ID: required, and the only input this operation takes.
Use cases
an approval workflow receives a note ID in a Slack action, reads the body here, and posts the text back into the thread so the manager can approve without opening Keap.
10

Get many contact notes

contactNote.getAll

What you see in n8n

Notes & use cases

Lists notes across contacts, or narrows down to one person's history when you give it a filter.

Key parameters

  • Return All: on to walk every page, off to stop at Limit.
  • Contact ID: keeps only the notes attached to that contact.
  • User Name or ID: keeps only the notes created on behalf of that user.
Use cases
before a quarterly account review, the workflow gathers every note on the account and sends the rep a single digest instead of a list of links.
11

Update a contact note

contactNote.update

What you see in n8n

Notes & use cases

Edits a note that already exists rather than adding a second one next to it. Only the fields you fill in are changed.

Key parameters

  • Note ID: required, the note to rewrite.
  • Additional Fields: Title, Body, Type, Contact ID to move the note to another person, and User Name or ID.
Use cases
a call note is created the moment the call ends, then updated a few minutes later with the transcript summary once your transcription step finishes.

Contact Tag

3 operations
12

Create a contact tag

contactTag.create

What you see in n8n

Notes & use cases

Applies one or several tags to a contact in a single call. Tags drive segmentation in Keap, so this is often the last step of a capture workflow.

Key parameters

  • Contact ID: required, the person being tagged.
  • Tag Names or IDs: required, a multi-select that lets you apply several tags at once, or an expression when the IDs are computed upstream.
Use cases
a webinar attendee gets tagged by session and by source in one step, which is what the follow-up campaign filters on the next morning.
13

Delete a contact tag

contactTag.delete

What you see in n8n

Notes & use cases

Removes a tag from a contact without touching the contact itself or the tag definition.

Key parameters

  • Contact ID: required.
  • Tag IDs: required, and here it is a plain text field rather than the picker used when adding tags.
Use cases
the day a trial converts, the workflow strips the trial tag so the nurture sequence built on it stops sending, then tags the customer as active.
14

Get many contact tags

contactTag.getAll

What you see in n8n

Notes & use cases

Answers a question every routing workflow ends up asking: what is this contact tagged with right now?

Key parameters

  • Contact ID: required, since tags are always read per contact.
  • Return All: on to get the full set, off to stop at Limit.
Use cases
an IF node checks the returned tags before sending anything, so a contact already tagged as a customer never receives the prospect sequence.

Ecommerce Order

4 operations
15

Create an e-commerce order

ecommerceOrder.create

What you see in n8n

Notes & use cases

Records an order in Keap, with its lines and its delivery address, so revenue and lifecycle live next to each other.

Key parameters

  • Contact ID, Order Date, Order Title and Order Type: all required, with the type either online or offline.
  • Order Items: a collection where each line carries Product ID, Quantity, Description and an optional Price that overrides the catalog price.
  • Shipping Address and Promo Codes, the latter comma-separated so the matching discount is applied.
Use cases
a phone sale is entered as an offline order, and lands in the same reporting as the website's.
16

Get an e-commerce order

ecommerceOrder.get

What you see in n8n

Notes & use cases

Retrieves one order and its detail, which is what you call when a webhook gives you an order reference and nothing else.

Key parameters

  • Order ID: required, and the only field to fill.
Use cases
a customer replies to the confirmation email asking what they bought. The support workflow reads the order here and puts the lines straight into the reply draft, so nobody has to go digging.
17

Delete an e-commerce order

ecommerceOrder.delete

What you see in n8n

Notes & use cases

Erases an order from Keap. Worth treating as a last resort, since the order also carries your revenue history.

Key parameters

  • Order ID: required, the identifier of the order to remove.
Use cases
a test order created while building the checkout integration is cleaned up automatically at the end of the run, so the staging data never pollutes the monthly figures.
18

Get many e-commerce orders

ecommerceOrder.getAll

What you see in n8n

Notes & use cases

Sweeps through orders with the filters that matter for follow-up: a date window, payment status, one customer or one product.

Key parameters

  • Return All: on to page through everything, off to cap at Limit.
  • Since and Until: the period to search in.
  • Paid: a boolean that separates settled orders from the rest.
  • Contact ID and Product ID: narrow to one customer or one item.
Use cases
a daily run lists unpaid orders from the past week and posts the list to the finance channel.

Ecommerce Product

4 operations
19

Create an e-commerce product

ecommerceProduct.create

What you see in n8n

Notes & use cases

Registers a product in the Keap catalog so orders can reference it by ID afterwards.

Key parameters

  • Product Name: the only required field.
  • Additional Fields: SKU, Product Price, Product Description and Product Short Desc, plus two booleans, Active for visibility and Subscription Only for items sold on a recurring basis.
Use cases
a new item published in your shop is mirrored into Keap with its SKU, so the order workflow finds a match instead of failing on an unknown product.
20

Delete an e-commerce product

ecommerceProduct.delete

What you see in n8n

Notes & use cases

Takes a product out of the Keap catalog for good.

Key parameters

  • Product ID: required, the catalog identifier rather than the SKU you use in the shop.
Use cases
a discontinued line is removed at the end of the season. If past orders still reference it, setting Active to false with ecommerceProduct.create on the replacement is usually a calmer route than deleting outright.
21

Get an e-commerce product

ecommerceProduct.get

What you see in n8n

Notes & use cases

Looks up a single product and returns its catalog record, price and description included.

Key parameters

  • Product ID: required, the Keap identifier of the item.
Use cases
a quote workflow reads the product right before building the document, so the amount sent to the client is the one currently in the catalog and not a figure copied into a template last quarter.
22

Get many e-commerce products

ecommerceProduct.getAll

What you see in n8n

Notes & use cases

Walks the catalog and hands back the products as items, which is how you turn Keap into the reference list for the rest of a workflow.

Key parameters

  • Return All: on to retrieve the whole catalog, off to stop at Limit.
  • Active: a boolean filter to keep only the products still on sale.
Use cases
before creating an order, the workflow loads the active catalog once and matches each line by name, avoiding one lookup per line.

Email

3 operations
23

Create a record of an email sent

email.createRecord

What you see in n8n

Notes & use cases

This operation logs an email inside Keap without sending anything. The message left from somewhere else, and the record keeps the contact history complete.

Key parameters

  • Sent To Address: the recipient address, required, often {{ $json.email }} coming from the node before it.
  • Sent From Address: the address the message was sent from, also required.
  • Contact ID: in Additional Fields, the numeric Keap contact the entry attaches to.
  • Original Provider: in Additional Fields, one of UNKNOWN, INFUSIONSOFT, MICROSOFT or GOOGLE, paired with Original Provider ID, which Keap autogenerates as a UUID without dashes when left empty.
Use cases
a receipt sent by your billing app lands back on the Keap contact.
24

Get many emails

email.getAll

What you see in n8n

Notes & use cases

Reads sent email records back out of Keap and returns one item per message, ready for a report or a follow-up branch.

Key parameters

  • Return All: on, n8n walks every page of the Keap API; off, Limit caps how many emails come back.
  • Contact ID: in Filters, narrows the result to the emails of one contact.
  • Email: in Filters, an address such as name@email.com when the contact identifier is unknown.
  • Since Sent Date and Until Sent Date: the date window; Since Sent Date has to be filled whenever the until date is set.
Use cases
a weekly rollup of what was mailed to a segment, pushed into a sheet for the marketing lead to scan.
25

Send an email

email.send

What you see in n8n

Notes & use cases

Keap sends the message itself here, on behalf of one of its users, and the send stays attached to that identity.

Key parameters

  • User Name or ID: required, the Infusionsoft user the email goes out for; pick it from the list or set an ID through an expression.
  • Contact IDs: the recipients, several of them separated by commas.
  • Subject: the subject line, alongside HTML Content or Plain Content in Additional Fields, both encoded in Base64.
  • Attachments: up to 10 files per copy, 1MB each, filled with File Name and File Data or read from a binary Property.
Use cases
an onboarding note that has to look like it came from the account owner, not from an automation inbox.

File

3 operations
26

Delete a file

file.delete

What you see in n8n

Notes & use cases

One file leaves the Keap library for good. The node takes its identifier and returns the outcome, nothing else.

Key parameters

  • File ID: required, the identifier of the file to remove, usually {{ $json.id }} passed down from a listing step earlier in the workflow.
Use cases
a retention routine that lists files older than a cutoff, filters the ones tied to closed accounts, then deletes them one item at a time so the storage stays tidy.
27

Get many files

file.getAll

What you see in n8n

Notes & use cases

Browsing the Keap file library from a workflow starts here. Each file comes back as its own item, filters included.

Key parameters

  • Return All: enabled, every page of files is fetched; disabled, Limit decides where the listing stops.
  • Name: in Filters, a name search where * before or after the text runs a LIKE query.
  • Type: in Filters, the file category, from attachment and image to webform or digitalProduct.
  • Permission and Viewable: user, company or both on one side, public, private or both on the other.
Use cases
an audit of every contract attached to contacts before a storage cleanup.
28

Upload a file

file.upload

What you see in n8n

Notes & use cases

A document produced upstream, a signed quote or an invoice PDF, gets stored in Keap and tied to a record.

Key parameters

  • Input Binary Field: required, the name of the incoming binary field holding the file; Binary File tells the node to read the data from there.
  • File Association: required, company, contact or user, and Contact ID names the record it lands on.
  • File Name: required, extension included, since Keap keeps the name as given.
  • File Data: required, the content encoded in Base64, with Is Public controlling visibility.
Use cases
a proposal generated in a previous step is filed against the contact before the follow-up email goes out.
Need help

Need help automating Keap with n8n?

A person reads every message.

FAQ

Keap and n8n, the questions that come up next

01Is the Keap n8n integration free?
Yes, on the n8n side. The Keap node and the Keap Trigger ship with n8n, so there is nothing to install and nothing extra to pay to use them. That holds both on n8n Cloud, the hosted offer run by n8n, and on a self-hosted instance under the Community Edition and its Sustainable Use licence, where the same workflow behaves the same way. What you pay for Keap itself depends on your Keap plan and is not covered here. The practical cost of the integration is the time it takes to create the credential and build the workflow.
02What credentials do you need to connect Keap to n8n?
OAuth2, and that is the only authentication method supported for Keap in n8n. The prerequisite is a Keap developer account, created on Keap's developer portal, where you set up the application that issues your OAuth2 keys. In n8n you then create a Keap credential from the Credentials menu and complete the consent flow once. The same credential authenticates both the Keap node and the Keap Trigger, and it is reusable across every workflow in your instance: later nodes just pick it from their dropdown. Keap's Getting Started with OAuth2 documentation covers the web flow itself if you want the detail.
03What are the limits of the Keap node in n8n?
Two are worth planning for. First, reads are paginated: with Return All switched off, the node stops at Limit, so a report built on a partial list will quietly under-count. Switch Return All on and n8n follows the API's pages until there are none left. Second, responses are trimmed by default. Properties such as notes, fax number and custom fields on companies, or lead source ID, custom fields and job title on contacts, only come back when you list them in the Fields option. And for an endpoint of the Keap REST API that falls outside the node's 28 operations, the HTTP Request node calls it directly with the same credential through predefined authentication.
04Does the Keap Trigger react in real time?
Yes. The Keap Trigger receives submissions through a webhook: n8n registers its URL with Keap when you activate the workflow, and each submission reaches the workflow within seconds. Nothing runs on an interval, so there is no delay to tune and no wasted execution when nothing happens. Two settings matter. Event Name or ID is required and is picked from the list the node loads, or supplied with an expression when the value comes from upstream. RAW Data, when enabled, returns the payload exactly as it arrived from the API, which is the fastest way to read the real field names while you build.
05n8n or Make for Keap?
It comes down to four criteria, and neither tool wins on all of them. Hosting: n8n runs on your own server through Docker or npm, or on n8n Cloud, while Make is hosted only. Data control follows from that, which matters when contact records and order history leave your infrastructure. Cost model: Make bills per operation, so a workflow that loops over every contact in Keap gets expensive as the base grows, whereas a self-hosted n8n instance has a cost tied to the server. Visual logic: both draw the workflow on a canvas, and the choice there is mostly a matter of habit. Try one workflow on each before committing.