Skip to content
NewSee how

Agency playbook: run many clients with workspaces, roles & per-client reporting

Give each client its own workspace and mailboxes, scope your team with roles and permission groups, run separate campaigns per client, and report per client. All under one organization.

  1. Decide the topology: one org, one workspace per client

    An organization owns billing and members; a workspace is an isolated sending environment inside it (its own mailboxes, campaigns, contacts, and knowledge bases. For an agency, give each client its own workspace under one shared org. Reserve a second organization only for a client whose billing or ownership truly must be separate) ten clients as ten workspaces is manageable; ten orgs is a billing headache you don't need. See Manage Organizations & Workspaces.

  2. Create a workspace for the first client

    Use the switcher in the sidebar and choose Create workspace. Set its profile, and configure the workspace's Default Contact Person: the sender fallback so drafts always have a sane “from” identity even before you've picked a specific sender.

    Create a workspace for the first client
  3. Connect and warm that client's own mailboxes

    Inside the client's workspace, go to Connectors → Add Connector and connect mailboxes on that client's own sending domain. Toggle on Email Warmup for each. Never reuse a mailbox across clients: mixing sending domains mixes reputations and, worse, mixes one client's data into another's sends. See Connect a Mailbox and Email Warm-up Setup.

    Connect and warm that client's own mailboxes
  4. Design least-privilege access with permission groups

    Open Settings → Team → Groups. Beyond the five built-in roles (owner/admin/manager/member/viewer), create a custom group for slices they don't cover: e.g. a “Client SDR” group that reads campaigns and reads/writes contacts, with no billing or team access. You can only grant permissions you hold yourself (the creator ceiling). See Roles & Permission Groups.

    Design least-privilege access with permission groups
  5. Invite the team and scope each person to their client(s)

    On Settings → Team → Invitations, add each teammate's email, assign a role (and custom group if needed), and (critically) set workspace access to only the client workspaces that person actually manages, not “All workspaces.” This is what keeps a contractor on client A from ever seeing client B.

  6. Onboard at scale with invite links or a domain allowlist

    For your own staff joining across many clients, typing every invite is slow. Use the Links tab for a capped/expiring join link, or the Domains tab so anyone signing up with your company's email domain auto-joins up to a max role (member, viewer, or manager: never admin). See Invite & Manage Team Members.

  7. Run each client's campaigns inside its workspace

    Build each client's outreach (typically an Autopilot → Meeting campaign) from inside their workspace. Contacts, knowledge bases, offerings, and campaign history all stay isolated to that workspace, so nothing from client A leaks into client B's contact list or drafts. See Create an Autopilot Meeting Campaign.

  8. Report per client and manage the shared org bill

    Read each workspace's campaign Analytics for that client's report: replies, meetings booked, and sends, scoped to just their workspace. Credits are org-level and shared across every workspace, so watch the org's overall balance in Billing so one client's heavy month doesn't starve another's. See Read Campaign Analytics and Credits, Plans & Billing.

Pro tips

  • Workspaces isolate, orgs separate billing

    Ten clients under one org with ten workspaces is right; ten orgs is a billing/admin nightmare you don't need. Reserve a new org for true billing separation.

  • Set the Default Contact Person first, per workspace

    It's the sender fallback: configure it up front so no client campaign ships with a blank or wrong 'from'.

  • Scope contractors to their workspace only

    Access is per-workspace. A contractor on client A should have zero visibility into client B: set workspace access deliberately, not just a role.

  • You can't out-grant yourself

    The creator ceiling means a custom group never exceeds your own permissions. If a box is greyed out, an owner or admin needs to grant it first.

Frequently asked questions

Separate workspaces or separate orgs per client?

Workspaces, in almost every case: they isolate mailboxes, contacts, and campaigns while sharing one org's billing and team. Use a separate organization only when a client's billing or ownership must truly be separate.

Do clients share a mailbox or domain reputation?

Not if you set it up right: give each client's workspace its own connectors on their own sending domain. Reusing a mailbox across clients mixes reputations and data; don't.

Can a contractor see only their client?

Yes. Access is workspace-scoped: set their invite's workspace access to just that client's workspace, and optionally pair it with a least-privilege custom permission group.

How do I bill clients separately?

Credits are org-level and shared across all workspaces: there's no per-workspace balance. Report each client's usage from their workspace's Analytics, and reach for a separate organization only if billing must truly be separated.

What's a custom group for versus a built-in role?

The five built-in roles (owner/admin/manager/member/viewer) cover most needs. Build a custom group only for a permission slice the roles don't offer: like a client-scoped SDR who can't touch billing.

How do I onboard my whole team fast?

Use an invite link (capped uses, expiring) from the Links tab, or a domain allowlist from the Domains tab so anyone with your company email auto-joins at a set max role.

Where does per-client reporting come from?

Each client workspace's own campaign Analytics: sends, replies, and meetings booked, scoped to that workspace only.

Can one person manage several clients?

Yes: grant that person's invite (or later, their Edit workspace access) access to multiple client workspaces instead of just one.

Getting Started

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.