> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# Instantly

> Add LinkedIn contacts to an Instantly email campaign when they don't reply, and stop LinkedIn follow-ups when they answer an email.

> [!NOTE]
>
> **Pro plan.** Instantly works through a connection, HTTP steps and listeners (**Wait for webhook**, **Call & wait**), which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See [Plans and billing](/help/account/billing.md).

Kerux runs the LinkedIn side of a campaign. When a contact doesn't answer there, a **Webhook / HTTP** step adds them to one of your Instantly campaigns. When they reply to an Instantly email, Instantly tells Kerux and the LinkedIn follow-ups stop.

> [!NOTE]
>
> **How it connects:** through Instantly's API v2 and its webhooks (no app to install). See [Instantly's API docs](https://developer.instantly.ai/api-reference/lead/create-lead) and [webhook events](https://developer.instantly.ai/guides/webhook-events). The request and answer below follow Instantly's docs.

## Before you start

* **Instantly plan:** the API is on the Growth plan and up; webhooks start at Hypergrowth (Instantly's own guide). Without webhooks, you can still add contacts; stop them by hand in Instantly.
* **An API key:** in Instantly's settings, open **Integrations**, create an API v2 key with the `leads:create` scope and copy it.
* **The campaign id:** open the Instantly campaign; its id is the long code in the address bar.

## 1. Connect Instantly

**1. Add a Custom API connection**

In Kerux, open **Integrations > Connections** and click **Connect** on **Custom API** (under **Developers**).

**2. Sign-in and address**

**How it signs in:** **Bearer token**, paste the key. **Base URL:** `https://api.instantly.ai`. Click **Save**, then **Test connection**.

## 2. Add the contact to the Instantly campaign

Put a **Webhook / HTTP** step where LinkedIn has had its chance, for example after **Wait 5 days** with no reply. Pick the Instantly connection in its panel, then paste this in the step's JSON (method, URL, headers and body all live there):

```json theme={null}
{
  "method": "POST",
  "url": "/api/v2/leads",
  "bodyType": "json",
  "body": {
    "campaign": "YOUR_INSTANTLY_CAMPAIGN_ID",
    "email": "{{email}}",
    "first_name": "{{contact.first_name}}",
    "last_name": "{{contact.last_name | optional}}",
    "company_name": "{{contact.company | optional}}",
    "skip_if_in_campaign": true
  }
}
```

A URL that starts with `/` goes to the connection's **Base URL**, and only there: Kerux never sends a connection's key to another address.

Instantly answers with the lead it created. The shape, from Instantly's docs (trimmed):

```json theme={null}
{
  "id": "01a19e6d-...",
  "email": "maria@acme.com",
  "campaign": "01a19e6d-..."
}
```

Its id is `{{steps.<step>.response.body.id}}` in later steps. A contact without an email waits instead of being sent: add a **Condition** before the step, or find the email first.

## 3. Stop LinkedIn follow-ups when they reply to an email

**1. Add a Wait for webhook step**

After the step above, add **Wait for webhook**. Choose **One shared URL + a match rule** and match the field `lead_email` to the contact's email. Set a time limit, for example 14 days.

**2. Create the webhook in Instantly**

In Instantly, add a webhook for the `reply_received` event (on that campaign) with the Kerux URL as target. Instantly's webhook API takes `target_hook_url`, `event_type` and `campaign`.

**3. Connect the paths**

**received**: end the campaign or notify your team (the reply text is `{{steps.<step>.payload.reply_text}}`). **timed out**: your last LinkedIn touch, or end.

What Instantly sends (base fields, from its docs):

```json theme={null}
{
  "timestamp": "2026-11-05T10:12:00Z",
  "event_type": "reply_received",
  "campaign_id": "01a19e6d-...",
  "campaign_name": "Founders Q4",
  "lead_email": "maria@acme.com",
  "reply_subject": "Re: quick question",
  "reply_text_snippet": "Sounds good, let's talk"
}
```

## Test with one contact

In the campaign's **Builder**, click **Test** to open **Test on one contact**. Use a contact with your own email address. The contact's journey shows what Kerux sent to Instantly and Instantly's answer; then reply to the Instantly email and check that the **Wait for webhook** step goes out through **received**.

## Common errors

> [accordion] 401 Unauthorized
>
> The key is wrong, was revoked or lacks `leads:create`. Create a new key, edit the connection and paste it again.

> [accordion] 402 Payment Required
>
> Instantly answers this when the workspace has no active paid plan. Renew the plan, then click **Retry** on the contact in **Needs attention**.

> [accordion] The reply never reaches Kerux
>
> Check that the Instantly webhook uses `reply_received`, points to the shared URL, and that the step matches `lead_email` with the same email the contact has in Kerux. If two contacts share an email, the delivery goes to **Home > Tasks** to assign, and nobody continues by mistake.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [Connections](/help/integrations/connections.md), [Smartlead](/help/integrations/smartlead.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.