Install Smartlead Inbox Manager
Pick your agent. Every command is ready to paste.
npx skills add growthenginenowoslawski/coldoutboundskills --skill smartlead-inbox-managerThe open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads smartlead-inbox-manager when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the smartlead-inbox-manager skill”. In Codex, type $smartlead-inbox-manager.
The skill itself
SKILL.md
Smartlead Inbox Manager
Zapmail hands you hundreds of new inboxes. Smartlead needs them configured: warmup enabled with the right ramp, signatures set so emails don't look bare, tags applied so you know which are active vs insurance, and health monitored so dead inboxes get recycled.
This skill does all of that via the Smartlead API.
Core operations
| Operation | What it does | Script |
|---|---|---|
| Enable warmup | Turns on warmup with correct ramp (start 1/day, +5/day up to 40/day) | set-warmup.ts --mode=enable |
| Disable warmup | Turns off warmup (use for insurance inboxes) | set-warmup.ts --mode=disable |
| Set signatures | Bulk-applies a signature template to inboxes | set-signatures.ts |
| Tag as active | Adds the "active" tag | tag-inboxes.ts --tag=active |
| Tag as insurance | Adds the "insurance" tag | tag-inboxes.ts --tag=insurance |
| Health dashboard | Lists all inboxes with warmup status, reputation, daily sent | list-health.ts |
Active vs insurance (the tagging convention)
Not every inbox should send all the time. A common pattern:
- Active inboxes — currently sending in live campaigns. Warmup OFF (or minimal) to prioritize real sends.
- Insurance inboxes — warmed but idle, held in reserve. Warmup ON to maintain reputation. Swap in when an active inbox burns out.
Tags are how you track this at scale. Filter by tag in Smartlead UI or via API.
Inputs
Every script reads:
SMARTLEAD_API_KEY(env var)- Inbox selector:
--ids=1,2,3OR--domain=example.comOR--tag=insuranceOR--all - Operation-specific flags (see each script)
Warmup ramp settings
Default warmup config for a NEW inbox (week 1-4 of warmup period):
{
"warmup_enabled": "true",
"total_warmup_per_day": 40,
"daily_rampup": 5,
"reply_rate_percentage": "20"
}
total_warmup_per_day: max emails/day the inbox sends in warmup network (peak)daily_rampup: increment per day (day 1 = 1, day 2 = 6, day 3 = 11, etc. up to the cap)reply_rate_percentage: how often warmup peers reply (20% is realistic)
For INSURANCE inboxes (maintaining reputation long-term):
{
"warmup_enabled": "true",
"total_warmup_per_day": 15,
"daily_rampup": 0,
"reply_rate_percentage": "20"
}
Lower volume, no ramp — just keeps the inbox warm.
For ACTIVE inboxes (currently in live campaigns):
{
"warmup_enabled": "false"
}
Warmup off so the daily send budget goes to real prospects.
Signature template
The default template, applied in bulk via set-signatures.ts, is:
{from_name}
{title}
{company}
{address}
Rendered (for example):
Jane Smith
Founder
Acme
123 Main St, Suite 400, Austin, TX 78701
Where each value comes from:
{from_name}— the inbox's ownfrom_namefield if set (different personas per inbox), elseSENDER_FIRST_NAME + SENDER_LAST_NAMEfrom.env{title}—SENDER_TITLEenv var{company}—SENDER_COMPANY_NAMEenv var{address}—SENDER_PHYSICAL_ADDRESSenv var (recommended — a real mailing address in the footer keeps you on the right side of CAN-SPAM and similar rules)
Required .env entries for the default template:
SENDER_FIRST_NAME=Jane
SENDER_LAST_NAME=Smith
SENDER_TITLE=Founder
SENDER_COMPANY_NAME=Acme
SENDER_PHYSICAL_ADDRESS=123 Main St, Suite 400, Austin, TX 78701
Custom template override:
# Pass inline (use \n for newlines)
npx tsx scripts/set-signatures.ts --all --template="Cheers,\n{from_name}\n{title}\n{company}\n{address}"
# Or from a file
npx tsx scripts/set-signatures.ts --all --template-file=./my-signature.txt
Available placeholders: {from_name}, {from_email}, {domain}, {title}, {company}, {address}.
Email body order in campaigns:
In Smartlead sequences, always end the body with %signature% — Smartlead injects the inbox's signature there. Order:
<body content>
<PS unsubscribe line>
%signature%
This puts %signature% (with name + title + company + address) on the bottom, so every inbox sends with a real mailing address in the footer.
Health dashboard output
list-health.ts prints a CSV + summary:
email warmup reputation sent_today health_status
john@example.co on good 18 healthy
jane@example.co on fair 5 warming
sales@other.co off n/a 28 active
support@other.co on bad 0 blocked
Summary:
Total inboxes: 80
Warmup on: 50
Active (warmup off): 28
Blocked/failed: 2
Reputation:
Good: 65
Fair: 10
Bad: 3
Unknown: 2
Action items:
- 2 inboxes blocked — run /email-deliverability-audit
- 3 inboxes with "bad" reputation — consider pausing
Common workflows
Day 1 after Zapmail provisioning
# 1. Enable warmup on all newly created inboxes
npx tsx scripts/set-warmup.ts --mode=enable --tag=new --warmup-per-day=40 --ramp=5
# 2. Set signatures
npx tsx scripts/set-signatures.ts --tag=new --template="Best,\n{from_name}"
# 3. Tag them as insurance (they aren't active yet — warmup for 2 weeks first)
npx tsx scripts/tag-inboxes.ts --tag=new --add-tag=insurance
npx tsx scripts/tag-inboxes.ts --tag=new --remove-tag=new
Activating insurance inboxes into a live campaign
# 1. Identify warm insurance inboxes with good reputation
npx tsx scripts/list-health.ts --tag=insurance --filter=reputation:good --out=activate-candidates.csv
# 2. Flip them to active
npx tsx scripts/tag-inboxes.ts --ids-from-csv=activate-candidates.csv --add-tag=active --remove-tag=insurance
# 3. Disable warmup (they're sending for real now)
npx tsx scripts/set-warmup.ts --mode=disable --tag=active
Weekly health check
npx tsx scripts/list-health.ts --all --out=health-$(date +%Y-%m-%d).csv
Review the action items. Replace blocked inboxes.
When to retire an inbox
This skill is the mechanics of retiring an inbox. The decision belongs to
/inbox-lifecycle-manager, which applies the full ladder — age guard, send floors, bounce fork,
and a check that you have a warmed reserve to swap in before you take capacity away.
The cancel line is the 1% rule: reply rate <1% over 200+ sends (or zero replies on 150+), on a domain at least 30 days old. The floors do the protecting, not a softer threshold.
Three rules that matter here, because it is easy to retire the wrong thing from this skill:
- ⛔ Retire whole domains, never single inboxes. Mailbox providers judge reputation at the domain level. Keeping two "good" inboxes on a domain you declared burned means the good ones inherit the bad one's reputation, and you are still sending from a domain you condemned.
- ⛔ Never retire a domain under 30 days old, at any reply rate. It hasn't finished ramping.
- ⛔ Never retire on under 200 sends. Below that floor a 0% reply rate cannot distinguish a burned inbox from an unlucky week.
Once /inbox-lifecycle-manager has produced an approved plan, execute it here:
# actions.csv comes from /inbox-lifecycle-manager — reviewed and explicitly approved
npx tsx scripts/tag-inboxes.ts --domain=burned-domain.co --add-tag=retired --remove-tag=active
npx tsx scripts/set-warmup.ts --mode=disable --domain=burned-domain.co
Snapshot the current tags before you start — nothing here records prior state, and without a
snapshot there is no clean undo. Read the tags back afterwards; a 200 is not proof.
Common gotchas
- Warmup settings are per-inbox. There's no global setting. Scripts loop and hit each inbox individually.
- Rate-limiting. Smartlead allows ~33 req/sec. The scripts use 5 concurrent by default. Don't crank this higher without testing.
- Warmup blocked. If
is_warmup_blocked: true, the inbox is flagged (usually for spam-like behavior in warmup). Manual investigation needed. - Tags have no delete endpoint in some Smartlead versions — tags can only be ADDED. To "remove" a tag, replace the full tag list with a new one that omits it. The script handles this automatically.
- Signature formatting. HTML signatures can break rendering across Gmail/Outlook/Apple Mail. Keep it plain text or use minimal
<br>tags. Test in Gmail/Outlook after setting. - Warmup ramp accumulates. If you set
daily_rampup: 5, the inbox sends 1 on day 1, 6 on day 2, 11 on day 3... up tototal_warmup_per_day. To reset (e.g. after a break), disable then re-enable.
What to do next
If you just provisioned new inboxes: enable warmup (set-warmup.ts --mode=enable), apply signatures (set-signatures.ts), tag as insurance, then wait 2 weeks for warmup. After 2 weeks, promote insurance → active.
If inboxes are already warm: proceed to list-building (/prospeo-full-export, /disco-like, etc.) using active-tagged inboxes.
Or wait: if the health dashboard shows bad-reputation inboxes, run /inbox-lifecycle-manager
to decide which ones actually warrant retirement (and what replaces their capacity) before
launching a new campaign.
Related skills
/zapmail-domain-setup-public— creates the inboxes this skill configures/email-deliverability-audit— when health dashboard shows problems/inbox-lifecycle-manager— decides which inboxes to retire, promote, or buy; this skill executes it/smartlead-api— underlying API reference
Scripts
scripts/set-warmup.ts— enable/disable warmup, configure rampscripts/set-signatures.ts— bulk signature settingscripts/tag-inboxes.ts— add/remove tagsscripts/list-health.ts— health dashboard CSV + summaryscripts/_lib.ts— shared: API client, inbox selector parser, concurrency
Tips for Smartlead Inbox Manager
- • Start a fresh session after installing so your agent picks up the new skill.
- • This skill ships scripts. Read them before the first run, and run it in a project without secrets first.
- • It is part of a pack with 40 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Smartlead Inbox Manager
What does the Smartlead Inbox Manager skill do?
Programmatic inbox management for Smartlead. Enable/disable warmup with correct ramp settings, set signatures in bulk, tag inboxes (active vs insurance), and pull inbox health dashboards. Use after creating a new batch of inboxes via /zapmail-domain-setup-public, or when managing an existing Smartlead account at scale. Triggers on "turn on warmup", "set signatures", "tag inboxes", "inbox health", "set up new inboxes".
How do I install Smartlead Inbox Manager?
Run "npx skills add growthenginenowoslawski/coldoutboundskills --skill smartlead-inbox-manager" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Smartlead Inbox Manager work in Cursor and Codex?
Yes. Smartlead Inbox Manager uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
Is Smartlead Inbox Manager free?
Smartlead Inbox Manager is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.
Who made Smartlead Inbox Manager?
Smartlead Inbox Manager is published by growthenginenowoslawski in the growthenginenowoslawski/coldoutboundskills repository, together with 39 other skills.


