Approvals Decision Audit
Every ApprovalDecision in the period with ApprovalRequest, Type, ClientUser, Decision, SignedAt, FromIP, and the source-record callback status. The auditable decision register.
Capture the named client’s decision and reconcile the result with the originating application.
3 stages · 1 approval
Follow the process from start to finish. Select a step to see who acts and what changes.
When the internal team needs a client decision (sign off a deliverable, accept a change order, approve an invoice, confirm a milestone), Project Manager creates an ApprovalRequests row: picks Type, RequestedFromClient (a named ClientUser with role Approver), RelatedDocument if applicable, SourceTable + SourceRecord for the callback, optional RequiresSignature and ExpiresAt. The new request creates a MagicLinks row with Purpose: ApprovalAction and ExpiresAt matching the request. The notification service delivers the branded approval template with the rendered Subject + Description and the magic-link URL to the confirmation page. The named ClientUser opens a confirmation page, verifies their session and explicitly picks Approved / Rejected / RequestedChanges, optionally adds Comments and a captured signature blob, and on a confirmed submission against the current request an ApprovalDecisions row writes (Sequence, Decision, Comments, SignatureBlob if captured, FromIP, UserAgent, SignedAt). The request Status flips to the matching enum and DecidedAt stamps.
Record a decision on the exact request revisionWhen the pending request is approved or rejected, the system reads SourceTable + SourceRecord, resolves the appropriate integration endpoint (Project Management Tasks for Deliverable / Milestone types, Project Billing Invoices for Invoice type, an org-defined ChangeOrders endpoint for ChangeOrder), and posts the decision back to the source — typically setting a ClientApprovalStatus enum and a ClientApprovalAt date on the source record. The notification service notifies the internal RequestedBy Project Manager + the project's Account Manager with the decision, the comments captured on ApprovalDecisions, and the link back to the request thread. A re-decision (e.g. Approver flips Rejected → Approved after a resubmit) writes a new ApprovalDecisions line with a higher Sequence and stamps the prior line Superseded: true.
Track source acknowledgment separately from local consentEvery client-side action — login, login-failed, magic-link redemption, document download, approval submission, comment post, profile update, reminder sent — writes a ClientActivities row with OccurredAt, FromIP, and UserAgent. The Client Activity Audit view + the Approvals Decision Audit report give Portal Manager, Account Manager, and Admin an auditable ledger that answers "what did this client see, when, and from where" for any external data-subject request. Client activity logs remain internal; client users cannot read them.
Retain the authorized decision trailApprovalRequests, ApprovalDecisions
The named ClientUser opens a confirmation page, verifies their session and explicitly picks Approved / Rejected / RequestedChanges, optionally adds Comments and a captured signature blob, and on a confirmed submission against the current request an ApprovalDecisions row writes (Sequence, Decision, Comments, SignatureBlob if captured, FromIP, UserAgent, SignedAt).
When the pending request is approved or rejected, the system reads SourceTable + SourceRecord, resolves the appropriate integration endpoint (Project Management Tasks for Deliverable / Milestone types, Project Billing Invoices for Invoice type, an org-defined ChangeOrders endpoint for ChangeOrder), and posts the decision back to the source — typically setting a ClientApprovalStatus enum and a ClientApprovalAt date on the source record.
Every client-side action — login, login-failed, magic-link redemption, document download, approval submission, comment post, profile update, reminder sent — writes a ClientActivities row with OccurredAt, FromIP, and UserAgent.
| Stage | Records | Effect |
|---|---|---|
| 1 Request and decide | ApprovalRequestsApprovalDecisions | Record a decision on the exact request revision |
| 2 Reconcile the callback | ApprovalDecisions | Track source acknowledgment separately from local consent |
| 3 Preserve the evidence | ClientActivitiesApprovalDecisions | Retain the authorized decision trail |
Every ApprovalDecision in the period with ApprovalRequest, Type, ClientUser, Decision, SignedAt, FromIP, and the source-record callback status. The auditable decision register.
Per ApprovalRequest type (Deliverable, ChangeOrder, Invoice, Milestone): mean and p90 hours from RequestedAt to DecidedAt, broken down by PortalProject and RequestedFromClient. Surfaces slow approvers and slow approval categories.
Per EmailTemplate per PortalSite per week: sends, opens (via DigestOpen MagicLinks redemption), bounces (via integration callback). Surfaces template fatigue and deliverability issues.
Per RequiresAcknowledgment DocumentShare in the trailing 90 days: recipients, downloaded count, acknowledged count, percent acknowledged. Surfaces shares not landing with the right audience.
Per PortalProject in the trailing 30 days: open threads, replies, ClientUser participants, internal participants, mean time-to-first-reply. Surfaces stalled threads and disengaged projects.
| Posted At | Parent Type | Portal Project | Author Client User | Author Internal User |
|---|---|---|---|---|
| DocumentShare | PP-2886 | GK | AIU-378 | |
| ApprovalRequest | PP-4603 | LR | AIU-370 | |
| StatusUpdate | PP-1143 | WZ | AIU-379 | |
| DocumentShare | PP-5825 | NN | AIU-639 | |
| ApprovalRequest | PP-5299 | UD | AIU-496 | |
| StatusUpdate | PP-1444 | EC | AIU-571 |
Proto cannot impersonate a client, decide a request on their behalf, disclose private source files or claim a callback succeeded without its receipt. Branding does not establish identity, authorization or regulatory certification.
Give clients a branded entry point and the specific project access their work requires.
3 stages · 1 approval
Make a protected project document available to the intended client audience and record explicit acknowledgment.
3 stages · 0 approvals
Keep project communications relevant and follow up using permitted engagement evidence.
4 stages · 0 approvals
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.