🦞 Exclusive OpenClaw Documentation  •  Free Premium Lead-Magnet

AI Email Outreach System
that Closes Deals While You Sleep

A complete OpenClaw agent that researches leads, defines your ICP, personalizes every email, fires campaigns via Instantly API, manages multi-step follow-ups, and pings you on Telegram — all autonomously, 24/7.

10h
Saved per week
3–5×
Reply rate vs. manual
Campaigns, no extra cost
100%
Self-hosted & private

🔄 Full Automation Pipeline

📋 ICP Definition
🔍 Lead Research
✍️ AI Personalization
📤 Instantly API
🔁 Follow-up Sequences
📱 Telegram Alerts

A Fully Autonomous Cold Outreach Machine

This OpenClaw agent replaces an entire SDR workflow. It knows who your ideal customers are, finds them, writes hyper-personalized emails, sends them via Instantly, follows up intelligently, and reports outcomes directly to your Telegram — without you lifting a finger.

🎯

ICP Engine

Deeply understands your target audience. Aria researches companies and finds the exact titles you need to reach based on your ICP directives.

🔍

Lead Research Agent

Browses LinkedIn, Apollo, Hunter.io, company websites. Extracts real context: pain points, recent news, tech stack, team size — all automatically.

✍️

AI Personalization

Writes each email using researched context. References a real trigger (funding, hiring, product launch) so every email feels handcrafted.

Instantly API Integration

Adds leads to Instantly campaigns via REST API. Manages sending schedules, warm-up, and reply detection programmatically.

🔁

Smart Follow-ups

Multi-step follow-ups with context-aware messaging. Detects replies and stops the sequence. Adjusts cadence based on engagement signals.

📱

Command Center

Control everything from Telegram. Launch campaigns, check stats, approve emails before send, get reply alerts — from your phone, anywhere.

What You Need Before Starting

🛠️ Technical Requirements

✓ Required Node.js 22+ — OpenClaw runtime
✓ Required macOS / Linux / Windows
✓ Required 4GB RAM minimum (8GB recommended)
⚡ Recommended Dedicated server / Mac Mini for 24/7 operation

🔑 API Keys Needed

✓ Required Instantly API Key — campaigns & leads
✓ Required Anthropic Claude API
✓ Required Telegram Bot Token — command center
⚡ Recommended Hunter.io API — email finding

📚 Skills Level

Intermediate Comfortable with terminal/CLI
Beginner OK Basic JSON/API knowledge

💡 Total setup time: ~45 minutes following this guide.

Get OpenClaw Running in 5 Minutes

One command installs Node.js, OpenClaw, and starts the interactive wizard. Your outreach agent lives on your machine — private, fast, 100% yours.

01

Install OpenClaw (one-liner)

bash
# macOS / Linux — installs Node 22+ automatically
curl -fsSL https://openclaw.ai/install.sh | bash

# Alternative via npm (if Node 22+ already installed)
npm install -g openclaw

# Hackable install (access to full source)
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
02

Run the Onboarding Wizard

bash
openclaw onboard

# The wizard will ask you to:
# 1. Name your agent (e.g. "Aria" — your outreach AI)
# 2. Connect your AI provider (Anthropic / OpenAI / local)
# 3. Set up Telegram channel (your command center)
# 4. Gateway starts on port 18789
03

Connect Telegram Channel

bash
# During onboard, when prompted for Telegram:
# 1. Go to https://t.me/BotFather
# 2. /newbot → name it "AriaOutreach" → copy token
# 3. Paste token into the wizard
# 4. Send /start to your new bot in Telegram

# Verify connection:
openclaw status
# ✓ Gateway running on port 18789
# ✓ Telegram: connected
# ✓ Agent: Aria (online)
04

Store API Keys Securely in OpenClaw Memory

bash
# Talk to your agent via Telegram and say:
"Store my Instantly API key: YOUR_INSTANTLY_KEY"
"Store my Hunter.io API key: YOUR_HUNTER_KEY"
"Store my Apollo API key: YOUR_APOLLO_KEY"

