Skip to content

Connecting Instantly to Outpilot

Run a single multichannel campaign across LinkedIn (Outpilot) and email (Instantly). When a LinkedIn message goes unanswered, the lead drops into your Instantly email sequence. When an Instantly campaign finishes with no reply, the lead drops into LinkedIn outreach. No CSV exports, no copy-paste.

This guide walks you through connecting both directions. Total setup time: about 10 minutes.

Before you start

You’ll need:

  • An Outpilot account on a plan that includes integrations.
  • An Instantly account, with at least one campaign or list already created.
  • Admin access in both tools (you need to generate API keys).

Part 1 — Send leads from Outpilot to Instantly

1. Generate an Instantly API key

  1. In Instantly, go to Settings → Integrations → API Keys.
  2. Click Generate and select all scopes.
  3. Copy the key. You won’t be able to see it again.

2. Connect it in Outpilot

  1. In Outpilot, open Settings → Integrations.
  2. Find the Instantly card and click Connect.
  3. Paste your API key and click Save.
  4. The card flips to Connected and shows your Instantly workspace name.

3. Add Instantly steps to a campaign

In any Outpilot campaign, open the sequence editor. Three new steps now appear under Multichannel:

Add to Instantly Campaign

Sends the lead to a specific Instantly campaign. Pick the destination from the dropdown.

  • Requires an email. Leads without an email skip this step (they’ll continue down the sequence as if it didn’t run).
  • Use this when you want Instantly to start sending email immediately.

Add to Instantly List

Sends the lead to an Instantly list (no campaign attached yet).

  • Works without an email — Instantly can enrich and send later.
  • Use this when you want to collect leads for a future campaign.

Verify Email

Checks whether the lead’s email address is real and deliverable, using Mailgun. Branches into two paths:

  • Email Verified — the address is deliverable. Continue with the rest of the sequence (typically followed by Add to Instantly Campaign).
  • Email Not Verified — the address is undeliverable, unknown, or the lead has no email. Take the fallback path you define.

4. Save and activate

That’s it. When a lead reaches the new step, Outpilot will push them to Instantly and continue the sequence based on the result.

Part 2 — Send leads from Instantly to Outpilot

This direction uses Instantly’s automations to call an Outpilot webhook. Setup is more manual — Instantly doesn’t (yet) have a built-in “Send to Outpilot” action.

1. Generate an Outpilot inbound token

  1. In Outpilot, Settings → Integrations → Instantly → Inbound from Instantly.
  2. Click Generate inbound token.
  3. Copy the token now — it’s shown once. If you lose it, click Rotate to issue a new one (the old one stops working immediately).

2. Find the destination ID

Decide whether you want incoming Instantly leads to land in an Outpilot campaign or a lead list.

  • For a campaign: open the campaign in Outpilot. The URL ends in the campaign UUID, e.g. …/campaigns/a1b2c3d4-…. Copy that UUID.
  • For a lead list: open the list. URL ends in the list UUID. Copy it.

3. Test the token with cURL

Before wiring up Instantly, verify the token works:

Terminal window
curl -i https://api.outpilot.banyan.app/v1/instantly/inbound/health \
-H "Authorization: Bearer YOUR_OUTPILOT_INBOUND_TOKEN"

You should see:

HTTP/1.1 200 OK
Content-Type: application/json
{"ok":true,"user_id":"…"}

If you see 401, the token is wrong. If you see 503, the integration is disabled on your plan — contact support.

4. Wire up an Instantly automation

In Instantly:

  1. Go to Automations → New Automation.
  2. Pick a trigger. Common choices:
    • Campaign finished for lead — push leads who reached the end of an email sequence without replying into LinkedIn outreach.
    • Lead replied — push leads who replied (positively or negatively) so you can follow up on LinkedIn.
    • Lead added to list — push every lead added to a specific list.
  3. For the action, choose HTTP Request / Webhook and configure it as below.

Webhook configuration

  • Method: POST
  • URL: https://api.outpilot.banyan.app/v1/instantly/inbound/leads
  • Headers:
    • Authorization: Bearer YOUR_OUTPILOT_INBOUND_TOKEN
    • Content-Type: application/json
  • Body:
{
"destination": {
"type": "campaign",
"id": "PASTE_OUTPILOT_CAMPAIGN_OR_LIST_UUID_HERE"
},
"lead": {
"email": "{{email}}",
"firstName": "{{first_name}}",
"lastName": "{{last_name}}",
"linkedinUrl": "{{linkedin_url}}",
"company": "{{company}}",
"title": "{{title}}"
},
"source": {
"instantlyCampaignId": "{{campaign_id}}",
"trigger": "campaign_finished"
}
}

Replace {{…}} with whatever variable syntax Instantly uses for your trigger. Set destination.type to lead_list if you’re sending into a list instead of a campaign.

5. Test the automation

Use Instantly’s Test step affordance with one real lead from the source campaign. You should see:

  • Inside Instantly: a 200 response with {"ok":true,"leadId":"…","attached":false}.
  • Inside Outpilot: the lead appears in the destination campaign or list within a few seconds.

If the lead already exists in Outpilot (matched by email or LinkedIn URL), the response will say "attached":true and Outpilot adds them to the destination without creating a duplicate.

6. Activate

Turn the automation on. Instantly will now POST to Outpilot every time the trigger fires.

