All integrations

Curviate x Zapier

Send LinkedIn events to thousands of apps. Connect the two with Curviate’s webhooks and API, then build the flow you need.

No card required

What is Zapier?

Zapier is a no-code automation platform that connects thousands of apps through automated workflows called Zaps. Teams across business functions use it to move data and trigger actions between tools.

Visit zapier.com

How Zapier works with Curviate

A Zap starts with Webhooks by Zapier’s Catch Hook trigger, on a URL Curviate posts LinkedIn events to, and calls Curviate back with the Custom Request action. Those two Webhooks by Zapier steps are the whole connection, so every app in Zapier can sit between them: a filter, a Slack post, a row in a sheet.

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.

Motion replies to Slack, filtered

A Filter by Zapier step lets through only replies from Contacts in a Motion, and the Slack step posts the sender and the Account it came in on.

message.received

A form lead into a Motion

Two Custom Request steps: the first creates or updates the Contact, the second adds its id to the Motion.

POST /v1/motions/…/contacts

Every outcome as a sheet row

Each finished Enrollment adds a Google Sheets row with the Contact, the Motion and the finish reason.

enrollment.finished

Set up Zapier 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 Webhooks by Zapier › Catch Hook trigger

    Create a new flow in Zapier, start it with the Webhooks by Zapier › Catch Hook trigger and copy the URL it gives you.

    # the URL your Webhooks by Zapier › Catch Hook trigger gives you
    https://your-zapier-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 Zapier 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-zapier-webhook-url"
      }'
  4. 4

    Call Curviate from Zapier

    Add the Webhooks by Zapier › Custom Request action 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)

Zapier details that matter

What Zapier’s help center and Curviate’s webhook docs say about this setup.

  1. 1

    Webhooks by Zapier needs a paid plan

    The webhook triggers run on Zapier’s Professional, Team and Enterprise plans; the Free plan doesn’t include them. There is no Curviate app in Zapier’s directory, so these steps are how the two connect.

  2. 2

    Catch Hook or Catch Raw Hook

    Catch Hook parses the JSON into fields you map in later steps, up to 10 MB. Catch Raw Hook keeps the body unparsed and adds the request headers, up to 2 MB: that is the one to use if a later step checks the Curviate-Signature header itself.

  3. 3

    Shape the payload for the editor

    A body template sends only the fields you name, as flat keys, so the Zap editor shows name and motion instead of nested data.

    { "name": "{{contact.full_name}}",
      "linkedin": "{{linkedin_url}}",
      "motion": "{{motion.name}}" }
  4. 4

    Test without a real person

    Click Test trigger after curviate webhook test. The test delivery carries Curviate-Test: true and a made-up Contact at example.com, so you map fields without touching anyone’s data.

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 Zapier

Which LinkedIn events can start a Zapier 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 Zapier act on LinkedIn too?

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

Do I need to write code?

No. A webhook trigger and an HTTP request are all it takes, and Zapier maps the fields for you.

How do I start a Motion from a Zap?

Add a Custom Request step that posts the person’s LinkedIn URL to /v1/contacts, then a second one that posts the returned id to /v1/motions/{id}/contacts. A repeat answers already_enrolled, so a Zap that runs twice does no harm.

More automation

Connect Zapier today.Free for 7 days.

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

No card required