---
title: Invite your team to SquadBear
description: Create accounts directly, send email invites, or let people join automatically by company domain
order: 2
---

Three ways a person gets an employee record - created directly, invited by email, or
auto-joined by a verified domain. The first two start at **People → People → Add
employee**; the third at **Workspace settings → Workspace**.

## Create directly, or send an invite

**Add employee** opens on **Send an invite** - the person types their own name when they
accept, and the emailed link proves the address. **Create now** is for provisioning ahead
of someone's own sign-up: it asks for full name, start date, job title, manager and
country up front; an invite leaves those for the profile.

Direct create, invite acceptance and domain join each run the accrual engine
synchronously, so the prorated balance grant lands with the record immediately. Both
sending and redeeming check the plan's seat cap and return a 402 past it; a blocked
redemption leaves the invitation pending until an upgrade.

## Pending invitations

An invite's link is valid for **7 days**. Pending invitations sit in their own table above
the directory on **People → People**, with **Resend** and **Revoke** per row; Resend
extends the invitation another 7 days and sends the email again. An invite nobody
accepts keeps an **Expired** badge; the row is marked expired only when someone tries
the stale link.

## What the invited person experiences

The link opens an accept-invite page. **Get started** treats the link as proof of the
address, creates the account, and asks for a name plus one sign-in method - **Create a
passkey**, a password, or Google and Microsoft where configured. An address that already
has a sign-in method is sent to the sign-in page instead. Acceptance succeeds only when
the signed-in account's email matches the invited address.

## Join automatically by domain

**Workspace settings → Workspace → General** carries **Verified email domains**: claim a
company domain, publish the DNS TXT record SquadBear generates, then press **Verify**.
Matching only works for **Google Workspace** sign-ins - it reads Google's hosted-domain
claim, never the raw email suffix, so a personal Gmail address never triggers it.

A verified domain has one switch, **Let people with an @domain address join
automatically**. On, the welcome screen after sign-in offers **Join**, which writes the
employee record; off, it offers **Request to join**, queued under **Requests to join** on
**People → People** with **Approve** and **Decline** per person. Approving hires them
like a direct create.

## Roles, and who approves

Every employee record has one role - **employee**, **manager**, **admin**, or **owner**;
invites and direct creates grant the first three. Role decides which pages someone can
reach (manager and above get Approvals, Reports, Coverage risks, Team timesheets). It does
**not** decide whose leave requests they approve - that's the separate **Manager** field on
a profile, and the default workflow routes each request to whoever it points at. Approvals
and the approval detail page require manager or above, so an approver left on **employee**
cannot open the request in the app.

## Worked example

Marta, Northlake's admin, invites Aleksandra from **People → People**: **Send an invite**,
role **Employee**, nothing else - Aleksandra's start date is set to the day she accepts.
For the rest of the studio, Marta claims `northlake.io`, adds the TXT record, presses
**Verify**, and turns automatic joining on: everyone else signs in with their work Google
account and joins from the welcome screen without an invite.

> [!AGENT]
> List everyone with a pending invitation in my workspace and tell me which ones are close to expiring.

## Related

- [Set up your workspace](/docs/getting-started/quickstart/)
- [Send your first leave request](/docs/getting-started/first-request/)
- [The people model in SquadBear](/docs/admin/people/)
