Learn-skills.dev instantly-campaigns

Create cold email campaigns in Instantly with A/B testing. Use when user asks to create email campaigns, set up cold outreach, build email sequences, or configure Instantly campaigns.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aiagentwithdhruv/skills/instantly-campaigns" ~/.claude/skills/neversight-learn-skills-dev-instantly-campaigns && rm -rf "$T"
manifest: data/skills-md/aiagentwithdhruv/skills/instantly-campaigns/SKILL.md
source content

Instantly Campaign Creation

Goal

Create three email campaigns in Instantly based on a client description and offers. Each campaign has A/B tested first emails and follow-up sequences.

Inputs

  1. Client Description: Company name, industry, target audience, value proposition
  2. Offers (optional): List of 3 offers. If not provided, will be generated.

Scripts

  • ./scripts/instantly_create_campaigns.py
    - Creates campaigns via Instantly API
  • ./scripts/read_sheet.py
    - Read lead data if needed

Process

1. Load Examples

Read

.tmp/instantly_campaign_examples/campaigns.md
for inspiration on personalization + social proof + offer structure.

2. Generate Campaigns

python3 ./scripts/instantly_create_campaigns.py \
  --client_name "ClientName" \
  --client_description "Description of the client..." \
  --offers "Offer 1|Offer 2|Offer 3" \
  --target_audience "Who we're emailing" \
  --social_proof "Credentials/results to mention"

3. Review Output

The script creates 3 campaigns (one per offer), each with:

  • Email 1: Two A/B variants
  • Email 2: Follow-up bump
  • Email 3: Breakup email

Campaign Structure

Email 1 (A/B Split Test)

  • Personalization hook (
    {{icebreaker}}
    or custom opener)
  • Social proof (credentials, results)
  • Offer (clear value proposition)
  • Soft CTA

Email 2 (Follow-up)

  • Brief, friendly bump
  • Reference original email
  • Restate value
  • Clear CTA

Email 3 (Breakup)

  • Short, direct
  • Last chance framing
  • Simple yes/no ask

Available Variables

  • {{firstName}}
    - Lead's first name
  • {{lastName}}
    - Lead's last name
  • {{companyName}}
    - Lead's company
  • {{casualCompanyName}}
    - Informal company name
  • {{icebreaker}}
    - AI-generated icebreaker
  • {{sendingAccountFirstName}}
    - Sender's first name

Edge Cases

  • No offers provided: Generate 3 distinct offers from client description
  • API errors: Script retries once, then fails with detailed error
  • Rate limits: Handled with exponential backoff

Output

{
  "status": "success",
  "campaigns_created": 3,
  "campaign_ids": ["id1", "id2", "id3"],
  "campaign_names": ["Campaign 1", "Campaign 2", "Campaign 3"]
}

Environment

Requires in

.env
:

INSTANTLY_API_KEY=your_key
ANTHROPIC_API_KEY=your_key

API Learnings

  • Schedule requires
    name
    field in each schedule object
  • Timezone: Use
    America/Chicago
    (not all IANA values work)
  • HTML: Instantly strips plain text outside HTML tags - wrap in
    <p>
    tags
  • Model: Uses
    claude-opus-4-5-20251101
    for generation

Schema

Inputs

NameTypeRequiredDescription
client_name
stringYesClient company name
client_description
stringYesCompany description and value proposition
offers
stringNoPipe-separated offers (auto-generated if missing)
target_audience
stringYesWho we're emailing
social_proof
stringYesCredentials/results to mention

Outputs

NameTypeDescription
campaign_ids
array3 Instantly campaign IDs
campaign_names
arrayCampaign names

Credentials

NameSource
INSTANTLY_API_KEY
.env
ANTHROPIC_API_KEY
.env

Composable With

Skills that chain well with this one:

scrape-leads
,
gmaps-leads
,
casualize-names
,
onboarding-kickoff

Cost

Claude API + Instantly plan