03 — Invite your clinic members
Purpose
Add the staff who will use CS Logbook day-to-day — veterinarians, technicians, assistants, practice managers. Each invited user becomes a member of your clinic with an access role that determines what they can do in the app. Their clinic position (their real job title) and, for prescribers, their DEA license are captured by the invitee themselves during onboarding — not by you at invite time.
Regulatory basis: DEA rules require every record entry to identify the person who made it. CS Logbook attributes every transaction to the signed-in user. Adding all your real staff (rather than sharing one login) is the only way the audit trail is meaningful.
Two separate concepts: access role vs. clinic position
CS Logbook keeps what you can do in the app separate from who you are in the clinic. This is deliberate (see the Glossary § Access role vs. clinic position) — a veterinary technician can be the app administrator, and a prescribing veterinarian can be read-only.
| Set by | Values | Drives | |
|---|---|---|---|
| Access role | You, at invite time | admin / manager / staff / viewer |
Sidebar visibility, page access, what the user can create/edit |
| Clinic position | The invitee, during onboarding | veterinarian / prescribing_veterinarian / veterinary_technician / veterinary_assistant / practice_manager / receptionist / other |
Display labels, transaction attribution, prescriber-of-record eligibility |
The clinic owner is a third concept (the billing-responsible party). You don't pick owner from the invite form — ownership is transferred via the separate Transfer Ownership flow on the Members page.
When to use it
- After completing the onboarding wizard, before logging your first transaction (so transactions attribute to the right person from day one)
- Whenever you onboard a new staff member
- When you need a prescribing veterinarian for the practice (e.g., adding a new associate DVM) — you invite them; they record their DEA license themselves at onboarding
Walkthrough
⚠️ An active subscription is required to invite members. If your clinic hasn't subscribed yet, opening the clinic sends you to its billing page first (the subscription gate); subscribe, then return to Members. See Settings → Billing and Settings → Members § subscription quota.
Step 1 — Open the Members page
Navigate to /home/<your-clinic>/members.
You'll see a list of current members with their access role and clinic position. As the owner, you'll be at the top.

Step 2 — Click "Invite Members"
The Invite Members button is in the top-right of the Members page (visible only to owner / admin). It opens a dialog with an invitations form.
You can invite up to 5 members per batch. Each row in the dialog represents one invitation.
Step 3 — Fill in invitation details for each person
For each invitation, enter:
- Email — the person's professional email; the invitation is sent there
- Access role —
admin,manager,staff, orviewer. Defaults tostaff. This is the only role decision you make here:- admin — trusted app operator; can manage substances, members, and settings
- manager — supervisory access; can manage substances and day-to-day operations
- staff — day-to-day operations (receive containers, log transactions); the right default for most clinical staff
- viewer — read-only; cannot create or edit records
You do not set the clinic position or DEA license here — the invitee chooses their own clinic position during onboarding (so a person isn't mislabeled by the inviter's guess).

Step 4 — Send invitations
Click Send invitations. Each invited person receives an email with a one-time link.
When they click the link:
- They are prompted to create their CS Logbook account (if they don't already have one) or sign in (if they do)
- They accept the invitation and are added to your clinic with the access role you specified
- They are redirected to
/onboarding/clinic-positionto record their clinic position — and, if they chooseprescribing_veterinarian, their DEA license number + expiration (required for prescribers; used for soft-warning expiration alerts and prescriber-of-record attribution onadministered/dispensedtransactions) - After onboarding they land on
/home/<your-clinic>
Outstanding invitations show on the Members page with a "Pending" status. You can resend or revoke a pending invitation.
Step 5 — Verify each person can sign in
Ask each invited person to confirm they can sign in, complete the clinic-position step, and see your clinic in their account list. If a sign-in fails, the most common cause is the email link expired — resend from the Members page.
Field reference
Invite-members form (per row)
| Field | Label | Type | Required | Validation |
|---|---|---|---|---|
email |
text | ✓ | Valid email; unique within batch | |
access_role |
Access role | select | ✓ | one of: admin, manager, staff, viewer (default staff) |
Batch limits: max 5 invitations per submission. Unique emails required within a batch — you cannot invite the same email twice in one click.
Clinic position, DEA license, and employment start date are not on this form — they were moved to the invitee's onboarding step. See Settings → Members for editing a member's clinic position after they join, and the /onboarding/clinic-position step for what the invitee fills in.
Edge cases
"Email already exists in another clinic"
This is fine — a CS Logbook user can belong to multiple clinics. The invitation still goes through; they will see your clinic added to their account list when they accept.
A prescriber's DEA license is captured at onboarding, not invite
When you invite a future prescribing veterinarian, you only choose their access role. The DEA license number + expiration are recorded by the invitee when they pick prescribing_veterinarian as their clinic position during onboarding. If a prescriber's DEA expires within 60 days, the amber soft-warning surfaces on their license record (CS Logbook warns, never blocks).
Changing a member's role or position after they join
Use Settings → Members: the access role is changed inline via the row's role selector; the clinic position (and prescriber DEA fields) are edited via the row's Edit Clinic Role dialog. No support intervention is needed for these changes.
A member hasn't completed onboarding
Until an invitee completes the /onboarding/clinic-position step, their clinic position is unset and they're redirected there on every visit to the clinic workspace. They can still sign in; they just can't reach clinic pages until they record their position.
Common mistakes
- Over-granting access. Invite most clinical staff as
staff, notadmin. Reserveadminfor the people who actually administer the app. The access role controls what they can change; the audit log still attributes every action to the individual, so there's no reason to over-grant. - Sharing a single login. Tempting for small clinics, but it destroys the audit trail. DEA inspectors will fail an audit if every transaction is attributed to the same person regardless of who actually performed it. Always invite each staff member individually.
- Expecting to set the clinic position at invite. You can't — and that's by design. The invitee picks their own clinic position (and prescriber DEA license) at onboarding so people aren't mislabeled. If someone picked the wrong position, fix it from Settings → Members.
- Inviting personal emails for staff. Same trap as in step 1 — staff who leave the clinic still have audit-trail records under their personal email forever. Invite their professional email.
Related
- 02 — Onboarding wizard — your own setup, before inviting others
- 04 — Your first substance — what you and your clinic do next
- Settings → Members — edit access roles + clinic positions after people join
- Glossary § Access role vs. clinic position — what each role and position means