instantly-loader

star 60

Load leads and email sequences into Instantly.ai campaigns. Handles lead upload, custom variables, and campaign management.

TheMattBerman By TheMattBerman schedule Updated 2/16/2026

name: instantly-loader description: Load leads and email sequences into Instantly.ai campaigns. Handles lead upload, custom variables, and campaign management.

Instantly Loader

Push verified leads and personalized sequences into Instantly.ai for automated sending.

What It Does

  1. Takes verified leads with email sequences
  2. Formats for Instantly API
  3. Uploads to specified campaign
  4. Sets custom variables for personalization

Invocation

# Load leads to campaign
./scripts/load.sh verified.json --campaign "First1000-Feb"

# Create new campaign first
./scripts/load.sh verified.json --create-campaign "First1000-Feb"

# Dry run (show what would upload)
DRY_RUN=true ./scripts/load.sh verified.json --campaign "abc123"

# List existing campaigns
./scripts/campaigns.sh

Setup

Environment Variables

export INSTANTLY_API_KEY="your_instantly_api_key"

Get Your API Key

  1. Go to https://app.instantly.ai/settings/integrations
  2. Copy API key
  3. Set in environment

Input Format

Expects output from email-verifier (which includes sequences from outreach-writer):

{
  "emails": [
    {
      "lead": {
        "name": "Lisa Chen",
        "email": "lisa@growthlabs.com",
        "company": "GrowthLabs",
        "linkedin_url": "https://linkedin.com/in/lisachen",
        "tier": "A"
      },
      "sequence": [
        {
          "step": 1,
          "delay_days": 0,
          "subject": "ai",
          "body": "Lisa,\n\nYour take on AI..."
        },
        {
          "step": 2,
          "delay_days": 3,
          "subject": "re: ai",
          "body": "Lisa,\n\nQuick follow-up..."
        }
      ]
    }
  ]
}

Instantly Lead Format

{
  "email": "lisa@growthlabs.com",
  "first_name": "Lisa",
  "last_name": "Chen",
  "company_name": "GrowthLabs",
  "personalization": "Your take on AI is exactly how we think about outbound.",
  "custom_variables": {
    "linkedin_url": "https://linkedin.com/in/lisachen",
    "tier": "A",
    "subject_1": "ai",
    "body_1": "Lisa,\n\nYour take on AI...",
    "subject_2": "re: ai",
    "body_2": "Lisa,\n\nQuick follow-up..."
  }
}

API Endpoints

Add Leads to Campaign

POST https://api.instantly.ai/api/v1/lead/add
{
  "api_key": "YOUR_KEY",
  "campaign_id": "campaign_abc123",
  "skip_if_in_workspace": true,
  "leads": [...]
}

List Campaigns

GET https://api.instantly.ai/api/v1/campaign/list?api_key=YOUR_KEY

Create Campaign

POST https://api.instantly.ai/api/v1/campaign/create
{
  "api_key": "YOUR_KEY",
  "name": "First1000-Feb",
  "daily_limit": 50
}

Get Campaign Status

GET https://api.instantly.ai/api/v1/campaign/status?api_key=YOUR_KEY&campaign_id=abc123

Setting Up Sequences in Instantly

After loading leads, configure your sequence in Instantly UI:

Email 1 (Day 0):

Subject: {{subject_1}}
Body: {{body_1}}

Email 2 (Day 3):

Subject: {{subject_2}}
Body: {{body_2}}

Email 3 (Day 7):

Subject: {{subject_3}}
Body: {{body_3}}

Or use Instantly's native sequence builder with the personalization field:

Subject: quick thought on {{topic}}
Body: {{personalization}}

[Rest of template]

Output Format

{
  "meta": {
    "campaign_id": "abc123",
    "campaign_name": "First1000-Feb",
    "leads_uploaded": 42,
    "leads_skipped": 3,
    "loaded_at": "2026-02-14T15:00:00Z"
  },
  "results": {
    "success": ["lisa@growthlabs.com", "..."],
    "skipped": ["already@exists.com"],
    "failed": []
  }
}

Usage in Pipeline

# Full pipeline
./linkedin-miner/scripts/mine.sh "AI marketing" 20 > raw.json
./lead-enricher/scripts/profile-enrich.sh raw.json | \
  ./lead-enricher/scripts/enrich.sh > enriched.json
./icp-scorer/scripts/score.sh enriched.json > scored.json
./outreach-writer/scripts/write.sh scored.json > emails.json
./email-verifier/scripts/verify.sh emails.json > verified.json
./instantly-loader/scripts/load.sh verified.json --campaign "First1000-Feb"

# One-liner
./linkedin-miner/scripts/mine.sh "AI marketing" 20 2>/dev/null | \
  ./icp-scorer/scripts/score.sh | \
  ./outreach-writer/scripts/write.sh | \
  ./instantly-loader/scripts/load.sh --campaign "First1000"

Best Practices

Daily Limits

  • Start with 20-30 emails/day per inbox
  • Warm up new domains: 5 → 10 → 20 → 50 over 2-4 weeks
  • Multiple inboxes scale faster than one high-volume inbox

Timing

  • B2B: Tuesday-Thursday, 8-10am recipient's timezone
  • Avoid Mondays (inbox overload) and Fridays (checked out)

Monitoring

  • Track open rates (aim for 40%+)
  • Track reply rates (aim for 5%+)
  • Pause campaigns if bounce rate > 3%
Install via CLI
npx skills add https://github.com/TheMattBerman/first-1000-kit --skill instantly-loader
Repository Details
star Stars 60
call_split Forks 22
navigation Branch main
article Path SKILL.md
More from Creator
TheMattBerman
TheMattBerman Explore all skills →