Three sequence patterns to try

These are the recipes that work best for most customers.

Pattern 1 — LinkedIn first, email fallback

Reach out on LinkedIn. If they don’t accept the connection request, switch to email automatically.

Send connection request
└─ wait 7 days
└─ if not accepted:
Verify Email
├─ verified → Add to Instantly Campaign ("cold outreach")
└─ not verified → end

Pattern 2 — Warm but quiet

The lead accepted your connection but never replied. Follow up by email.

Connection accepted
└─ Send message #1
└─ wait 5 days
└─ Send message #2
└─ wait 10 days
└─ if no reply:
Verify Email
├─ verified → Add to Instantly Campaign ("warm, no reply")
└─ not verified → end

Pattern 3 — Email first, LinkedIn fallback (Instantly → Outpilot)

The lead finished an Instantly cold-email campaign without replying. Try LinkedIn.

  • In Instantly: automation triggered by Campaign finished for lead, posting to your Outpilot inbound webhook with destination.type: campaign pointing to a LinkedIn-only Outpilot campaign.
  • In Outpilot: the LinkedIn campaign starts the lead at step 1 (typically a connection request).

Frequently asked questions

What does “Verify Email” actually check?

We send the lead’s email to Mailgun’s address-validation API. It returns whether the address is deliverable, undeliverable, or risky (e.g. role addresses like info@, catch-all domains). We treat deliverable as verified, undeliverable and unknown as not verified. Risky addresses are routed to the verified branch but flagged in the lead’s activity log.

How many Verify Email checks do I get?

Each user gets 100 free validations per calendar month, included in your plan. Unused validations don’t roll over. If you exhaust your quota mid-campaign, the Verify Email step routes leads to the Email Not Verified branch (no campaigns are paused).

Higher quotas may become available on larger plans — contact sales.

Why not just discover the email automatically from the lead’s name + company?

That’s a different feature (called email discovery or find email in some tools), and we may add it later. For now, Verify Email validates an address you already have. Most Outpilot leads come in with an email already attached (from CSV import or LinkedIn enrichment), so this covers the common case.

What happens if my Instantly API key is revoked or expires?

Outpilot detects the failure on the next API call and freezes any pending Instantly steps in your campaigns. You’ll see a banner at the top of Outpilot prompting you to reconnect. Once you do, the frozen steps resume automatically — no leads are lost.

What happens if I delete my Instantly campaign or list?

Pushes to a deleted destination fail with an error notification, and that step is skipped for that lead. The rest of the Outpilot campaign continues. Edit the step to point to a different destination, or remove it.

Are there rate limits?

  • Outbound (Outpilot → Instantly): 1 lead push per second, 100 per minute.
  • Inbound (Instantly → Outpilot): 60 requests per minute per token; 5,000 leads per day per user.

Hitting these limits is rare in normal use. If you do, you’ll see a 429 Too Many Requests response with a Retry-After header.

Will the same lead get pushed to Instantly twice?

No. Within a single Outpilot campaign, each lead reaches each step at most once, and outbound pushes are idempotent — if our worker retries on a network blip, Instantly recognizes the duplicate and ignores it.

Across different Outpilot campaigns, the same lead can be pushed to multiple Instantly destinations. That’s intentional — each campaign is its own decision.

What lead data gets shared?

When pushing to Instantly: name, email, LinkedIn URL, company, title, and any custom fields you’ve configured. When receiving from Instantly: same shape. We don’t share any data unrelated to the specific lead being handed off.

Can my whole team share one Instantly connection?

Not in v1 — each Outpilot user connects their own Instantly workspace. Team-shared connections are on the roadmap.

What’s the difference between an Instantly Campaign and an Instantly List?

  • Campaign: Instantly will start sending email to the lead immediately (subject to your campaign’s send schedule).
  • List: Instantly stores the lead but doesn’t send anything. You attach the list to a campaign later.

Use Campaign when you want immediate action. Use List when you’re collecting leads for a future send or want Instantly to enrich them first.

How do I disconnect?

Settings → Integrations → Instantly → Disconnect. This stops all future pushes. It does not delete leads already pushed to Instantly — those stay in your Instantly account untouched. Reconnecting later restores the integration without re-importing anything.

Troubleshooting

SymptomLikely causeFix
401 invalid_token from inbound webhookWrong or rotated token in your Instantly automationCopy the latest token from Outpilot Settings, paste into Instantly
404 destination_not_found from inbound webhookOutpilot campaign or list UUID is wrong, or the campaign was deletedRe-copy the UUID from the URL of the destination
429 rate_limitedToo many requests in a short windowWait the seconds shown in Retry-After and retry
Instantly campaign dropdown empty in OutpilotNew campaign created in Instantly, not yet cachedClick Refresh on the integration card
Lead skipped with “no email”Lead has no email address in OutpilotAdd Verify Email upstream, or only push leads with a known email
Verify Email always returns “Not Verified”Free quota exhausted, or Mailgun outageCheck your usage in Settings; if usage is low, retry — outages auto-recover within an hour
Banner: “Instantly connection error”API key revoked, expired, or had its scopes reducedSettings → Integrations → Instantly → Reconnect with a fresh full-scope key

If something above doesn’t fix it, email support@banyan.app with your Outpilot user ID (Settings → Account) and the timestamp of the failure. We can pull the action log and tell you exactly what went wrong.