# Or set directly in config:
nano ~/.openclaw/config.json
json — ~/.openclaw/config.json
{
  "agent": {
    "name": "Aria",
    "persona": "You are Aria, an elite B2B outreach specialist."
  },
  "env": {
    "INSTANTLY_API_KEY": "YOUR_KEY_HERE",
    "HUNTER_API_KEY": "YOUR_KEY_HERE",
    "APOLLO_API_KEY": "YOUR_KEY_HERE"
  },
  "channels": {
    "telegram": { "enabled": true }
  }
}

Teaching Your Agent Who to Target

Your ICP (Ideal Customer Profile) is the brain of your outreach. You'll store it in OpenClaw's persistent memory as a structured file. Your agent references this for every research and personalization task.

Step 1: Create Your ICP via Telegram

Simply chat with Aria on Telegram — she'll ask the right questions and save your ICP automatically.

Telegram conversation
You: "Aria, let's define my ICP."

Aria: "Perfect! Let's build your Ideal Customer Profile.
What industry do you primarily serve?"

You: "B2B SaaS companies in the HR tech space"

Aria: "Got it. What company size? (employees / ARR)"

You: "50-500 employees, $2M-$20M ARR"

Aria: "What job titles are your primary buyers?"

You: "Head of People, VP HR, Chief People Officer"

Aria: "ICP saved to memory! I'll use this for all
lead research. Want to add pain points too?"

Step 2: ICP Memory File Structure

Aria saves this to ~/.openclaw/memory/icp.md automatically. You can edit it manually if needed.

markdown — ~/.openclaw/memory/icp.md
# Ideal Customer Profile

## Firmographics
- Industry: B2B SaaS, HR Tech
- Company size: 50–500 employees
- ARR: $2M–$20M
- Geography: US, UK, Canada, Australia
- Stage: Series A to Series C

## Buyer Personas
- Head of People (primary)
- VP HR / Chief People Officer
- CHRO (enterprise)

## Pain Points
- Manual HR processes eating up time
- Poor employee engagement scores
- Compliance headaches across states
- Losing top talent to better-tooled competitors

## Buying Triggers
- Recent hiring spree (10+ jobs on LinkedIn)
- New funding round announced
- Leadership change (new CPO/CHRO hired)
- Company scaling from 50 → 150+ employees

## Disqualifiers
- Less than 20 employees
- Non-SaaS companies
- Already using [competitor]
💡
Pro Tip:

You can update your ICP at any time by messaging Aria on Telegram: "Update ICP — add FinTech companies as a secondary vertical." She'll edit the memory file instantly and apply it to all future research.

Installing Required Skills & APIs

OpenClaw's power comes from its Skills system. You'll create custom skills for Instantly, lead research, and personalization — plus install community skills for browser automation.

⚡ Skill 1: Instantly API Integration

Create this skill at ~/.openclaw/skills/instantly/SKILL.md

markdown — ~/.openclaw/skills/instantly/SKILL.md
# Instantly API Skill

## Purpose
Manage cold email campaigns via Instantly.ai API.
Create campaigns, add leads, check stats, pause/resume.

## API Base URL
https://api.instantly.ai/api/v1

## Authentication
All requests require: ?api_key=$INSTANTLY_API_KEY

## Available Operations
- list_campaigns: GET /campaign/list
- create_campaign: POST /campaign/create
- add_leads: POST /lead/add
- get_campaign_analytics: GET /analytics/campaign/summary
- check_replies: GET /unibox/emails (filter: is_reply=true)
- pause_campaign: POST /campaign/pause
- resume_campaign: POST /campaign/resume

## Script Reference
See ./instantly.js for full implementation
javascript — ~/.openclaw/skills/instantly/instantly.js
// Instantly API Helper — OpenClaw Skill
const BASE_URL = 'https://api.instantly.ai/api/v1';
const API_KEY = process.env.INSTANTLY_API_KEY;

