Brand and delivery settings
PortalSites, BrandThemes, EmailTemplates. Define the branded site and the approved communication templates.
- PortalSites
- BrandThemes
- EmailTemplates
The canonical records behind published client collaboration.
17 tables · 32 relationships
PortalSites, BrandThemes, EmailTemplates. Define the branded site and the approved communication templates.
ClientUsers, PortalProjects, PortalUserAccess, MagicLinks. Bind verified participants to project grants and purpose-bound access tokens.
DocumentShares, StatusUpdates, Comments, CommentReplies, ActivityFeed. Keep published project context and its conversations within their declared audience.
ApprovalRequests, ApprovalDecisions, DocumentDownloads, ClientActivities, NotificationDeliveries. Distinguish client decisions, document access and provider delivery evidence.
Keep source identifiers separate from portal records. Use authenticated principal bindings and validated parent references. Token hashes are unique, decisions are uniquely sequenced per request revision, and notification keys identify a source event, template and recipient.
| Field | Type | Required | Details |
|---|---|---|---|
PortalCode | text | yes | |
Name | text | yes | |
Account | text | yes | Source account ref (CRM) |
BrandTheme | reference | → BrandThemes | |
BrandLogoURL | text | Override theme logo | |
PrimaryColor | text | Override theme color (hex) | |
SubdomainSlug | text | yes | e.g. acme.<host>.com |
CustomDomain | text | e.g. portal.acme.com | |
OAuthProvider | select | None, Google, Microsoft, Okta, OneLogin | |
OAuthProviderRef | text | Tenant / IdP identifier | |
MagicLinkEnabled | toggle | yes | |
DefaultEmailTemplate | reference | → EmailTemplates | |
Owner | text | yes | Internal Portal Manager user ID |
Status | select | yes | Draft, Active, Suspended, Archived |
LaunchedAt | date |
| Field | Type | Required | Details |
|---|---|---|---|
ThemeCode | text | yes | |
Name | text | yes | |
LogoURL | text | ||
PrimaryColor | text | Hex | |
SecondaryColor | text | Hex | |
AccentColor | text | Hex | |
FontFamily | text | ||
FaviconURL | text | ||
EmailHeaderURL | text | Banner image for branded emails | |
Active | toggle | yes |
| Field | Type | Required | Details |
|---|---|---|---|
TemplateCode | text | yes | |
Name | text | yes | |
EventType | select | yes | InviteSetup, DocumentPublished, ApprovalRequest, ApprovalDecision, StatusUpdate, CommentNotification, InactiveReminder, WeeklyDigest |
Subject | text | yes | Liquid-style template |
BodyHTML | text | yes | Liquid-style template |
BodyText | text | Plain-text fallback | |
FromName | text | ||
ReplyToEmail | text | ||
Active | toggle | yes |
| Field | Type | Required | Details |
|---|---|---|---|
FullName | text | yes | |
Email | text | yes | Masked from non-Portal-Manager internal roles |
PortalSite | reference | yes | → PortalSites |
Account | text | yes | Source account ref |
ClientRole | select | yes | Approver, Collaborator, Viewer |
Title | text | ||
Phone | text | ||
OAuthProviderRef | text | Provider subject ID once linked | |
InvitedBy | text | Internal user who invited | |
InvitedAt | date | ||
ActivatedAt | date | ||
LastLoginAt | date | ||
Status | select | yes | Invited, Active, Suspended, Deactivated |
PrincipalID | text | Authenticated subject bound during verified setup; unique within the PortalSite | |
NotificationsEnabled | boolean | Recipient preference; authorization and required transactional notices remain separate |
| Field | Type | Required | Details |
|---|---|---|---|
PortalSite | reference | yes | → PortalSites |
Project | text | yes | Source project ref (pm-projects) |
ProjectName | text | yes | Snapshot |
DisplayOrder | number | ||
Status | select | yes | Active, Hidden, Archived |
AddedAt | date | yes | |
AddedBy | text | yes | Internal user |
| Field | Type | Required | Details |
|---|---|---|---|
ClientUser | reference | yes | → ClientUsers |
PortalProject | reference | yes | → PortalProjects |
AccessLevel | select | yes | View, Comment, Approve |
GrantedBy | text | yes | Internal Portal Manager |
GrantedAt | date | yes | |
RevokedAt | date | ||
Status | select | yes | Active, Revoked |
| Field | Type | Required | Details |
|---|---|---|---|
Token | text | yes | One-way token hash only; plaintext is generated once, never stored or logged |
ClientUser | reference | yes | → ClientUsers |
Purpose | select | yes | InviteSetup, DocumentView, ApprovalAction, StatusUpdateView, DigestOpen |
TargetTable | text | e.g. DocumentShares, ApprovalRequests | |
TargetRecord | text | Record ID | |
IssuedAt | date | yes | |
ExpiresAt | date | yes | |
UsedAt | date | ||
UsedFromIP | text | Captured on redemption | |
Status | select | yes | Active, Used, Expired, Revoked |
| Field | Type | Required | Details |
|---|---|---|---|
ShareNumber | text | yes | |
PortalSite | reference | yes | → PortalSites |
PortalProject | reference | yes | → PortalProjects |
DocumentName | text | yes | |
Description | text | ||
FileURL | text | yes | Signed URL to source document store |
FileSizeBytes | number | ||
MimeType | text | ||
Category | select | Deliverable, Invoice, Contract, Report, Reference, Other | |
SourceTable | text | e.g. Invoices, Tasks | |
SourceRecord | text | Source record ID | |
RequiresAcknowledgment | toggle | ||
PublishedBy | text | yes | Internal user |
PublishedAt | date | ||
Status | select | yes | Draft, Published, Archived |
PublishStart | datetime | Optional scheduled publication time | |
PublishEnd | datetime | Optional withdrawal time; end must follow start |
| Field | Type | Required | Details |
|---|---|---|---|
DocumentShare | reference | yes | → DocumentShares |
ClientUser | reference | yes | → ClientUsers |
DownloadedAt | date | yes | |
FromIP | text | ||
UserAgent | text | ||
Acknowledged | toggle | Set when RequiresAcknowledgment=true and client confirmed | |
AcknowledgedAt | date |
| Field | Type | Required | Details |
|---|---|---|---|
RequestNumber | text | yes | |
PortalSite | reference | yes | → PortalSites |
PortalProject | reference | yes | → PortalProjects |
Subject | text | yes | |
Description | text | ||
Type | select | yes | Deliverable, ChangeOrder, Invoice, Milestone, Other |
RelatedDocument | reference | → DocumentShares | |
SourceTable | text | e.g. Tasks, Invoices, ChangeOrders | |
SourceRecord | text | Source record ID for callback | |
RequestedFromClient | reference | yes | → ClientUsers (named approver) |
RequestedBy | text | yes | Internal user (Project Manager) |
RequestedAt | date | yes | |
ExpiresAt | date | ||
RequiresSignature | toggle | ||
Status | select | yes | Pending, Approved, Rejected, RequestedChanges, Expired, Cancelled |
DecidedAt | date | ||
Revision | number | Expected request revision; changing request evidence requires a new review round |
| Field | Type | Required | Details |
|---|---|---|---|
ApprovalRequest | reference | yes | → ApprovalRequests |
Sequence | number | yes | |
ClientUser | reference | yes | → ClientUsers |
Decision | select | yes | Approved, Rejected, RequestedChanges |
Comments | text | ||
SignatureBlob | text | Base64 signature image; Admin + Portal Manager only | |
SignedAt | date | ||
FromIP | text | Captured on submit | |
UserAgent | text | ||
Superseded | toggle | True when a later decision overrides | |
RequestRevision | number | Exact request revision decided | |
CallbackStatus | select | NotRequired, Pending, Succeeded, Failed, Unknown | |
CallbackKey | text | Unique idempotency key per decision and source record | |
CallbackReceipt | longtext | Redacted external response and reconciliation reference |
| Field | Type | Required | Details |
|---|---|---|---|
UpdateNumber | text | yes | |
PortalSite | reference | yes | → PortalSites |
PortalProject | reference | yes | → PortalProjects |
Title | text | yes | |
BodyMarkdown | text | yes | |
HealthFlag | select | OnTrack, AtRisk, OffTrack, Complete | |
Audience | select | yes | AllProjectClients, ApproversOnly, NamedRecipients |
PublishedBy | text | yes | Internal user |
PublishedAt | date | ||
Status | select | yes | Draft, Published, Archived |
NamedRecipients | longtext | Validated list of ClientUsers identifiers in this project; required for NamedRecipients audience |
| Field | Type | Required | Details |
|---|---|---|---|
PortalSite | reference | yes | → PortalSites |
PortalProject | reference | yes | → PortalProjects |
ParentType | select | yes | DocumentShare, ApprovalRequest, StatusUpdate |
DocumentShare | reference | → DocumentShares | |
ApprovalRequest | reference | → ApprovalRequests | |
StatusUpdate | reference | → StatusUpdates | |
AuthorClientUser | reference | → ClientUsers (when external) | |
AuthorInternalUser | text | Internal user ID (when internal) | |
BodyMarkdown | text | yes | |
PostedAt | date | yes | |
Status | select | yes | Active, Hidden, Deleted |
| Field | Type | Required | Details |
|---|---|---|---|
Comment | reference | yes | → Comments |
Sequence | number | yes | |
AuthorClientUser | reference | → ClientUsers (when external) | |
AuthorInternalUser | text | Internal user ID (when internal) | |
BodyMarkdown | text | yes | |
PostedAt | date | yes | |
Status | select | yes | Active, Hidden, Deleted |
| Field | Type | Required | Details |
|---|---|---|---|
PortalSite | reference | yes | → PortalSites |
PortalProject | reference | yes | → PortalProjects |
EntryType | select | yes | DocumentPublished, StatusUpdatePublished, ApprovalRequested, ApprovalDecided, CommentPosted |
Subject | text | yes | |
RelatedTable | text | ||
RelatedRecord | text | ||
ActorClientUser | reference | → ClientUsers (when external) | |
ActorInternalUser | text | Internal user ID (when internal) | |
OccurredAt | date | yes | |
Visibility | select | yes | AllProjectClients, ApproversOnly, NamedRecipients |
NamedRecipients | longtext | Validated list of ClientUsers identifiers in this project; required for NamedRecipients audience |
| Field | Type | Required | Details |
|---|---|---|---|
PortalSite | reference | yes | → PortalSites |
ClientUser | reference | yes | → ClientUsers |
ActivityType | select | yes | Login, LoginFailed, MagicLinkRedeemed, DocumentDownloaded, ApprovalSubmitted, CommentPosted, ProfileUpdated, ReminderSent |
RelatedTable | text | ||
RelatedRecord | text | ||
FromIP | text | ||
UserAgent | text | ||
OccurredAt | date | yes |
| Field | Type | Required | Details |
|---|---|---|---|
DeliveryNumber | text | yes | Human-readable delivery identifier |
PortalSite | reference | yes | → PortalSites |
ClientUser | reference | yes | → ClientUsers |
EmailTemplate | reference | yes | → EmailTemplates |
RelatedTable | text | Allowlisted source type | |
RelatedRecord | text | Scoped source identifier | |
IdempotencyKey | text | yes | Unique event/template/recipient combination |
ProviderMessageID | text | Provider receipt identifier | |
Status | select | yes | Queued, Sent, Delivered, Bounced, Failed, Unknown |
CreatedAt | datetime | yes | Queue creation time |
SentAt | datetime | Provider acceptance time | |
ProviderReceipt | longtext | Redacted provider outcome |
Create your ERP.AI account and get started with Proto.
We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy
We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.
Learn more about how we use cookiesThese cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.
These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.
These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.
These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.