Approval Request Emails: Recheck Authority When the Recipient Acts
Build approval-request emails that identify the exact revision, require current authority at action time and handle changed or already-resolved requests clearly.
TL;DR
- An approval-request email should invite review rather than grant authority; the application must check identity, permissions and current state when the recipient opens and acts on the request.
- Confirm the exact revision and review package before accepting approval: store a revision identifier and show the current review so the reviewer approves the intended object.
- Treat rechecking authority, deliberate approval actions, and reminder cancellation as success criteria: verify current permission on action, separate viewing from committing, and stop reminders when resolved.
The email should invite review, not grant authority
An approval-request email tells a person that a decision is waiting. It should not itself establish that whoever possesses the link can approve the underlying action.
Start with the object being reviewed, the requested decision and the role that is allowed to make it. A purchase approval, content release and access request may have different authority rules.
The message should explain enough context to recognize the request, while the application checks identity, permissions and current state when the recipient opens and acts on it.
Identify the exact version under review
A reviewer needs to know what they are approving. Store a revision or equivalent identifier for the request's meaningful content, including amounts, destinations or access scope where relevant.
A useful review fixture includes two requests with the same display name but different amounts or resources. Confirm that the email and destination identify the correct one. A familiar label should not hide the fact that the reviewer is being asked to authorize a different object.
For an illustrative purchase request, changing the amount or supplier after the email is sent can materially change the decision. An approval based on the old summary should not silently authorize the new version.
The destination should show the current review package and explain when the original request has changed. If renewed review is required, enforce that rule at the backend rather than relying on a warning paragraph.
Related reading: Scheduled Email Delivery: Store the Time, Content and Cancellation State.
Keep email detail proportionate to the audience
Include the requester, purpose and key decision facts at a level appropriate for the recipient and the sensitivity of the information. Avoid attaching an entire confidential record merely to reduce one click.
For the purchase example, the email may identify a reference and a concise purpose while the authenticated page holds detailed documents. A shared mailbox or forwarded email should not expose information beyond the reviewed communication policy.
The subject and preview text need the same review. Sensitive details can leak there even when the body uses a protected destination.
Recheck authority when the person acts
A recipient can lose the relevant role between notification and action. Another person can also open a forwarded link. The server must verify current permission for the requested operation.
The OWASP authorization guidance emphasizes validating access rather than relying on an earlier assumption. Apply that principle to the specific approval object and operation, not merely to whether the user has any session.
If authority is missing, explain the state without exposing the full request to an unauthorized account. Provide a safe route to switch accounts or contact the appropriate owner where the product supports it.
Distinguish viewing from approving
An ordinary link visit should display the review interface rather than commit a sensitive approval. Email-security systems and previews can request URLs without the intended person making a decision.
Require the deliberate action and the protections appropriate to the application's workflow. The HTTP semantics specification provides context for keeping retrieval separate from state-changing operations.
The review interface should make the consequence explicit. “Approve purchase of this amount from this supplier” is more meaningful than a generic confirmation that hides the object of the decision.
Handle competing reviewers and changed state
Another authorized person may resolve the request first. The requester may withdraw it, or the object may expire while the email remains in the inbox.
For the purchase example, a second reviewer should see that the request is already resolved rather than create a duplicate approval or reverse the first decision accidentally. Use an appropriate atomic state transition so concurrent actions produce a coherent result.
Retain the reviewer, revision and decision time in the audit record. The final state should be explainable without reconstructing a series of email clicks.
Related reading: How to Stop Spam Emails in Gmail: A Practical Inbox Cleanup Guide.
Stop reminders when the request no longer needs action
A scheduled reminder should recheck that the request remains pending and that the recipient is still an appropriate reviewer. Do not continue sending action requests after approval, rejection or withdrawal.
If responsibility is reassigned, decide how the previous reviewer is informed and whether pending reminders are canceled. A stale reminder should not imply that the old reviewer still has authority.
Keep notification state separate from approval state. A delivered reminder is not evidence that the person reviewed or accepted the request.
Test the full decision lifecycle
Use fixtures for a normal approval, a changed revision, a wrong signed-in account, lost authority, a withdrawn request and two reviewers acting concurrently. Verify both the backend result and the explanation shown at the destination.
SendDart can deliver the request and subsequent notices, while the application owns the decision and its authority checks. The complete workflow ensures that the person approves the right object, in the right state, with the right current permission—not merely that an attractive email contains an approve button.