All integrations

Curviate x n8n

Trigger n8n workflows from LinkedIn events. Connect the two with Curviate’s webhooks and API, then build the flow you need.

No card required

What is n8n?

n8n is a workflow automation platform with a visual editor that can be self-hosted. Technical teams use it to connect apps and APIs and to build automations, including AI agent workflows.

Visit n8n.io

How n8n works with Curviate

An n8n Webhook node receives Curviate events and the HTTP Request node calls the Curviate API back. With a body template Curviate sends exactly the JSON your workflow reads, enrollment_id included, and the workflow can post its answer to a Curviate incoming event so a waiting Motion moves on. Cloud or self-hosted, nothing to install.

Events outmessage.receivedconnection.acceptedenrollment.finished
Actions inadd contactsstart a Motionsend a message

What you can build

Three flows teams set up first. Each one takes a few minutes.

Qualify before the pitch

A Motion step emits the custom event qualify. Your workflow scores the Contact, posts the tier back, and the Sequence pitches only tier A.

motion.custom_event

Replies routed by an IF node

Replies from Motion Contacts go to the deal channel in Slack, everything else to the rep who owns the Account.

message.received

Accepted invites in HubSpot

The HubSpot node’s Create/Update a contact operation files each new connection with their LinkedIn URL and job title.

connection.accepted

Set up n8n with Curviate

Everything runs on two things Curviate gives every account: signed webhooks out and a REST API in.

  1. 1

    Copy your Curviate API key

    In the Curviate dashboard, open Settings, then API & Webhooks, and copy your key.

    # keep it in your tool's credentials, never in plain text
    CURVIATE_API_KEY=cvt_live_••••3f9a
  2. 2

    Start with the Webhook node

    Create a new flow in n8n, start it with the Webhook node and copy the URL it gives you.

    # the URL your Webhook node gives you
    https://your-n8n-webhook-url
  3. 3

    Send Curviate events to it

    Create a webhook in Curviate for the events you need, then send a test event so n8n can read the fields. You can do the same in the dashboard under Settings, then API & Webhooks. Each webhook covers one source: messaging for replies, user for accepted invitations, motion for Motion outcomes, account_status for account alerts.

    curl https://api.curviate.com/v1/webhooks \
      -H "Authorization: Bearer $CURVIATE_API_KEY" \
      -d '{
        "source": "messaging",
        "events": ["message.received"],
        "account_ids": ["acc_…"],
        "request_url": "https://your-n8n-webhook-url"
      }'
  4. 4

    Call Curviate from n8n

    Add the HTTP Request node with the headers Authorization: Bearer plus your key and Content-Type: application/json, and call any Curviate action. This one adds a person and starts a Motion.

    # add the person as a contact
    POST https://api.curviate.com/v1/contacts
    { "linkedin_url": "linkedin.com/in/lenaweber", "first_name": "Lena" }

    # start your Motion for them
    POST https://api.curviate.com/v1/motions/mot_…/contacts
    { "contact_ids": ["con_…"] }
  5. 5

    Check the signature

    Every delivery carries a Curviate-Signature header: an HMAC-SHA256 of the timestamp and the raw body, made with your webhook’s secret. Compare it before you act, and drop anything older than five minutes.

    Curviate-Signature: t=1792230000,v1=5f2c9a…e81b

    # expected = HMAC_SHA256(secret, t + "." + raw_body)

n8n details that matter

What the n8n and Curviate docs say about wiring the two together.

  1. 1

    Test URL, then production URL

    n8n listens on the test URL only while you click Listen for Test Event, and shows the data in the editor. The production URL works once you publish the workflow; its runs show under Executions. Build against the test URL with curviate webhook test, then point the Curviate webhook’s request_url at the production URL.

  2. 2

    Lock the node with Header Auth

    Give the Curviate webhook a custom header and choose Header auth on the Webhook node with the same name and value. Curviate stores header values encrypted and only ever shows a fingerprint of them.

    curviate webhook create --source motion \
      --events motion.custom_event \
      --request-url https://YOUR_N8N_HOST/webhook/… \
      --template-file ./n8n.json
  3. 3

    Answer within 10 seconds

    Curviate waits 10 seconds for a 2xx and retries anything slower, up to 5 attempts in 24 hours. For a long workflow set the node to respond Immediately rather than when the last node finishes, and deduplicate on the delivery id.

  4. 4

    Match on enrollment_id

    Send {{enrollment_id}} in the body template and post it back to the incoming event. The match then never depends on an email address, and the Enrollment’s until event.qualified Step can save the tier with save.

Events you can use

message.receivedA LinkedIn message or InMail arrived
connection.acceptedSomeone accepted an invitation you sent through Curviate
enrollment.finishedA contact finished a Motion, with the reason
enrollment.repliedA contact replied to a Motion, with the reply text
motion.custom_eventA Motion ran a step you marked to notify you
post.publishedA scheduled post went live
account.reconnect_neededAn account needs to sign in again
All webhook events

Actions you can call

POST /v1/contactsAdd or update a contact
POST /v1/motions/{id}/contactsStart a Motion for contacts
POST /v1/{account_id}/chats/{chat_id}/messagesSend a message
POST /v1/enrollments/{id}/eventsTell a waiting Motion to continue
GET /v1/{account_id}/companies/{identifier}Read a company page
API reference

Questions about Curviate x n8n

Does it work with self-hosted n8n?

Yes. Curviate delivers to any n8n instance that is reachable over HTTPS, in the cloud or on your own server.

Which LinkedIn events can start a n8n flow?

Messages, accepted invitations, published posts, account status changes and every step of a Motion, from a contact starting it to a reply that ends it.

Can n8n act on LinkedIn too?

Yes. Every Curviate action is a plain HTTPS call, so n8n can search, message, invite or start a Motion, inside the limits you set for each account.

More automation

Connect n8n today.Free for 7 days.

Create your API key, point a webhook at n8n and run your first flow.

No card required