Swimlane
Terug naar Helpcentrum

Push warm LinkedIn contacts into HubSpot, Salesforce or Pipedrive

Swimlane has no native sync with HubSpot, Salesforce or Pipedrive. You connect them yourself with the Swimlane public API, webhooks, and n8n or Make, which both offer HubSpot, Salesforce and Pipedrive modules. This article shows the two designs that work and which one to choose.

Decide what "warm" means first

Don't copy every contact into your CRM. Swimlane creates a contact for every person you talk to or import, and your CRM would fill with people who never answered. Pick a signal your team applies by hand, for example:

  • a tag such as "Send to CRM", added when a conversation turns into a real opportunity;
  • or a list such as "Qualified", that reps move contacts into.

A tag is the most reliable signal, because the API can filter on it (tag_id).

Design 1: scheduled hand-off on a tag (recommended)

Tags don't send webhooks, so the automation checks for tagged contacts on a schedule.

  1. In Swimlane, create two tags: "Send to CRM" and "In CRM". Note their ids with GET https://api.getswimlane.com/v1/tags (a tag appears there once it is used on a contact).
  2. In n8n or Make, schedule a workflow every 15 minutes.
  3. Call GET /v1/contacts?tag_id=<Send to CRM id>&per_page=100.
  4. For each contact, call GET /v1/companies/<uuid> for the first of its companyUuids to get the company name.
  5. Search your CRM for an existing person (by LinkedIn URL or name and company). Create the person if missing, update it otherwise.
  6. Set the tags back through POST /v1/contacts/<uuid>/tags: the contact's current tagIds, minus "Send to CRM", plus "In CRM". This call replaces all tags, so always send the full list.

The step-by-step API calls are in Connect Swimlane to n8n and Connect Swimlane to Make.

Design 2: real-time on contact events

  1. Create a webhook subscribed to Contact Created and/or Contact Updated (see Set up webhooks).
  2. In the workflow, drop test events, then read the full contact with GET /v1/contacts/<uuid>.
  3. Keep it only if it belongs to your qualified list (listUuids) or carries your tag (tagIds).
  4. Create or update the CRM record.

This design reacts within about a minute, but contact.updated also fires when imports or the inbox sync refresh a contact, so the workflow runs often. Filter early.

Map the fields

What Swimlane gives you through the API:

  • firstName, lastName: often the only identity you have.
  • email, phone, website: usually empty for LinkedIn contacts, unless someone filled them in.
  • headline, location, countryIso.
  • LinkedIn profile: https://www.linkedin.com/in/<linkedinId>. Store it in a CRM property; it is the best key for spotting duplicates.
  • Company: the name from GET /v1/companies/<uuid>.
  • uuid: store it in a custom CRM property so updates find the right record.
  • pipelineStageUuid: the stage the contact sits in, if you want to mirror a Swimlane stage in a CRM deal stage. Read stage names with GET /v1/pipelines/<uuid>/stages.

Not available through the API or webhooks: conversations and messages, notes, ICP fit, reminders and activity history. Link back to the contact's LinkedIn profile instead of trying to copy the thread.

CRM-specific notes

  • HubSpot: contacts are matched on email by default. Without an email, search on your LinkedIn URL property first, or you will create duplicates.
  • Salesforce: create Leads rather than Contacts if the person isn't tied to an Account yet. Store the Swimlane uuid in a custom field.
  • Pipedrive: create the Person, then the Organization from the company name, and a Deal if the tag means "opportunity".

Keep one direction

Treat Swimlane as the source for LinkedIn conversations and your CRM as the source for deals. Syncing both ways through the API is possible (contacts, tags, lists, pipeline stages) but easily creates loops. If you write back, do it only on tags or pipeline stages, which don't send webhooks.

Was dit artikel nuttig?