setup-outreach-campaign
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesesetup-outreach-campaign
搭建外发邮件营销活动
Set up a complete outbound email campaign in Smartlead: create the campaign, add leads, write a 2-3 email sequence, configure the schedule, and allocate mailboxes.
在Smartlead中搭建完整的外发邮件营销活动:创建活动、添加潜在客户、撰写2-3封邮件序列、配置发送计划并分配邮箱。
Inputs
输入参数
| Input | Required | Default | Description |
|---|---|---|---|
| campaign_name | Yes | -- | Name for the campaign (e.g., "Truewind - Accounting Firms - Feb 2026") |
| campaign_goal | Yes | -- | What outcome the campaign drives (book demos, drive signups, etc.) |
| lead_list | Yes | -- | CSV file path OR person-list JSON from upstream skill |
| value_proposition | Yes | -- | Core pain point or benefit the emails address |
| cta | Yes | -- | Call to action (e.g., "Book a 15-min demo", "Reply to learn more") |
| tone | No | semi-formal | Email tone: casual, semi-formal, formal |
| personalization_angle | No | -- | Hook for personalization (event attendance, job posting, news mention) |
| timezone | No | America/New_York | Timezone for send schedule |
| send_days | No | [1,2,3,4,5] | Days of week to send (0=Sun, 6=Sat) |
| start_hour | No | 08:00 | Start of send window |
| end_hour | No | 18:00 | End of send window |
| max_leads_per_day | No | 20 | Max new leads contacted per day |
| min_time_btw_emails | No | 10 | Minutes between emails from same mailbox |
| num_mailboxes | No | 5 | Number of mailboxes to allocate |
| mailbox_selection | No | auto | "auto" (pick free ones) or "manual" (show list to user) |
| 输入项 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| campaign_name | 是 | -- | 活动名称(例如:"Truewind - Accounting Firms - Feb 2026") |
| campaign_goal | 是 | -- | 活动要达成的结果(预约演示、推动注册等) |
| lead_list | 是 | -- | CSV文件路径或上游skill生成的潜在客户列表JSON |
| value_proposition | 是 | -- | 邮件要解决的核心痛点或传递的核心价值 |
| cta | 是 | -- | 行动号召(例如:"预约15分钟演示"、"回复了解更多") |
| tone | 否 | semi-formal | 邮件语气:casual(随意)、semi-formal(半正式)、formal(正式) |
| personalization_angle | 否 | -- | 个性化切入点(参会经历、招聘信息、新闻提及等) |
| timezone | 否 | America/New_York | 发送计划的时区 |
| send_days | 否 | [1,2,3,4,5] | 发送日期(0=周日,6=周六) |
| start_hour | 否 | 08:00 | 发送窗口开始时间 |
| end_hour | 否 | 18:00 | 发送窗口结束时间 |
| max_leads_per_day | 否 | 20 | 每日触达的新潜在客户上限 |
| min_time_btw_emails | 否 | 10 | 同一邮箱发送邮件的最小间隔(分钟) |
| num_mailboxes | 否 | 5 | 要分配的邮箱数量 |
| mailbox_selection | 否 | auto | "auto"(自动选择空闲邮箱)或"manual"(展示列表供用户选择) |
Setup
前置准备
Requires a Smartlead account with API access.
bash
export SMARTLEAD_API_KEY=your_api_key_hereAll API calls go to with appended.
https://server.smartlead.ai/api/v1?api_key=$SMARTLEAD_API_KEYRate limit: 10 requests per 2 seconds.
需要拥有带API访问权限的Smartlead账户。
bash
export SMARTLEAD_API_KEY=your_api_key_here所有API请求都需访问,并附加参数。
https://server.smartlead.ai/api/v1?api_key=$SMARTLEAD_API_KEY请求限制:每2秒最多10次请求。
Procedure
操作流程
Step 1: Gather Campaign Info
步骤1:收集活动信息
Ask the user the following questions. Group them conversationally — don't dump all at once.
Campaign identity:
- "What is the name for this campaign?" (e.g., "Truewind - Accounting Firms - Feb 2026")
- "What is the goal?" (e.g., book demos, drive trial signups, conference follow-up)
Audience & leads:
- "Who is the target audience?" (ICP: title, company type, size, industry)
- "How are you providing the lead list?" — options: CSV file, output from a prior skill (company-contact-finder, luma-event-attendees), or "I need to find leads first" (chain to company-contact-finder)
Messaging:
- "What is the core value proposition or pain point?"
- "What is the call to action?" (e.g., "Book a 15-min demo")
- "What tone — casual, semi-formal, or formal?"
- "Any personalization angle?" (e.g., reference their job posting, event, industry news)
Schedule:
- "What days should emails be sent?" (default: Mon-Fri)
- "What hours and timezone?" (default: 8am-6pm ET)
- "Max new leads per day?" (default: 20)
- "When should the campaign start?" (default: tomorrow)
Mailboxes:
- "How many mailboxes to allocate?" (default: 5)
- "Auto-select free mailboxes, or show me a list to choose from?"
After gathering answers, present a summary and confirm before proceeding.
向用户询问以下问题,以对话形式逐步收集,不要一次性全部抛出。
活动基本信息:
- "本次活动的名称是什么?"(例如:"Truewind - Accounting Firms - Feb 2026")
- "活动的目标是什么?"(例如:预约演示、推动试用注册、展会跟进)
受众与潜在客户:
- "目标受众是谁?"(理想客户画像:职位、公司类型、规模、行业)
- "你将如何提供潜在客户列表?" — 选项:CSV文件、上游skill输出结果(company-contact-finder、luma-event-attendees),或"我需要先寻找潜在客户"(跳转至company-contact-finder)
邮件内容:
- "核心价值主张或痛点是什么?"
- "行动号召是什么?"(例如:"预约15分钟演示")
- "邮件语气选择——随意、半正式还是正式?"
- "是否有个性化切入点?"(例如:提及对方的招聘信息、参会经历、行业新闻)
发送计划:
- "邮件应该在周几发送?"(默认:周一至周五)
- "发送时段及时区?"(默认:美国东部时间早8点至晚6点)
- "每日触达的新潜在客户上限是多少?"(默认:20)
- "活动何时开始?"(默认:次日)
邮箱分配:
- "要分配多少个邮箱?"(默认:5)
- "自动选择空闲邮箱,还是展示列表供我手动选择?"
收集完所有答案后,向用户展示汇总信息并确认无误后再继续。
Step 2: Create the Campaign
步骤2:创建活动
POST https://server.smartlead.ai/api/v1/campaigns/create?api_key=$SMARTLEAD_API_KEY
Body:
{
"name": "<campaign_name>",
"client_id": null
}Response:
json
{
"ok": true,
"id": 3023,
"name": "Test email campaign",
"created_at": "2022-11-07T16:23:24.025929+00:00"
}Capture from . All subsequent calls use this.
campaign_ididPOST https://server.smartlead.ai/api/v1/campaigns/create?api_key=$SMARTLEAD_API_KEY
请求体:
{
"name": "<campaign_name>",
"client_id": null
}响应示例:
json
{
"ok": true,
"id": 3023,
"name": "Test email campaign",
"created_at": "2022-11-07T16:23:24.025929+00:00"
}从响应的字段中获取,后续所有请求都将使用该ID。
idcampaign_idStep 3: Find and Allocate Mailboxes
步骤3:查找并分配邮箱
This step determines which mailboxes are available and assigns them to the campaign.
此步骤用于确定可用邮箱并将其分配给活动。
3a: Fetch all email accounts
3a:获取所有邮件账户
GET https://server.smartlead.ai/api/v1/email-accounts/?api_key=$SMARTLEAD_API_KEY&offset=0&limit=100Returns a list of all email accounts with , , , , , , .
idfrom_emailfrom_namedaily_sent_countwarmup_detailsis_smtp_successis_imap_successGET https://server.smartlead.ai/api/v1/email-accounts/?api_key=$SMARTLEAD_API_KEY&offset=0&limit=100返回所有邮件账户列表,包含、、、、、、字段。
idfrom_emailfrom_namedaily_sent_countwarmup_detailsis_smtp_successis_imap_success3b: Identify which mailboxes are currently in use
3b:识别当前已被使用的邮箱
Fetch all campaigns:
GET https://server.smartlead.ai/api/v1/campaigns?api_key=$SMARTLEAD_API_KEYFor each campaign with = or , fetch its email accounts:
status"ACTIVE""STARTED"GET https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEYBuild a set of all values currently assigned to active campaigns.
email_account_id获取所有活动:
GET https://server.smartlead.ai/api/v1/campaigns?api_key=$SMARTLEAD_API_KEY对于每个为或的活动,获取其关联的邮件账户:
status"ACTIVE""STARTED"GET https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEY构建一个集合,包含所有已分配给活跃活动的。
email_account_id3c: Filter for free mailboxes
3c:筛选空闲邮箱
A mailbox is "free" if:
- Its is NOT in the active-campaign set from 3b
id - = true AND
is_smtp_success= true (account is functional)is_imap_success
Sort free mailboxes by ascending (prefer coolest/least-used mailboxes).
daily_sent_count满足以下条件的邮箱为"空闲":
- 其不在步骤3b中得到的活跃活动邮箱集合内
id - = true 且
is_smtp_success= true(账户功能正常)is_imap_success
按升序排序空闲邮箱(优先选择发送量最少的冷邮箱)。
daily_sent_count3d: Select and assign
3d:选择并分配邮箱
If = "auto": select the first N free mailboxes.
mailbox_selectionIf = "manual": display all accounts as a table (name, email, daily_sent_count, status) and let the user pick.
mailbox_selectionIf fewer than N free mailboxes are available, tell the user: "Only X free mailboxes found. Proceed with X, or pick some currently-in-use mailboxes?"
Assign selected mailboxes:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEY
Body:
{
"email_account_ids": [101, 204, 305, 412, 518]
}如果 = "auto":选择前N个空闲邮箱。
mailbox_selection如果 = "manual":以表格形式展示所有账户(名称、邮箱地址、每日发送量、状态),供用户选择。
mailbox_selection如果可用的空闲邮箱数量不足N个,告知用户:"仅找到X个空闲邮箱。是否使用这X个,或选择部分已在使用的邮箱?"
分配选中的邮箱:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEY
请求体:
{
"email_account_ids": [101, 204, 305, 412, 518]
}Step 4: Ingest Leads
步骤4:导入潜在客户
4a: Parse the lead list
4a:解析潜在客户列表
From CSV: Read the file, map columns to Smartlead fields. Flexible column matching:
- (required) — also matches
email,Emailemail_address - — also matches
first_name,firstname,firstFirst Name - — also matches
last_name,lastname,lastLast Name - — also matches
company_name,company,organizationCompany - Any extra columns become
custom_fields
From upstream skill (person-list JSON): Map fields:
first_name <- name.split()[0]
last_name <- name.split()[1:]
email <- email
company_name <- company
custom_fields <- { "title": title, "linkedin_url": linkedin_url }来自CSV文件: 读取文件,将列映射到Smartlead的字段。支持灵活的列匹配:
- (必填)—— 也匹配
email、Emailemail_address - —— 也匹配
first_name、firstname、firstFirst Name - —— 也匹配
last_name、lastname、lastLast Name - —— 也匹配
company_name、company、organizationCompany - 其余列将作为
custom_fields
来自上游skill(person-list JSON): 字段映射规则:
first_name <- name.split()[0]
last_name <- name.split()[1:]
email <- email
company_name <- company
custom_fields <- { "title": title, "linkedin_url": linkedin_url }4b: Validate and deduplicate
4b:验证并去重
- Remove rows without a valid email
- Deduplicate by email (keep first occurrence)
- Report: total rows, valid, invalid, duplicates removed
- 删除无有效邮箱的行
- 按邮箱地址去重(保留首次出现的记录)
- 向用户汇报:总行数、有效行数、无效行数、去重数量
4c: Upload in batches
4c:分批上传
Smartlead accepts max 100 leads per call. Chunk the list and call for each batch:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads?api_key=$SMARTLEAD_API_KEY
Body:
{
"lead_list": [
{
"first_name": "Jane",
"last_name": "Smith",
"email": "jane@example.com",
"company_name": "Acme Corp",
"custom_fields": {"title": "CFO"}
}
],
"settings": {
"ignore_global_block_list": false,
"ignore_unsubscribe_list": false,
"ignore_duplicate_leads_in_other_campaign": false
}
}Response:
json
{
"ok": true,
"upload_count": 95,
"total_leads": 100,
"already_added_to_campaign": 2,
"duplicate_count": 1,
"invalid_email_count": 2,
"unsubscribed_leads": 0
}Report totals across all batches to the user.
Smartlead每次请求最多接受100个潜在客户。将列表分块后逐批调用接口:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads?api_key=$SMARTLEAD_API_KEY
请求体:
{
"lead_list": [
{
"first_name": "Jane",
"last_name": "Smith",
"email": "jane@example.com",
"company_name": "Acme Corp",
"custom_fields": {"title": "CFO"}
}
],
"settings": {
"ignore_global_block_list": false,
"ignore_unsubscribe_list": false,
"ignore_duplicate_leads_in_other_campaign": false
}
}响应示例:
json
{
"ok": true,
"upload_count": 95,
"total_leads": 100,
"already_added_to_campaign": 2,
"duplicate_count": 1,
"invalid_email_count": 2,
"unsubscribed_leads": 0
}向用户汇报所有批次的汇总统计结果。
Step 5: Craft the Email Sequence
步骤5:撰写邮件序列
Write a 2-3 email sequence based on the user's inputs from Step 1. Default structure:
Email 1 — Cold intro (Day 0)
- Subject: short, curiosity-driven or relevant to their pain
- Body: 3-5 sentences. Acknowledge their world, surface the problem, introduce the solution briefly, clear CTA
- Personalize with and any custom fields
{{first_name}}
Email 2 — Follow-up (Day 3)
- Subject: different angle (metric, case study, specific outcome)
- Body: 2-4 sentences. Add value, restate CTA
- Leave subject blank to send as same-thread reply
Email 3 — Breakup (Day 8)
- Subject: brief, direct ("Still relevant?", "Closing the loop")
- Body: 2-3 sentences. Acknowledge they're busy, keep door open, soft CTA
Present the full sequence to the user as a formatted table. Wait for approval or edits.
After user approves, save:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/sequences?api_key=$SMARTLEAD_API_KEY
Body:
{
"sequences": [
{
"seq_number": 1,
"seq_delay_details": { "delay_in_days": 0 },
"seq_variants": [
{
"subject": "Subject line here",
"email_body": "<p>Email body as HTML</p>",
"variant_label": "A"
}
]
},
{
"seq_number": 2,
"seq_delay_details": { "delay_in_days": 3 },
"seq_variants": [
{
"subject": "",
"email_body": "<p>Follow-up body</p>",
"variant_label": "A"
}
]
},
{
"seq_number": 3,
"seq_delay_details": { "delay_in_days": 5 },
"seq_variants": [
{
"subject": "",
"email_body": "<p>Breakup body</p>",
"variant_label": "A"
}
]
}
]
}Note: blank on emails 2+ makes them send as replies in the same thread.
subject根据步骤1收集的用户输入,撰写2-3封邮件的序列。默认结构如下:
邮件1 — 陌生开发邮件(第0天)
- 主题:简短、引发好奇或与痛点相关
- 正文:3-5句话。提及对方的业务场景,指出痛点,简要介绍解决方案,明确行动号召
- 使用及自定义字段进行个性化设置
{{first_name}}
邮件2 — 跟进邮件(第3天)
- 主题:不同角度(数据指标、案例研究、具体成果)
- 正文:2-4句话。提供附加价值,重申行动号召
- 留空主题以同一线程回复形式发送
邮件3 — 收尾邮件(第8天)
- 主题:简洁直接("仍感兴趣吗?"、"结束跟进")
- 正文:2-3句话。体谅对方忙碌,保持后续沟通的可能性,设置温和的行动号召
将完整的邮件序列以格式化表格形式展示给用户,等待用户确认或修改。
用户确认后,保存邮件序列:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/sequences?api_key=$SMARTLEAD_API_KEY
请求体:
{
"sequences": [
{
"seq_number": 1,
"seq_delay_details": { "delay_in_days": 0 },
"seq_variants": [
{
"subject": "Subject line here",
"email_body": "<p>Email body as HTML</p>",
"variant_label": "A"
}
]
},
{
"seq_number": 2,
"seq_delay_details": { "delay_in_days": 3 },
"seq_variants": [
{
"subject": "",
"email_body": "<p>Follow-up body</p>",
"variant_label": "A"
}
]
},
{
"seq_number": 3,
"seq_delay_details": { "delay_in_days": 5 },
"seq_variants": [
{
"subject": "",
"email_body": "<p>Breakup body</p>",
"variant_label": "A"
}
]
}
]
}注意:邮件2及后续邮件留空将以同一线程回复的形式发送。
subjectStep 6: Set the Schedule
步骤6:设置发送计划
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/schedule?api_key=$SMARTLEAD_API_KEY
Body:
{
"timezone": "America/New_York",
"days_of_the_week": [1, 2, 3, 4, 5],
"start_hour": "08:00",
"end_hour": "18:00",
"min_time_btw_emails": 10,
"max_new_leads_per_day": 20,
"schedule_start_time": "2026-02-25T00:00:00.000Z"
}days_of_the_weekPOST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/schedule?api_key=$SMARTLEAD_API_KEY
请求体:
{
"timezone": "America/New_York",
"days_of_the_week": [1, 2, 3, 4, 5],
"start_hour": "08:00",
"end_hour": "18:00",
"min_time_btw_emails": 10,
"max_new_leads_per_day": 20,
"schedule_start_time": "2026-02-25T00:00:00.000Z"
}days_of_the_weekStep 7: Confirm and Optionally Start
步骤7:确认并可选启动活动
Present a full summary:
Campaign: "Truewind - Accounting Firms - Feb 2026"
Campaign ID: 12345
Leads added: 87 (3 rejected as duplicates)
Email sequence: 3 emails (Day 0, Day 3, Day 8)
Schedule: Mon-Fri, 8am-6pm ET, starting Feb 25
Mailboxes: jane@truewind.ai, alex@truewind.ai (+3 more)
Status: DRAFTEDAsk: "Do you want to START the campaign now, or leave it as a draft?"
If start:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/status?api_key=$SMARTLEAD_API_KEY
Body:
{ "status": "START" }If draft: skip. User can start from Smartlead UI later.
向用户展示完整的活动汇总:
活动名称:"Truewind - Accounting Firms - Feb 2026"
活动ID:12345
添加的潜在客户:87个(3个因重复被拒绝)
邮件序列:3封邮件(第0天、第3天、第8天)
发送计划:周一至周五,美国东部时间早8点至晚6点,2月25日开始
分配的邮箱:jane@truewind.ai、alex@truewind.ai(及另外3个)
状态:已草稿询问用户:"是否立即启动活动,还是保留为草稿?"
如果选择启动:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/status?api_key=$SMARTLEAD_API_KEY
请求体:
{ "status": "START" }如果选择草稿:跳过此步骤,用户后续可在Smartlead界面中启动活动。
Optional: Update Campaign Settings
可选操作:更新活动设置
If the user wants to configure tracking or stop conditions, use:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/settings?api_key=$SMARTLEAD_API_KEY
Body:
{
"track_settings": ["DONT_TRACK_EMAIL_OPEN"],
"stop_lead_settings": "REPLY_TO_AN_EMAIL",
"send_as_plain_text": false,
"follow_up_percentage": 100,
"enable_ai_esp_matching": true
}Allowed : , ,
Allowed : , ,
track_settingsDONT_TRACK_EMAIL_OPENDONT_TRACK_LINK_CLICKDONT_TRACK_REPLY_TO_AN_EMAILstop_lead_settingsREPLY_TO_AN_EMAILCLICK_ON_A_LINKOPEN_AN_EMAIL如果用户想要配置追踪或停止条件,使用以下接口:
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/settings?api_key=$SMARTLEAD_API_KEY
请求体:
{
"track_settings": ["DONT_TRACK_EMAIL_OPEN"],
"stop_lead_settings": "REPLY_TO_AN_EMAIL",
"send_as_plain_text": false,
"follow_up_percentage": 100,
"enable_ai_esp_matching": true
}允许的值:、、
允许的值:、、
track_settingsDONT_TRACK_EMAIL_OPENDONT_TRACK_LINK_CLICKDONT_TRACK_REPLY_TO_AN_EMAILstop_lead_settingsREPLY_TO_AN_EMAILCLICK_ON_A_LINKOPEN_AN_EMAILSmartlead API Reference
Smartlead API参考
All endpoints use base URL with query param.
https://server.smartlead.ai/api/v1?api_key=| Endpoint | Method | Purpose |
|---|---|---|
| POST | Create a new campaign |
| GET | List all campaigns |
| GET | Get campaign by ID |
| POST | Set campaign schedule |
| POST | Update tracking/stop settings |
| POST | Save email sequences |
| POST | Add leads (max 100 per call) |
| GET | List mailboxes on a campaign |
| POST | Assign mailboxes to campaign |
| POST | Change campaign status (START/PAUSED/STOPPED) |
| GET | Top-level campaign analytics |
| GET | List all email accounts (offset/limit) |
所有接口的基础URL为,需附加参数。
https://server.smartlead.ai/api/v1?api_key=| 接口地址 | 请求方法 | 用途 |
|---|---|---|
| POST | 创建新活动 |
| GET | 获取所有活动列表 |
| GET | 根据ID获取活动详情 |
| POST | 设置活动发送计划 |
| POST | 更新追踪/停止条件设置 |
| POST | 保存邮件序列 |
| POST | 添加潜在客户(每次最多100个) |
| GET | 获取活动关联的邮箱列表 |
| POST | 为活动分配邮箱 |
| POST | 修改活动状态(START/PAUSED/STOPPED) |
| GET | 获取活动的核心分析数据 |
| GET | 获取所有邮件账户列表(支持偏移量/数量限制) |
Example Prompts
示例指令
- "Set up a Smartlead campaign for Truewind targeting accounting firms"
- "Create an outreach campaign — I have a CSV of leads"
- "Launch a cold email campaign to CFOs at mid-market companies"
- "Set up a 3-email sequence in Smartlead and allocate 5 free mailboxes"
- "为Truewind搭建一个针对会计事务所的Smartlead活动"
- "创建一个外发邮件活动——我有一个潜在客户CSV文件"
- "启动针对中型企业CFO的陌生邮件营销活动"
- "在Smartlead中搭建3封邮件的序列,并分配5个空闲邮箱"
Metadata
元数据
yaml
metadata:
requires:
env: ["SMARTLEAD_API_KEY"]
cost: "Free (Smartlead API included with plan that has API access)"yaml
metadata:
requires:
env: ["SMARTLEAD_API_KEY"]
cost: "免费(Smartlead API包含在带API访问权限的套餐中)"