ForgeSendDocs

Client portal

The client portal is a separate, branded login at /portal/login — distinct from the main ForgeSend dashboard login. A client's portal account (a PortalUser) is created by the agency operator and belongs to exactly one workspace for its whole lifetime; it isn't a ForgeSend user account, and it can't switch between clients the way a workspace member switches between workspaces.

The portal layout

Once logged in, a portal user lands on /portal/replies — a two-panel layout that closely mirrors the main app's own Reply Box: a conversation list on the left, a thread and compose panel on the right. The header shows the agency's logo (or the ForgeSend wordmark if none is set — see Agency branding), the workspace name, an unread count badge, and Settings / Log out links.

Client portal — /portal/replies — read only

Acme Corp

ops@acme.com

3 unreadSettingsLog out
AllUnreadInterestedNot InterestedOOOUnsubscribe
Priya Nair2h ago

We did just bring on four new AEs — can we grab 15 minutes next week?

The search box and filter pills — All, Unread, Interested, Not Interested, OOO, Unsubscribe — and the thread view are the same client-side components the main app's Reply Box and Agency Reply Table already use, so a client sees the identical reading experience an agency operator does, just scoped to their own workspace. There's no Unmatched filter here: the backend already excludes every reply that isn't tied to a real campaign lead before it ever reaches the portal, so that filter would always return zero results.

Access levels

Every portal user is either read-only or reply-enabled — set by the agency when the portal account is created. This is the one setting that gates whether the compose box exists at all.

Access levelCan read repliesCan send replies
Read-onlyYesNo — the compose box doesn't render, and the send endpoint itself refuses the request
Reply-enabledYesYes

Reply-only access isn't just a hidden button — it's enforced on the backend too. A read-only portal user who somehow calls the send-reply endpoint directly gets a 403 Forbidden with the message "This portal access is read-only."

A portal user also only ever sees the reply tags the agency has explicitly allowed for them — conversations tagged outside that set never appear in their list or search results, regardless of access level.

Reading a conversation

Selecting a conversation marks it read and loads the full thread — every message tied to that lead, inbound and outbound, oldest to newest — using the exact same thread component the main dashboard's Reply Box uses. Each row shows an AI-generated content summary when one exists (with a small sparkle icon), falling back to a plain body preview otherwise.

Sending a reply

For a reply-enabled portal user, the compose box sits below the thread with a From inbox picker — populated from every inbox connected to that workspace, not the agency's — and a Send Reply button.

Portal compose — reply-enabled — read only
From:ops@acme.com
Great — does Tuesday at 2pm work?
42 charsSend Reply

If the workspace has no connected inbox at all, the picker is replaced with "No sending inbox available" and the compose box has nothing to send from. Send Reply's background color is the agency's own brand color, not always ForgeSend emerald — see Agency branding.

Where to go next

Next: Custom domain