Install
$ agentstack add skill-mattsezgin-unofficial-smartlead-cli-create-campaign ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
> Before running: verify exact flag names with smartlead --help. Flag shapes shown below are illustrative — confirm against the actual CLI.
/create-campaign
You're walking the user through creating a brand-new Smartlead campaign end-to-end.
What you need from the user
Ask these one at a time (don't overwhelm with a 10-question form):
- Campaign name — e.g., "Q1 Founders Outbound"
- Client (optional) — if they run a multi-tenant Smartlead account, which client this campaign belongs to. Skip if not applicable.
- Target audience size — rough lead count. Drives mailbox sizing.
- Lead source — do they have a CSV ready, or should we set up the campaign empty?
- Sender mailboxes — by tag, by ID, or "use all my warmed-up mailboxes"
- Schedule — timezone, sending window (default: 9-5 weekdays in the user's TZ)
The 6 setup steps
Step 1 — Create the campaign shell
smartlead campaigns create --name "" \
${CLIENT_ID:+--client-id $CLIENT_ID}
Save the returned campaign_id.
Step 2 — Set the schedule
smartlead campaigns schedule \
--timezone "America/New_York" \
--days 1,2,3,4,5 \
--start-hour 09:00 \
--end-hour 17:00 \
--min-time-between-emails 10 \
--max-new-leads-per-day 50
Defaults to weekday business hours unless the user specifies otherwise. days: 0=Sunday through 6=Saturday.
Step 3 — Settings (deliverability-safe defaults)
smartlead campaigns settings \
--no-track-email-open \
--no-track-link-click \
--no-ai-esp-matching \
--stop-on-reply \
--stop-on-auto-reply
Why these defaults:
- Open/click tracking OFF → plain-text feel, fewer spam signals (see
docs/learnings/mailbox-warmup-best-practices.md) - AI ESP matching OFF → it routes Google recipients wrong (see
docs/learnings/esp-matching-analysis.md) - Stop on reply → don't keep emailing people who already replied
Ask the user if they want to override any of these.
Step 4 — Add the email sequence
Ask the user for their sequence — usually 2-4 emails. If they have a draft, paste it. Otherwise offer a starter template.
smartlead campaigns sequences --add-step \
--seq-number 1 \
--subject "{{personalization_hook}}" \
--body @email1.html \
--delay-days 0
smartlead campaigns sequences --add-step \
--seq-number 2 \
--subject "Re: {{previous_subject}}" \
--body @email2.html \
--delay-days 4
(Same for each follow-up step.)
Step 5 — Assign sender mailboxes
# By IDs
smartlead campaigns email-accounts --add --ids ,,
# Or by tag
smartlead accounts tags get --tag-id --output json | jq -r '.[].id' > mailboxes.txt
smartlead campaigns email-accounts --add --ids-file mailboxes.txt
Sizing rule of thumb: at golden config (15 sends/mailbox/day), 1 mailbox can handle ~75 leads/week. For 1,000 leads, plan ~15 mailboxes.
Step 6 — Upload leads
If the user has a CSV ready, invoke /upload-leads to handle this step. Otherwise leave the campaign without leads — they can add them later.
Pre-launch checklist (before starting)
Before invoking smartlead campaigns start , verify:
- ✅ At least 1 sequence step exists
- ✅ At least 1 mailbox assigned
- ✅ Leads uploaded (or user confirms empty start is OK)
- ✅ Schedule + settings are sane
- ✅ All assigned mailboxes have completed warmup (
/audit-mailbox-config)
If any check fails, surface it. Don't auto-fix without asking.
Start the campaign
smartlead campaigns start
Or if they want to schedule a future start:
smartlead campaigns schedule --schedule-start-time "2026-06-01T13:00:00Z"
smartlead campaigns start
After launch — what to monitor
Tell the user to check back in 24-48 hours with:
smartlead campaigns analytics— sends + bounce rate/check-deliverability— full audit
If bounce rate >5% in the first day, pause and triage.
Reference
docs/learnings/campaign-cloning-runbook.md— full 6-step API detailsdocs/learnings/settings-api-quirks.md— field translation gotchasdocs/learnings/mailbox-warmup-best-practices.md— sender pool health
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: MattSezgin
- Source: MattSezgin/unofficial-smartlead-cli
- License: MIT
- Homepage: https://github.com/MattSezgin/unofficial-smartlead-cli
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.