Inviting clients
ProLast updated 2026-05-06
Inviting clients
/practice/clients → Invite a client. Two paths:
Single invite
Enter the client's email, click Send invite. Frank sends a branded invitation email; the client clicks the link, signs up (or signs in if they already have a Frank account), accepts the invitation, and they appear as active on your roster.
The status pill on each client row updates as Resend reports delivery events: ✓ Delivered, ⚠ Bounced (bad address / mailbox full), ⚠ Spam (recipient marked invite as spam), ⋯ Delayed (will retry).
Bulk invite (paste emails)
In the invite section, click Bulk invite (paste emails). Paste a list of emails (one per line; commas + semicolons also accepted). Frank dedupes and validates email shape, then issues invites sequentially (~1 second each — Resend rate-limits aggressive bursts).
You get a per-email summary at the end: how many sent, how many failed and why.
What the client sees
The invitation email shows your practice name + logo (if uploaded), with an "Open Finance Frank" button. They land on /practice-invitations showing exactly which permissions you've requested. They click Accept; you see status flip from pending to active.
By default, clients grant read-only access to: dashboard, assets, liabilities, income, transactions, tax position, reports, Frank AI conversations. Write actions (budgets, goals, statement imports, entity management) are off by default and toggled per-client per-permission.
Revoking access
Two-step:
- Revoke (soft) — sets status to
revoked, the row stays in the roster (greyed out). Audit trail preserved. - Delete (hard, only available after revoke) — permanently removes the row. Use when you're sure you don't need the audit history.
Revoke is owner-only. Delete is owner-only, refuses to fire on active or pending rows.
Filtering the roster
Once you have ≥5 clients, the roster shows a filter row: search by email, filter by status (active / pending / revoked), filter by tag (configured in Settings → Tags).
Was this article helpful?