Skip to content
NewSee how

Work the draft approval queue

When a campaign requires approval, review AI drafts in the Inbox's Needs Approval tab and approve, edit, or reject each one. From the app or the CLI.

  1. Require approval first

    This queue only fills when a campaign's content approval is set to require-approve; otherwise drafts auto-send without stopping here.

  2. Open Needs Approval

    In the Inbox, click the Needs Approval tab. Its amber badge shows how many drafts are waiting.

    Open Needs Approval
  3. Read a pending draft

    Open a thread. The outbound bubble shows “Awaiting your approval” with Approve, Edit, and Reject actions.

  4. Approve

    Click Approve to release the draft for sending.

  5. Edit before approving

    Click Edit to fix the body inline. The subject line is intentionally locked: changing it mid-thread breaks SMTP threading. Approve once you're happy with the edit.

  6. Reject with a reason

    Click Reject and write what should change (at least 5 characters, up to 500). The AI uses your note to regenerate the draft.

  7. Clear the queue via CLI (optional)

    Prefer the terminal? Use inbox approve-draft / inbox reject-draft for the same actions.

Pro tips

  • Reject with a specific instruction

    “Cut the second paragraph” or “warmer opener” gives the AI something concrete to regenerate from: vague rejections waste a round-trip.

  • Edit for tweaks, Reject for a rethink

    Editing keeps the same draft with your fix applied; rejecting throws it out and asks for a fresh one.

  • Subject line is locked on purpose

    Changing it mid-thread breaks SMTP threading: refine subjects in the campaign, not the queue.

  • Script the queue at scale

    Clear approvals from the CLI with `inbox approve-draft` / `reject-draft` and fold review into an existing workflow.

Frequently asked questions

Why do I have drafts waiting for approval?

The campaign's content approval is set to require-approve, so each AI draft needs a human OK before it sends.

Where's the queue?

The Inbox's Needs Approval tab, marked with an amber count badge.

What can I do with a pending draft?

Approve it, edit the body inline, or reject it with a note for the AI to regenerate.

Can I edit the subject line?

No: the subject is locked in the inline editor to preserve email threading. Change subjects in the campaign.

Does rejecting need a reason?

Yes: at least 5 characters, up to 500. The reason tells the AI what to fix on the next draft.

What happens after I approve?

The draft is released and sends on its schedule; an approved-but-unsent draft can still be edited until it goes out.

Can I approve or reject from the CLI?

Yes: inbox approve-draft and inbox reject-draft mirror the in-app actions.

Inbox & Replies

Outreach that keeps going after you log off.Leads, emails, follow-ups and replies, handled.

Connect unlimited mailboxes and let AI agents find leads, write each email and follow up. Or send your own templates in manual mode. From $29/mo.

$1 for 3 days · Cancel anytime · No contract

Install with AI

Your coding agent sets up the FirstSales CLI and skills for you.

Prompt for Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.