mailinapp

Department-Scoped Access Control for Growing Teams

One flat editor/viewer role works fine for a two-to-five-person team, then stops working the moment "team" means separate functional groups with no business reading each other's campaigns or customer threads. Departments add an owner → department lead → member hierarchy on top of the existing roles: project visibility scoped per department, shared mailboxes visible to a whole department, and individual mailboxes private to one person — reachable by the account owner only through a reason-required, fully logged override.

Group teammates into departments so project visibility and shared-mailbox access scope to the group they actually work in. Support, Sales, and Marketing stop reading each other's campaigns and customer threads by default, department leads can invite within their own group without going through the account owner every time, and an individual mailbox stays private unless the owner opens it through a reason-required, logged override.

A MailInApp account that outgrows a handful of people used to have exactly one visibility model: every active editor or viewer saw every project and every shared mailbox the account owned. That's fine for a small team where everyone already sees everything anyway. It stops being fine the moment "team" means separate functional groups — support fielding customer threads, sales running its own campaigns, marketing running its own — with no real business reason for one group to browse another's.

Departments layer on top of existing roles

A department doesn't replace the owner/editor/viewer roles — it scopes what an editor or viewer within it can see. The account owner creates departments from Settings, assigns teammates to one or more, and from that point on a project or shared mailbox tagged with a department is visible only to that department's members plus the owner. A project or mailbox with no department set behaves exactly as it did before: visible to the whole account.

Department leads take invites off the owner's plate

Promoting a teammate to lead for their own department lets them invite new people directly into it — a real delegation, not just a label. A lead's reach stops at the edge of their department: they can't invite into a group they don't run, can't touch billing or credentials, and can't mint another lead. Everything that already stays owner-only — SMTP settings, Stripe Connect, API keys, webhook secrets, team management itself — stays owner-only for a lead too.

Individual mailboxes are private, not un-openable

A claimed inbound address like support@ can be shared with a whole department, or set to individual and assigned to one specific person. An individual mailbox uses a company-owned address for ordinary business correspondence, so a hard technical wall would trade away real business continuity — a departed employee's mailbox becoming permanently unrecoverable company data — for a privacy guarantee the law doesn't actually require for work correspondence on a company domain. Instead, the owner's only way into someone else's individual mailbox is Owner access: pick the mailbox, give a reason, then read it — never reply on the assignee's behalf. The access is logged, and that log is visible to the mailbox's own assignee afterward, not hidden from them.

Everyone accepting an invite sees what it means first

Because a department changes what a teammate can see, and because owner access into an individual mailbox is possible, the invite-acceptance page shows a short, plain-language notice before anyone joins: what their department makes visible, and that owner access is always reason-required and always logged. There's no separate consent flow to configure — accepting the invite means acknowledging the notice.

What this doesn't change

Editor and viewer permissions inside a department stay exactly what they already were — a department-scoped editor can still build, send, and read responses for what they can see; a department-scoped viewer is still read-only. Volume limits, plan tiers, and credential-rotation rules are untouched by any of this — departments are a visibility layer, not a new pricing axis or a new set of write permissions.

Getting started

Create departments that match your org's real structure from Settings → Team, assign teammates to them, and tag new projects with a department from the creation picker. See Departments for the full reference, Team collaboration for how roles and invites work underneath it, and Inbound mailbox for setting up the shared and individual addresses departments scope.

A typical build-and-send sequence

  1. 1

    Create departments that match your org

    Under Settings → Team, add a department per functional group — Support, Sales, Marketing, or whatever actually reflects how your company is structured.

  2. 2

    Assign teammates to their department(s)

    Pick one or more departments per teammate from the member list; someone assigned to none keeps seeing every project, the same as before departments existed.

  3. 3

    Tag projects with a department

    The project creation picker adds a required department step once the account has any departments — an existing untagged project stays visible account-wide.

  4. 4

    Delegate invites to a department lead, optionally

    Promote a trusted teammate to lead for their own department so they can invite new members into it directly, without going through the account owner for every hire.

  5. 5

    Split a shared mailbox address into individual inboxes, optionally

    Set a claimed address like support@ to shared (visible to the whole department) or individual (private to one assignee), for the inbound mailboxes that need it.

Frequently asked questions

What happens to projects and mailboxes that already exist?

Nothing changes until you tag them — a project with no department set, or a mailbox address left as shared with no department, stays visible to the whole account exactly as it did before departments existed. Departments are opt-in scoping, not a default that narrows anything retroactively.

Does the account owner still see everything?

Yes for projects and shared mailboxes — the owner's view is never scoped by department. An individual mailbox is the one exception: the owner can only open someone else's through Owner access, which requires a reason and is logged, never through the ordinary read path.

What can a department lead actually do that a regular member can't?

Invite new teammates into their own department and rename it — nothing more. A lead can't invite into a department they don't lead, can't touch billing or credentials, and can't promote anyone else to lead. Account-level actions like creating or deleting a department itself stay owner-only.

Isn't a private individual mailbox a loophole for hiding company data?

No — an individual mailbox is still a company-owned address used for work (support@ or a named teammate's own address on your domain), not a personal account, so it isn't technically un-openable. It's private by default in the product, and the owner's only path in is a reason-required override that's logged and visible afterward to the mailbox's own assignee — the same reasoning this app already applies to staff access to customer data elsewhere.

Do teammates get told about any of this before they join?

Yes — accepting a team invite shows a plain-language notice first: what their department membership will make visible, and that owner access into an individual mailbox is possible, always reason-required, and always logged. They can't accept the invite without seeing it.

Is department scoping a paid add-on?

No — department count isn't tied to a plan tier; it's a structural feature of team collaboration, available wherever team seats already are.

Build this in the studio

Start on the free plan — every interactive block and the full fallback engine are included on every tier.