Swimlane
Back to Help Center

Connect Swimlane to n8n

n8n connects to Swimlane in two directions: Swimlane pushes contact events to an n8n webhook, and n8n calls the Swimlane public API to read or update data. Nothing needs to be installed in Swimlane: you only use Settings → Webhooks and Settings → API.

Before you start

  • An n8n instance (cloud or self-hosted) that Swimlane can reach over the internet.
  • A Swimlane API token if n8n needs to read or write data (see Create an API token and make your first request).

Receive Swimlane events in n8n

  1. In n8n, create a workflow and add a Webhook trigger node.
  2. Set HTTP Method to POST and copy the Production URL.
  3. Activate (publish) the workflow so the production URL listens.
  4. In Swimlane, open Settings → Webhooks, click Add Webhook, paste the URL, tick the events you need and click Create Webhook (details in Set up webhooks).
  5. Make a real change in Swimlane, for example write a note on a contact. Within about a minute, a new run appears in the workflow's executions in n8n.
  6. Open that execution: the Swimlane payload sits under body (body.event, body.data.uuid, body.data.firstName…). Use it to map the next nodes.

Right after the webhook is created, Swimlane sends a test request whose body.event is test. Add an If node that stops the workflow when {{ $json.body.event }} equals test.

Call the Swimlane API from n8n

  1. Add an HTTP Request node.
  2. Under Authentication, choose Generic Credential Type, then Header Auth.
  3. Create the credential with the name Authorization and the value Bearer wpa_your_token_here.
  4. Set the URL, for example to enrich the contact that triggered the webhook:
GET https://api.getswimlane.com/v1/contacts/{{ $json.body.data.uuid }}

The response adds the headline, location, companyUuids, tagIds, listUuids and pipelineStageUuid to what the webhook gave you. Call GET /v1/companies/<uuid> to get the company name.

Recipe: hand tagged contacts to another tool on a schedule

Webhooks don't fire when you tag a contact. To act on tags, poll instead:

  1. Schedule Trigger node: every 15 minutes, for example.
  2. HTTP Request: GET https://api.getswimlane.com/v1/contacts?tag_id=12&per_page=100, where 12 is the id of a tag such as "Send to CRM" (list the ids with GET /v1/tags).
  3. Send each contact to your CRM or outreach tool.
  4. HTTP Request: POST https://api.getswimlane.com/v1/contacts/{{ $json.uuid }}/tags with a body that swaps the tag, so the contact isn't sent again next run:
{ "tagIds": [18] }

This call replaces all the contact's tags. Start from the contact's current tagIds, remove 12, add your "Sent" tag (18 here) and send the whole list, or you will erase its other tags.

Good to know

  • Rate limit: 100 API requests per minute per Swimlane user. In loops, add a Wait node or use batches so you don't hit 429.
  • The token acts on the organization you last used in the Swimlane app.
  • Signature: n8n parses the body before your nodes see it. If you need strict verification, check X-Webhook-Signature on the raw body as explained in Webhook payloads and signature verification. Otherwise, keep the production URL private.
  • Each member's webhooks receive the whole organization's events. Create the webhook from a single account, or your workflow runs several times per change.
  • The n8n card in Settings → Integrations is not needed for this setup.

Troubleshooting

  • Nothing reaches n8n: the workflow isn't active, or you pasted the test URL, which only listens while the editor waits for a test event.
  • 401 in the HTTP Request node: the credential value must be Bearer followed by the token, with the space.

Was this article helpful?