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
- •
./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
bash
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
json
{
"status": "success",
"campaigns_created": 3,
"campaign_ids": ["id1", "id2", "id3"],
"campaign_names": ["Campaign 1", "Campaign 2", "Campaign 3"]
}
Environment
Requires in .env:
code
INSTANTLY_API_KEY=your_key ANTHROPIC_API_KEY=your_key
API Learnings
- •Schedule requires
namefield 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-20251101for generation