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.mdsource 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
- Client Description: Company name, industry, target audience, value proposition
- Offers (optional): List of 3 offers. If not provided, will be generated.
Scripts
- Creates campaigns via Instantly API./scripts/instantly_create_campaigns.py
- Read lead data if needed./scripts/read_sheet.py
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 (
or custom opener){{icebreaker}} - 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
- Lead's first name{{firstName}}
- Lead's last name{{lastName}}
- Lead's company{{companyName}}
- Informal company name{{casualCompanyName}}
- AI-generated icebreaker{{icebreaker}}
- Sender's first name{{sendingAccountFirstName}}
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
field in each schedule objectname - Timezone: Use
(not all IANA values work)America/Chicago - HTML: Instantly strips plain text outside HTML tags - wrap in
tags<p> - Model: Uses
for generationclaude-opus-4-5-20251101
Schema
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| string | Yes | Client company name |
| string | Yes | Company description and value proposition |
| string | No | Pipe-separated offers (auto-generated if missing) |
| string | Yes | Who we're emailing |
| string | Yes | Credentials/results to mention |
Outputs
| Name | Type | Description |
|---|---|---|
| array | 3 Instantly campaign IDs |
| array | Campaign names |
Credentials
| Name | Source |
|---|---|
| .env |
| .env |
Composable With
Skills that chain well with this one:
scrape-leads, gmaps-leads, casualize-names, onboarding-kickoff
Cost
Claude API + Instantly plan