async function addLeadToCampaign({ campaignId, email, firstName, lastName, companyName, personalization }) {
  const res = await fetch(`${BASE_URL}/lead/add?api_key=${API_KEY}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      campaign_id: campaignId,
      leads: [{
        email,
        first_name: firstName,
        last_name: lastName,
        company_name: companyName,
        personalization  // Custom variable for email template
      }]
    })
  });
  return res.json();
}

async function getCampaignStats(campaignId) {
  const res = await fetch(
    `${BASE_URL}/analytics/campaign/summary?api_key=${API_KEY}&campaign_id=${campaignId}`
  );
  return res.json();
}

async function checkNewReplies(since) {
  const res = await fetch(
    `${BASE_URL}/unibox/emails?api_key=${API_KEY}&is_reply=true&from_date=${since}`
  );
  return res.json();
}

module.exports = { addLeadToCampaign, getCampaignStats, checkNewReplies };

🔍 Skill 2: Lead Research Agent

Create at ~/.openclaw/skills/lead-research/SKILL.md

markdown — ~/.openclaw/skills/lead-research/SKILL.md
# Lead Research Skill

## Purpose
Research prospect companies and contacts to gather
personalization data for cold outreach.

## Research Sequence
For each lead, execute in order:

1. Hunter.io domain search → find verified emails
   GET https://api.hunter.io/v2/domain-search?domain={domain}&api_key=$HUNTER_API_KEY

2. Apollo.io people search → enrich contact data
   POST https://api.apollo.io/v1/people/search

3. Browser tool → scrape company LinkedIn page
   - Extract: recent posts, team size changes, job listings
   - Look for: hiring signals, product launches, funding news

4. Browser tool → Google news search
   Query: "{company_name} news site:techcrunch.com OR site:businesswire.com"
   - Extract last 3 months of press mentions

## Output Format
Return structured JSON:
{
  "contact": { "name", "email", "title", "linkedin_url" },
  "company": { "name", "domain", "size", "industry", "tech_stack" },
  "triggers": ["raised Series B", "hiring 5 engineers", "new CPO joined"],
  "pain_points": ["manual processes", "scaling challenges"],
  "personalization_hook": "Saw you just raised your Series B — congrats!"
}

## ICP Matching
Before researching, check ~/.openclaw/memory/icp.md
Only research leads that match ICP criteria.
Score each lead: High / Medium / Low fit.
Skip Low fit leads automatically.

✍️ Skill 3: Email Personalization Engine

markdown — ~/.openclaw/skills/email-writer/SKILL.md
# Email Personalization Skill

## Purpose
Write hyper-personalized cold emails that get replies.
Each email must feel hand-written, not templated.

## Email Structure
- Subject: 3–6 words, curiosity-driven, no spam words
- Opening line: Reference THE SPECIFIC TRIGGER (required)
- Problem statement: 1 sentence connecting trigger → pain
- Value proposition: 1 sentence, concrete outcome
- Social proof: 1 micro-proof (optional, keep it brief)
- CTA: One soft ask, frictionless

## Rules
- Max 120 words for initial email
- NO: "I hope this finds you well", "I wanted to reach out"
- NO: Generic compliments ("love your company")
- YES: Specific, verifiable triggers
- YES: First name only, conversational tone
- YES: End with question or ultra-low-friction ask

## Personalization Variables for Instantly
Use {{personalization}} variable → inject unique opening line per lead
Use {{first_name}}, {{company_name}} for Instantly templates

## Follow-up Sequence Logic
Day 3: Angle 2 (different value prop)
Day 7: Case study / social proof angle  
Day 14: Break-up email ("closing your file")
Stop sequence immediately on any reply detected.

📦 Community Skills — Install via Telegram

OpenClaw can install extra skill repositories. The BankrBot community skills repo has excellent browser automation patterns:

Telegram — tell Aria
"Install skills from https://github.com/BankrBot/openclaw-skills"

# Aria will automatically:
# 1. Clone the repo to ~/.openclaw/skills/extra/
# 2. Scan all SKILL.md files
# 3. Index them into her available tool library
# 4. Confirm: "Installed 12 new skills. Browser automation ready."

🚀 Want This Built For You?

I'll Deploy This Exact System for You
in Under 30 Minutes

Skip the setup. Get a fully configured, running outreach machine with your ICP loaded, campaigns created in Instantly, and Telegram alerts live — same day.

💬 WhatsApp Me Now 📞 Book a Free 45-Min Strategy Call

Connecting Your LLM — The Brain Behind Every Email

This is the section most people skip — and then wonder why their emails feel generic. The LLM you wire into OpenClaw is what turns raw lead data into copy that gets replies. Here's every option, from premium to budget-optimized, including token pool sharing to dramatically cut costs.

Don't skip this step.

OpenClaw's personalization quality is entirely dependent on which LLM you use. A weak model writes generic emails. A strong model (Claude Opus 4.6, GPT-4o) writes emails that feel handcrafted — and that's the difference between a 3% and a 15% reply rate.

⭐ Recommended
🧠

Anthropic Claude

Best-in-class email writing quality. Claude Opus 4.6 understands nuance, tone, and context better than any model — perfect for hyper-personalized outreach copy.

claude-opus-4-6 Best Quality
claude-sonnet-4-6 Best Balance

Get key at console.anthropic.com

🤖

OpenAI

Drop-in OpenAI integration. GPT-4o is excellent for personalization; GPT-4o-mini is 10× cheaper for high-volume lead processing where quality needs are slightly lower.

gpt-4o Premium
gpt-4o-mini Cost-Efficient

Get key at platform.openai.com/api-keys

🔌

Custom OpenAI-Compatible API

Point OpenClaw at any OpenAI-compatible endpoint. Works with Groq, Together AI, Ollama (local), OpenRouter, Mistral, Perplexity, LM Studio, and more.

Groq / Ollama / OpenRouter Universal

Any provider with /v1/chat/completions endpoint works

⚙️ Configuring Your AI Provider in OpenClaw

json — ~/.openclaw/config.json — Anthropic Claude
{
  "llm": {
    "provider": "anthropic",
    "model": "claude-sonnet-4-6",       // Best balance of quality + cost
    "apiKey": "sk-ant-YOUR_KEY_HERE",
    "maxTokens": 1024,
    "temperature": 0.7          // Higher = more creative emails
  }
}

// For Opus 4.6 (maximum quality, higher cost):
"model": "claude-opus-4-6"

// For Haiku (fastest, cheapest — good for ICP scoring at scale):
"model": "claude-haiku-4-5-20251001"
json — ~/.openclaw/config.json — OpenAI
{
  "llm": {
    "provider": "openai",
    "model": "gpt-4o",
    "apiKey": "sk-YOUR_OPENAI_KEY_HERE",
    "maxTokens": 1024,
    "temperature": 0.7
  }
}

// For cost savings at high volume, use gpt-4o-mini:
"model": "gpt-4o-mini"     // ~15x cheaper than gpt-4o
json — ~/.openclaw/config.json — Custom OpenAI-Compatible Endpoint
{
  "llm": {
    "provider": "openai",           // Always "openai" for compatible APIs
    "model": "llama-3.3-70b-versatile",
    "apiKey": "gsk_YOUR_GROQ_KEY",
    "baseURL": "https://api.groq.com/openai/v1",  // ← Override endpoint
    "maxTokens": 1024
  }
}

// Other base URLs:
// Ollama (local):  "http://localhost:11434/v1"
// OpenRouter:      "https://openrouter.ai/api/v1"
// Together AI:     "https://api.together.xyz/v1"
// LM Studio:       "http://localhost:1234/v1"
// Mistral:         "https://api.mistral.ai/v1"
Telegram — switch models on the fly
# You can hotswap models without restarting OpenClaw:
"Aria, switch to claude-opus-4-6 for today's VIP lead batch"
"Aria, use gpt-4o-mini for the bulk ICP scoring run — save tokens"
"Aria, what model are you currently using?"

🎯 Pro Strategy: Use Two Models for Different Tasks

Don't use your premium model for everything. Route tasks by complexity to slash costs by 60–80% with zero quality loss:

Task Recommended Model Why Est. Cost / 100 leads
ICP scoring (yes/no fit) claude-haiku / gpt-4o-mini Simple classification, no creativity needed ~$0.05
Research summary claude-haiku / gpt-4o-mini Structured extraction, not creative ~$0.10
Email personalization line claude-sonnet-4-6 / gpt-4o Needs nuance, tone, creativity — this converts ~$0.80
Full email sequence write claude-opus-4-6 Maximum quality for high-value prospects only ~$2.00
Reply classification claude-haiku Positive/negative/OOO classification is trivial ~$0.02

💰 LLM Token Pool Sharing — Cut Costs 50–80%

Token pool sharing lets multiple users or services share a single API subscription's capacity, dramatically lowering per-user costs. This is especially powerful when you're running OpenClaw agents for clients or at high volume.

🔄 Option 1: Claude Max Subscription Proxy

Use a Claude Max subscription ($100/mo) as a proxy backend. One subscription can power multiple OpenClaw agents at a fraction of the API pay-per-token cost.

Telegram example
"Set up a proxy to route my Claude Max
subscription as an API endpoint"
# OpenClaw can self-configure this — 
# the community has built tooling for it

🌐 Option 2: OpenRouter — Pay-Per-Token Pool

OpenRouter aggregates 100+ models under one API key. Use the cheapest model per task. No subscription needed — pure pay-per-use with automatic fallback routing.

json — OpenRouter config
{
  "provider": "openai",
  "baseURL": "https://openrouter.ai/api/v1",
  "apiKey": "sk-or-YOUR_KEY",
  "model": "anthropic/claude-sonnet-4-6"
}

🏠 Option 3: Self-Hosted Local Models (Zero Cost)

Run Ollama locally with Llama 3.3 70B or Mistral for ICP scoring and research summarization. Reserve paid API calls only for the final email writing step.

bash — Ollama setup
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Pull best open model for this task
ollama pull llama3.3:70b

# OpenClaw config points here:
"baseURL": "http://localhost:11434/v1"
"model": "llama3.3:70b"

👥 Option 4: Team / Agency Token Pooling

Running OpenClaw for multiple clients? Deploy a shared LiteLLM proxy that routes all agents through a single rate-limited pool. One API key, many agents, central cost control.

bash — LiteLLM proxy
# Install LiteLLM
pip install litellm[proxy]

# Start proxy on port 4000
litellm --model claude-sonnet-4-6 --port 4000

# All OpenClaw agents point to:
"baseURL": "http://your-server:4000/v1"
"apiKey": "any-string-as-virtual-key"

# Set per-client spend limits, logging, fallbacks

✅ Recommended Setup for This Outreach System

Primary

claude-sonnet-4-6 — Default model for all email writing. Best ratio of quality to cost. Writes emails that consistently hit 10%+ reply rates.

Bulk Tasks

claude-haiku-4-5 or gpt-4o-mini — ICP scoring, lead filtering, reply classification. Zero quality impact, 95% cost savings on these tasks.

VIP Leads

claude-opus-4-6 — Only for your top 10% highest-ICP-fit prospects. Worth every token for dream accounts.

Cost Hack

Hybrid: Ollama local + Claude API — Run Llama 3.3 70B locally for research/scoring (free), use Claude Sonnet API only for final email generation. Reduces API costs by ~70%.

💡
Tell Aria which model to use per task via Telegram:
Telegram
"Aria, use claude-haiku for ICP scoring and lead research,
but always use claude-sonnet-4-6 when writing actual emails.
For any lead with company size 200+ employees, upgrade to opus."

# Aria saves this routing logic to memory and applies it automatically
# to every run going forward — no manual intervention needed

Building the Complete Outreach Pipeline

A

Create Your AGENTS.md — Outreach Workspace

Set up a dedicated multi-agent workspace for outreach. This coordinates the Research Agent, Writer Agent, and Campaign Manager Agent.

markdown — ~/.openclaw/workspaces/outreach/AGENTS.md
# Outreach Workspace — Agent Definitions

## Agent: Aria (Orchestrator)
Role: Coordinates the full outreach pipeline
Trigger: User command via Telegram
Delegates to: Researcher, Writer, CampaignManager

## Agent: Researcher  
Role: Lead research and ICP scoring
Tools: browser, shell, memory
Skills: lead-research
Input: List of target domains or company names
Output: Enriched lead JSON with triggers & personalization hooks

## Agent: Writer
Role: Email copy generation
Tools: memory (reads ICP), shell
Skills: email-writer
Input: Enriched lead JSON from Researcher
Output: Personalized email sequence (initial + 3 follow-ups)

## Agent: CampaignManager
Role: Instantly API operations & reporting
Tools: shell (runs instantly.js)
Skills: instantly
Input: Approved leads + email copy
Output: Leads added to Instantly, campaign running, stats reported
B

Set Up the Research → Personalize → Send Workflow

This master script ties the whole pipeline together. Run it manually or via a cron heartbeat.

javascript — ~/.openclaw/skills/outreach-pipeline/run.js
// Master Outreach Pipeline — OpenClaw Skill
const { addLeadToCampaign } = require('../instantly/instantly');
const CAMPAIGN_ID = process.env.INSTANTLY_CAMPAIGN_ID;

// Reads from a CSV or Apollo export
const leadsFile = process.argv[2] || './leads.csv';

async function processLead(domain) {
  // Step 1: OpenClaw Researcher agent enriches the lead
  const enriched = await researchLead(domain);
  
  if (enriched.icp_score === 'Low') {
    console.log(`Skipping ${domain} — low ICP fit`);
    return;
  }

  // Step 2: Writer agent generates personalized email
  const email = await writePersonalizedEmail(enriched);

  // Step 3: Optional — send preview to Telegram for approval
  if (process.env.REQUIRE_APPROVAL === 'true') {
    await telegramPreview(enriched, email);
    const approved = await waitForApproval(enriched.contact.email);
    if (!approved) return;
  }

  // Step 4: Add to Instantly campaign
  await addLeadToCampaign({
    campaignId: CAMPAIGN_ID,
    email: enriched.contact.email,
    firstName: enriched.contact.first_name,
    lastName: enriched.contact.last_name,
    companyName: enriched.company.name,
    personalization: email.opening_line  // Unique hook per lead
  });

  console.log(`✓ Added ${enriched.contact.email} to campaign`);
}

// Run pipeline
main();
C

Create Instantly Campaign Template

In Instantly UI, create a campaign with these exact variable placeholders. OpenClaw will inject unique content per lead.

email template — Instantly Campaign Step 1
Subject: quick thought on {{company_name}}

Body:
{{personalization}}

Most {{industry}} companies we work with struggle with 
[specific pain point from ICP] — especially at your stage.

We helped [similar company] achieve [concrete outcome] 
in [timeframe].

Worth a 15-min call to see if we could do the same for you?

[Your Name]
[Your Title]
🎯

The {{personalization}} variable is where OpenClaw injects the unique first line for each lead — e.g., "Saw that you just brought on a new CPO last month — big move." This is what makes it feel hand-written.

D

Set Up Cron Heartbeat — Fully Automated

Tell Aria to run the pipeline on autopilot. She'll research, write, and add leads every morning without you touching a thing.

Telegram — setting up automation
"Aria, every weekday at 8am:
1. Research 10 new leads from my Apollo export at ~/leads/queue.csv
2. Score them against my ICP
3. Write personalized emails for all High/Medium fits
4. Add them to my Instantly campaign ID: CAMPAIGN_ID_HERE
5. Send me a Telegram summary of what was processed"

# Aria will create a cron skill and confirm:
Aria: "Scheduled! Every weekday at 8:00 AM I will:
→ Process up to 10 leads from queue.csv
→ Filter by ICP (skipping Low fits)  
→ Add approved leads to Instantly
→ Send you a morning briefing on Telegram
Starting tomorrow. Sweet dreams 🦞"

Multi-Touch Sequences That Actually Convert

80% of replies come after follow-up #2 or #3. This system handles every follow-up automatically, changing angles each time, and stops the moment a prospect replies.

Step Timing Angle / Strategy Max Length CTA
Email 1 Day 0 Specific trigger hook + problem + value prop 120 words Soft — "worth a chat?"
Email 2 Day 3 Different angle — ROI / cost of inaction 80 words "15 minutes this week?"
Email 3 Day 7 Case study / relevant success story 100 words "Relevant?"
Email 4 Day 14 Break-up email — create FOMO, close the loop 60 words "Should I close your file?"
Follow-up 2 — ROI Angle Template
Subject: Re: quick thought on {{company_name}}

Wanted to share one number: companies 
at {{company_name}}'s stage typically 
reclaim 8–12 hours/week after switching.

That's roughly $X in recaptured payroll 
annually — just from removing manual work.

Does that math matter to you right now?

[Name]
Follow-up 4 — Break-up Template
Subject: Closing your file, {{first_name}}

I've reached out a few times — the timing 
might just not be right.

I'll stop following up, but if [core pain] 
ever becomes urgent, my calendar link 
is below.

Wishing {{company_name}} the best.

[Name]

P.S. One last ask — is it timing, budget,
or just not relevant? Reply "T", "B", or 
"N" if you have 2 seconds.

🔔 Automatic Reply Detection & Telegram Alerts

javascript — ~/.openclaw/skills/reply-monitor/monitor.js
// Reply Monitor — runs every 30 min via OpenClaw cron
const { checkNewReplies } = require('../instantly/instantly');

async function monitorReplies() {
  const since = new Date(Date.now() - 30 * 60 * 1000).toISOString();
  const replies = await checkNewReplies(since);

  for (const reply of replies.data || []) {
    // Classify reply sentiment with AI
    const sentiment = await classifyReply(reply.body);

    // Send Telegram alert with context
    await telegramAlert({
      message: `🔥 New Reply!\n\n` +
        `From: ${reply.from_email}\n` +
        `Company: ${reply.from_company}\n` +
        `Sentiment: ${sentiment}\n\n` +
        `"${reply.body.slice(0, 200)}..."\n\n` +
        `👉 Suggested response: [Aria drafts reply]`
    });
  }
}

// Tell Aria via Telegram to set this up:
// "Run reply monitor every 30 minutes and alert me on Telegram"
⚠️
Critical:

Always configure Instantly to pause a lead's sequence immediately on reply. Go to Campaign Settings → Sequence → "Stop on reply: Yes". OpenClaw's monitor is a backup layer — Instantly should handle this natively first.

What Success Looks Like

Open rate (personalized)
45%+
Reply rate target
8–15%
Meeting booked rate
3–5%

📊 Daily Telegram Briefing (What Aria Sends You)

Telegram — Aria's morning briefing
🦞 Aria Morning Briefing — Monday, Feb 24

📤 Yesterday's Activity
  • Researched: 15 leads
  • ICP High fit: 6 | Medium: 7 | Skipped: 2
  • Added to campaign: 13 leads
  • Emails sent (Instantly): 13 initial + 8 follow-ups

🔔 Replies (overnight)
  • 2 new replies detected
  • HubTech Inc. (Sarah M., VP HR): POSITIVE — wants to chat
  • Growly SaaS (Mark T.): OUT_OF_OFFICE — auto-paused 5 days

📈 Campaign Stats (all-time)
  • Total sent: 284
  • Open rate: 51.2% ✅
  • Reply rate: 11.3% ✅  
  • Meetings booked: 8 🎉

📋 Today's Queue
  • 10 new leads in ~/leads/queue.csv
  • Processing starts in 2 hours
  • Tap ✅ to approve auto-send, or ❌ to review first

Level Up Your Outreach Machine

🧠

Train Aria on Your Voice

Save examples of your best-performing emails to OpenClaw's memory. Aria will learn and match your tone perfectly for every prospect.

Telegram — Send to Aria
"Aria, here's an email that got a 40% reply rate.
Learn my tone from this and apply it going forward:
[paste email]"

# Aria saves to ~/.openclaw/memory/writing-style.md
🔀

Multi-Campaign ICP Routing

Route leads to different Instantly campaigns based on ICP sub-segments (e.g., Series A → Campaign A, Series B+ → Campaign B with different messaging) to maximize relevance.

javascript — instantly-router.js
const getCampaignForLead = (lead) => {
  if (lead.funding_stage === 'Series A') return process.env.CAMPAIGN_A;
  if (lead.funding_stage === 'Series B') return process.env.CAMPAIGN_B;
  return process.env.CAMPAIGN_DEFAULT;
};
📱

One-Tap Reply Drafting

When Aria alerts you to a positive reply via Telegram, simply reply "draft". She'll immediately write a context-aware response for you to send in 30 seconds.

📊

Weekly Performance Auto-Reports

Every Friday, Aria pulls Instantly analytics, generates a full performance report, and sends it to your Telegram. No more manual tracking spreadsheets.

Keep Your System Safe & Compliant

🔐 API Key Security

Never hardcode keys in scripts. Use OpenClaw's environment config or system variables. Rotate your Instantly API key monthly for security.

bash — Secure Env
export INSTANTLY_API_KEY="sk_..."
export ANTHROPIC_API_KEY="sk-ant-..."

⚖️ Compliance (GDPR/CAN-SPAM)

Always include an unsubscribe link. Instantly handles CAN-SPAM opt-outs automatically. Ensure you have a legitimate interest basis for B2B outreach.

🔒 Data Privacy & Sovereignty

All lead data lives on your machine in ~/.openclaw/memory/. Nothing is sent to third parties except via your explicit API calls.

Common Issues & Fixes

Issue
Instantly API returning 401 Unauthorized

Fix: Ensure you're using the API key (not the account password). Found in Instantly → Settings → Integrations → API Key. Append as query param: ?api_key=YOUR_KEY

Issue
Aria not responding on Telegram

Fix: Run openclaw status in terminal. If gateway is down, run openclaw start. Check Telegram bot token is still valid at t.me/BotFather.

Issue
Lead research returning empty results

Fix: Check Hunter.io API quota (free = 25 searches/month). Upgrade or switch to Apollo's people search. Verify browser tool isn't being blocked — try adding a delay between requests.

Issue
Emails going to spam

Fix: Ensure sending inbox has been warming up for 2+ weeks in Instantly. Check SPF/DKIM/DMARC records. Reduce daily volume. Avoid spam trigger words in subject lines (Aria should handle this automatically).

Issue
OpenClaw consuming too much RAM

Fix: Reduce browser tool concurrency. In config, set maxBrowserInstances: 1. Process leads sequentially, not in parallel. Recommended: dedicate a Mac Mini or small VPS for 24/7 agent operation.

Next-Level Ideas to Build On

Once your core system is running and generating replies, here's how to scale it further:

🤝

CRM Auto-Update

When a lead replies positively, Aria auto-creates a contact in HubSpot / Notion CRM with full context and timeline metadata.

📅

Calendly Integration

Aria detects "yes" replies and automatically sends your Calendly link with a personalized meeting pitch.

🐦

LinkedIn + Email Multi-channel

Combine Instantly email with LinkedIn connection requests. Aria coordinates both channels seamlessly.

🦞

You Just Received Something Worth $1500+

Ready to Launch Your AI Outreach System?

I build and deploy these exact systems for founders, sales teams, and agencies. Custom ICP setup, Instantly integration, Telegram command center — live in under 30 minutes.

💬 WhatsApp Me to Deploy This 📞 Book a Free 45-Min Call

Need custom skills, private skill repos, or a fully managed outreach agent?
📱 WhatsApp: +91 95338 83661  |  Book a free 45-min call — I respond within hours.