AgentStack
SKILL verified MIT Self-run

Launch Campaign

skill-mattsezgin-unofficial-smartlead-cli-launch-campaign · by MattSezgin

Pre-flight audit of a Smartlead campaign before going live, then start it. Verifies sequences, mailboxes, leads, schedule, warmup health, and tracking-domain CNAME. Refuses to launch with broken state. Use when the user says they want to launch, start, go live with, or kick off a campaign that's already configured.

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-mattsezgin-unofficial-smartlead-cli-launch-campaign

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

Are you the author of Launch Campaign? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

> Before running: verify exact flag names with smartlead --help. Flag shapes shown below are illustrative — confirm against the actual CLI.

/launch-campaign

You're doing pre-flight checks on a campaign that's been built, then starting it.

What you need from the user

  • Campaign ID to launch
  • (Optional) Permission to auto-fix obvious issues vs. just report them

Pre-flight checklist

Run these in order. If any check fails, surface it and ASK before proceeding.

Check 1 — Campaign exists and is in DRAFTING / PAUSED status

smartlead campaigns get  --output json | jq '{id, name, status}'

If status is ACTIVE already, tell the user and stop.

Check 2 — At least 1 sequence step

smartlead campaigns sequences  --output json | jq 'length'

Should return ≥1. Zero = won't send anything.

Check 3 — At least 1 mailbox assigned

smartlead campaigns email-accounts  --output json | jq 'length'

Should return ≥1. Zero = nothing to send from.

Check 4 — Leads uploaded

smartlead leads list  --output json | jq 'length'

Should return ≥1. Zero = ask user if empty start is intentional.

Check 5 — All assigned mailboxes are warmed up

smartlead campaigns email-accounts  --output json | \
  jq -r '.[].email_account_id' | \
  while read mb_id; do
    smartlead accounts get $mb_id --output json | \
      jq -r --arg id "$mb_id" '{id: $id, warmup: .warmup_details.status, reputation: .warmup_details.warmup_reputation}'
  done

Flag any mailbox with warmup.status != ENABLED or `reputation


Should resolve to `open.sleadtrack.com.`. If empty, link wrapping and open pixels will fail.

### Check 7 — Settings sanity

```bash
smartlead campaigns get  --output json | jq '.settings'

Flag if:

  • enable_ai_esp_matching: true AND campaign has both Gmail+Outlook senders (see docs/learnings/esp-matching-analysis.md)
  • track_settings includes DONT_TRACK_* but recipient list looks audit-aware (Big Tech etc.)
  • Schedule looks wrong (sending on weekends, 24/7 window, etc.)

Check 8 — Schedule timezone matches recipient audience

If campaign timezone is America/New_York but lead list is heavy on EU domains, surface it. Sending at 9 AM ET = 3 PM CEST = late afternoon for EU recipients.

Launch decision

Once all checks pass (or user explicitly waves off warnings):

smartlead campaigns start 

Confirm activation:

smartlead campaigns get  --output json | jq '.status'
# Should now show "ACTIVE"

First-hour monitoring

After launch, tell the user to check back in 1-2 hours:

smartlead campaigns analytics 

What to watch:

  • Bounce rate: if it crosses 5% in the first hour, PAUSE immediately and triage
  • Sends per hour: should match expected throughput from schedule + mailbox count
  • Auto-replies / out-of-office: Smartlead handles these (stop-on-auto-reply default)

If something goes wrong post-launch

To stop sending (drains queued sends — this is what you usually want):

smartlead campaigns stop 

NOT pause — pause doesn't drain queued sends and the analytics endpoint lies about it (see docs/learnings/settings-api-quirks.md quirk 6).

Reference

  • docs/learnings/settings-api-quirks.md — campaign status verbs, pause-drain behavior
  • docs/learnings/esp-matching-analysis.md — why to disable AI ESP matching
  • docs/learnings/mailbox-warmup-best-practices.md — what "warmed up" actually means

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.