This is Part 15 of the Salesforce series. In the previous posts, we covered automation tools like Flows and Process Builder. Now we turn to a specialized automation feature that nearly every organization needs: Approval Processes. Whether it is a discount that needs a manager’s sign-off, a travel expense that requires finance review, or a contract that must pass through legal, approval processes give you a structured, auditable way to route records for review and enforce business rules around who can approve what.
What Are Approval Processes?
An approval process is a declarative automation feature in Salesforce that lets you define a sequence of steps a record must go through before it is considered approved. When a user submits a record for approval, Salesforce evaluates entry criteria, assigns the record to one or more approvers, and executes automated actions at each stage of the lifecycle.
Key characteristics of approval processes:
- Declarative — no code required to set up basic or even complex approval workflows.
- Auditable — every submission, approval, rejection, and recall is logged in the Approval History related list.
- Enforceable — records can be locked during the approval cycle so that only admins and the current approver can edit them.
- Automated — field updates, email alerts, outbound messages, and tasks can fire at each stage.
When to Use Approval Processes
| Scenario | Good Fit? |
|---|---|
| Discount requests above a threshold | Yes |
| Expense reports requiring manager sign-off | Yes |
| Contract review by legal | Yes |
| PTO / leave requests | Yes |
| Simple status changes with no human review | No — use a Flow or field update instead |
| Highly dynamic routing that changes at runtime | Partial — consider Flow approvals for advanced routing |
Anatomy of an Approval Process
Every approval process is made up of the same building blocks. Understanding each piece is essential before you start clicking through Setup.
1. Entry Criteria
Entry criteria determine which records are eligible to enter the approval process when a user clicks “Submit for Approval.” If a record does not meet the criteria, the submission is rejected immediately.
Examples:
Discount_Percent__c > 20— only discounts above 20 percent require approval.Amount > 100000— only high-value opportunities need review.Status = "Draft"— only draft records can be submitted.
You can use formula-based criteria for more complex logic, such as combining multiple fields or referencing related objects.
2. Approver Assignment
For each step, you decide who the approver is. Salesforce supports several assignment methods:
| Method | Description |
|---|---|
| Let the submitter choose the approver manually | A lookup field appears on submission. Useful when the submitter knows who should approve. |
| Automatically assign using the Manager field | Uses the Manager field on the submitter’s User record. The most common choice for hierarchical approvals. |
| Automatically assign to a specific user | Hardcodes a particular user (e.g., the VP of Sales). Simple but inflexible. |
| Automatically assign to a queue | Routes to a queue; any queue member can approve. Good for team-based review. |
| Automatically assign to a related user | Uses a user lookup field on the record itself (e.g., Opportunity.Owner.ManagerId or a custom “Approver” field). Extremely flexible. |
3. Approval Steps
Each step represents one level of review. A simple process might have a single step. A complex process might have three or four steps, each with its own entry criteria and approver assignment.
Within a step you also configure:
- Step criteria — conditions that must be true for the record to enter that step. If the criteria are not met, you can choose to approve the record automatically, reject it, or skip to the next step.
- Approver behavior — whether the first response from any approver counts (first-response approval) or whether all assigned approvers must respond (unanimous approval).
4. Actions
Actions are the automated side effects that fire at different stages of the approval lifecycle.
| Action Category | When It Fires |
|---|---|
| Initial Submission Actions | When the record is first submitted for approval. |
| Approval Actions (per step) | When a step is approved. |
| Rejection Actions (per step) | When a step is rejected. |
| Final Approval Actions | When the record completes all steps and is fully approved. |
| Final Rejection Actions | When the record is ultimately rejected. |
| Recall Actions | When the submitter recalls the record from the approval process. |
The types of actions you can attach include:
- Field Update — change a field value (e.g., set
Statusto “Approved”). - Email Alert — send a notification using an email template.
- Task — create a task assigned to a user.
- Outbound Message — send a SOAP message to an external endpoint.
Single-Step vs Multi-Step Approvals
Single-Step
A single-step approval process has one approver or approver group. When that step is approved, the record reaches Final Approval. When rejected, it reaches Final Rejection.
Example: A sales rep submits a discount request. The sales manager approves or rejects it. Done.
Multi-Step
A multi-step approval process chains two or more steps together. Each step can have different entry criteria and different approvers.
Example of a three-step discount approval:
| Step | Criteria | Approver |
|---|---|---|
| 1 | Discount > 20% | Sales Manager (via Manager field) |
| 2 | Discount > 35% | Regional VP (specific user) |
| 3 | Discount > 50% | CFO (specific user) |
If a record has a 25 percent discount, it enters Step 1, gets approved by the manager, and then Salesforce evaluates Step 2. Because the discount is not above 35 percent, Step 2 criteria are not met. You can configure the step to auto-approve, which sends the record straight to Final Approval without requiring the VP.
This pattern lets you build escalating approval chains where higher discounts require higher authority.
Parallel vs Sequential Approvers
Within a single step, you can assign multiple approvers. The behavior depends on how you configure the step:
Sequential (Unanimous)
All assigned approvers must approve. If any one of them rejects, the step is rejected.
Use case: Both Legal and Finance must sign off on a contract before it moves forward.
Parallel (First Response)
The first approver to respond determines the outcome. If one person approves, the step is approved regardless of whether the other approvers have responded.
Use case: A support escalation is assigned to three senior engineers. Whoever is available first handles it.
Configuration
When editing a step, you choose between:
- Require Unanimous Approval from All Selected Approvers — sequential / unanimous behavior.
- Require Approval from First Responder — parallel / first-response behavior.
Approval Request Routing in Detail
Manager Hierarchy
The most common pattern. Salesforce looks at the Manager field on the submitting user’s record and routes the approval request to that person.
Important: If the Manager field is blank, the submission will fail. Always ensure every user who submits records for approval has a manager assigned.
For multi-step processes, you can configure each subsequent step to go to the “Manager of the Manager” by using the related user approach or by hardcoding the next-level manager.
Specific User
Hardcode a specific person as the approver. This is straightforward but creates a maintenance burden — if that person leaves the company or changes roles, an admin must update the process.
Queue
Route to a Salesforce queue. Any member of the queue can approve. This is ideal for team-based approvals where you do not care which specific person handles the request, only that someone from the team does.
Related User Field
Point to a user lookup field on the record. For example, if your Opportunity has a custom field called Approval_Manager__c, you can route the approval to whoever is in that field. This gives you maximum flexibility because the approver can vary record by record.
Actions in Detail
Initial Submission Actions
These fire the moment a user clicks “Submit for Approval” and the record passes the entry criteria.
Common uses:
- Lock the record — prevent edits during the approval cycle (enabled by default).
- Field update — set a
Statusfield to “Pending Approval.” - Email alert — notify the submitter that their request has been received.
Approval Actions (Step-Level)
These fire when a specific step is approved. In a multi-step process, you might update a status field at each step to reflect progress.
Rejection Actions (Step-Level)
These fire when a specific step is rejected. You might clear certain fields, send a notification to the submitter explaining the rejection, or set a status back to “Draft.”
Final Approval Actions
These fire when the record passes through all steps successfully.
Common uses:
- Field update — set
Statusto “Approved,” update a checkbox likeIs_Approved__c, or stamp the approval date. - Email alert — notify the submitter and stakeholders.
- Unlock the record — allow edits again after approval.
Final Rejection Actions
These fire when the record is ultimately rejected (no more steps to try).
Common uses:
- Field update — set
Statusto “Rejected.” - Email alert — notify the submitter with the reason for rejection.
- Unlock the record — let the submitter make changes and resubmit.
Recall Actions
These fire when the submitter recalls a pending approval request.
Common uses:
- Field update — revert
Statusto “Draft.” - Unlock the record.
Field Updates on Approval and Rejection
Field updates are the workhorses of approval processes. Here are practical patterns:
| Event | Field | New Value |
|---|---|---|
| Initial Submission | Approval_Status__c | ”Submitted” |
| Step 1 Approved | Approval_Status__c | ”Manager Approved” |
| Final Approval | Approval_Status__c | ”Approved” |
| Final Approval | Approved_Date__c | Today’s date (use formula) |
| Final Approval | Is_Approved__c | True |
| Final Rejection | Approval_Status__c | ”Rejected” |
| Recall | Approval_Status__c | ”Draft” |
To create a field update:
- Go to Setup > Create > Workflow & Approvals > Field Updates.
- Click New Field Update.
- Select the object and the field to update.
- Specify the new value (literal value, formula, or blank).
- Save, then attach the field update to the appropriate action category in your approval process.
Email Alerts and Notifications
Salesforce sends a default approval request email to the assigned approver. However, you can supplement this with custom email alerts.
Default Notification
When an approval request is assigned, Salesforce emails the approver with a link to approve or reject. The approver can respond from:
- The email itself (if email approval response is enabled).
- The Salesforce UI (the approval request appears in their home page and notifications).
- The Salesforce mobile app.
Custom Email Alerts
You can create email alerts using email templates for richer notifications:
- Create an email template — include merge fields for the record details (opportunity name, discount percentage, submitter name, etc.).
- Create an email alert — go to Setup > Create > Workflow & Approvals > Email Alerts, select the template, and choose recipients.
- Attach the email alert to the appropriate action step in your approval process.
Tip: Send different email alerts at different stages. For example, send a “submitted” confirmation to the rep, an “approved” notification to the rep and their manager, and a “rejected” notification with instructions on how to resubmit.
Locking and Unlocking Records
By default, Salesforce locks a record when it is submitted for approval. A locked record can only be edited by:
- An administrator.
- The currently assigned approver.
This prevents users from changing the record while it is under review, which could invalidate the approval decision.
Configuring Lock Behavior
- Lock on submission — enabled by default in the Initial Submission Actions. You can remove it if you want the record to remain editable.
- Unlock on approval — add an “Unlock the record” action to your Final Approval Actions if you want users to edit the record after approval.
- Unlock on rejection — add an “Unlock the record” action to your Final Rejection Actions so the submitter can make corrections and resubmit.
- Unlock on recall — add an “Unlock the record” action to your Recall Actions.
Record Editability
Administrators can configure which fields are editable on a locked record by going to Setup > Security > Field Accessibility or by using record types and page layouts. However, the simplest approach is to let the lock prevent all edits and unlock the record when the process completes.
Approval History Related List
Every object that has an approval process gets an Approval History related list on its page layout. This list shows:
| Column | Description |
|---|---|
| Step Name | Which step the action occurred in. |
| Status | Submitted, Approved, Rejected, Recalled, Pending, etc. |
| Assigned To | Who the step was assigned to. |
| Actual Approver | Who actually approved or rejected. |
| Date | When the action occurred. |
| Comments | Any comments the approver added. |
This provides a complete audit trail. For compliance-heavy industries (finance, healthcare, government), the Approval History is invaluable.
Adding Approval History to a Page Layout
- Go to the object’s page layout editor.
- Scroll to the Related Lists section.
- Drag Approval History onto the layout.
- Save.
Approval Process vs Flow Approvals
Salesforce has introduced Flow-based approvals as a modern alternative. Here is how they compare:
| Feature | Approval Process | Flow Approval (Action) |
|---|---|---|
| Setup complexity | Moderate — wizard-driven | Higher — requires Flow builder knowledge |
| Routing flexibility | Limited to predefined methods | Highly flexible — any logic you can build in a Flow |
| Dynamic approvers | Limited | Full flexibility with Flow variables and Get Records |
| Multi-step | Yes | Yes (via multiple approval elements in a Flow) |
| Parallel approvers | Yes | Yes |
| Email customization | Email templates only | Email templates, custom notifications, Chatter posts |
| Record locking | Built-in | Must be handled manually |
| Approval History | Automatic | Automatic (when using the Approval action element) |
| Recall support | Built-in | Must be built manually |
| Recommended for new orgs | Still supported but not the strategic direction | Yes — Salesforce recommends Flows for new automation |
When to Use Which
- Use Approval Processes when your requirements are straightforward — single or multi-step, with standard routing and actions. They are faster to set up and easier to maintain for simple scenarios.
- Use Flow Approvals when you need dynamic routing based on record data, complex branching logic, integration with other Flow elements (screen flows, subflows), or when you want to consolidate all automation in Flows.
Note: Salesforce has signaled that Flows are the long-term strategic direction for all automation. If you are building a new org from scratch, consider starting with Flow approvals to future-proof your automation.
Common Approval Patterns
Discount Approval
Scenario: Sales reps can offer discounts, but anything above 20 percent needs manager approval. Above 40 percent needs VP approval.
| Step | Entry Criteria | Approver |
|---|---|---|
| 1 | Discount_Percent__c > 20 | Manager (via User.ManagerId) |
| 2 | Discount_Percent__c > 40 | VP of Sales (specific user) |
Actions:
- On submission: lock record, set status to “Pending Approval.”
- On final approval: set status to “Approved,” email the rep.
- On rejection: set status to “Rejected,” unlock record, email the rep.
Expense Approval
Scenario: Employees submit expense reports. Under $500 goes to the manager. Over $500 also requires finance review.
| Step | Entry Criteria | Approver |
|---|---|---|
| 1 | Always (all expenses need manager approval) | Manager |
| 2 | Total_Amount__c > 500 | Finance Queue |
Contract Approval
Scenario: Contracts must be reviewed by Legal. If the contract value exceeds $1,000,000, the CEO must also approve.
| Step | Entry Criteria | Approver |
|---|---|---|
| 1 | Always | Legal Queue |
| 2 | Contract_Value__c > 1000000 | CEO (specific user) |
Best Practices
-
Plan before you build. Sketch out entry criteria, steps, approvers, and actions on paper or in a spreadsheet before opening Setup. This saves significant rework.
-
Use meaningful naming conventions. Name your approval process, steps, and actions clearly (e.g., “Opportunity Discount Approval - Step 1 - Manager Review”). When you have dozens of processes, clear names prevent confusion.
-
Always set the Manager field on User records. If you rely on manager-based routing, a blank Manager field causes submission failures. Run a report periodically to find users with missing managers.
-
Use field updates to track status. Create a picklist field like
Approval_Status__cand update it at every stage. This makes reporting easy and lets users see where their record stands without opening the Approval History. -
Unlock records after final approval and final rejection. Leaving records locked after the process ends frustrates users. Always add unlock actions to Final Approval and Final Rejection.
-
Test with multiple scenarios. Submit records that meet and do not meet each step’s criteria. Test with different approvers. Test the recall action. Verify email alerts arrive correctly.
-
Use the “Submit for Approval” button wisely. You can add or remove this button from page layouts. If a record should always be submitted automatically (e.g., triggered by a Flow), you may not need the button on the layout at all.
-
Leverage approval process comments. Encourage approvers to add comments when rejecting. These comments appear in the Approval History and in email notifications, giving the submitter clear feedback.
-
Consider delegated approvers. Each user can designate a delegated approver in their personal settings. This is useful when an approver is out of the office. The admin can also set delegated approvers on behalf of users.
-
Document your processes. Maintain a document or wiki page that explains each approval process, its entry criteria, steps, and actions. This helps new admins understand the system and simplifies troubleshooting.
Limitations
- One active approval process per object at a time — you can have multiple approval processes defined on an object, but only one can be active per record submission. However, you can use entry criteria to route different records to different processes.
- No conditional branching within a step — each step is linear. For complex branching, you need multiple steps with entry criteria or a Flow-based approach.
- Limited to standard action types — field updates, email alerts, tasks, and outbound messages. For anything else (e.g., calling an Apex class, creating a related record), you need to trigger a Flow or Process Builder from a field update.
- Approval processes cannot be triggered by another approval process — they must be initiated by a user click, a Flow, or Apex code.
- No built-in SLA or escalation timer — if an approver does not respond within a timeframe, Salesforce does not automatically escalate. You would need a scheduled Flow or time-based workflow to handle escalation.
- Maximum of 30 steps per approval process.
- Cross-object field updates are not supported — you can only update fields on the record being approved.
Section Notes
- Approval processes are one of the most frequently tested topics on the Salesforce Administrator certification exam. Understand the difference between initial submission actions, step-level actions, and final actions.
- In real-world projects, approval processes are among the first things business users ask for. Getting comfortable with them will make you immediately productive in any Salesforce admin role.
- The trend in the Salesforce ecosystem is moving toward Flow-based approvals, but classic approval processes remain widely used and fully supported. Know both.
- Approval processes work with both Classic and Lightning Experience. In Lightning, the approval request appears in the approver’s notification bell and on their home page.
PROJECT: Setup an Approval Process on the Opportunity Object
In this hands-on project, you will build an approval process that requires manager approval for any Opportunity where the discount exceeds 20 percent. This mirrors a real-world scenario that is extremely common in sales organizations.
Prerequisites
Before starting, make sure you have:
- A Salesforce Developer Edition or sandbox org.
- A custom field
Discount_Percent__c(Number or Percent type) on the Opportunity object. If you do not have one, create it now. - A custom field
Approval_Status__c(Picklist) on the Opportunity object with values: Draft, Submitted, Manager Approved, Approved, Rejected. - At least two users in your org — one sales rep and one manager. The manager must be set in the sales rep’s User record (
Managerfield).
Step 1: Create the Approval Process
- Go to Setup > Approval Processes.
- In the “Manage Approval Processes For” dropdown, select Opportunity.
- Click Create New Approval Process > Use Standard Setup Wizard.
- Fill in the details:
- Process Name: Opportunity Discount Approval
- Unique Name: Opportunity_Discount_Approval
- Description: Requires manager approval for Opportunities with discounts greater than 20%.
- Click Next.
Step 2: Set Entry Criteria
- Select Use this approval process if the following criteria are met.
- Add the criterion:
- Field:
Opportunity: Discount_Percent__c - Operator:
greater than - Value:
20
- Field:
- Click Next.
This ensures that only Opportunities with discounts above 20 percent enter the approval process. Opportunities with 20 percent or less will not require approval.
Step 3: Configure the Approver Field and Record Editability
- For Automated Approver, leave the default or select “Next Automated Approver Determined By: Manager.”
- For Record Editability, select Administrators Only (this locks the record during approval).
- Click Next.
Step 4: Select Notification Template (Optional)
- If you have a custom email template for approval notifications, select it here.
- Otherwise, leave the default and click Next.
Step 5: Configure the Submit Button and Initial Submitters
- Under Approval Page Fields, add fields you want the submitter to see on the approval page: Opportunity Name, Amount, Discount_Percent__c, Close Date.
- Under Allow Submitters, check Opportunity Owner (or Record Creator depending on your needs).
- Click Save.
- Salesforce will ask if you want to add steps, actions, etc. Click Yes, I’d like to create an approval step now.
Step 6: Create Approval Step 1 — Manager Approval
- Step Name: Manager Review
- Step Number: 1
- Step Criteria: Select All records should enter this step (the entry criteria already filter on discount > 20%).
- Click Next.
- Assign Approver:
- Select Automatically assign to approver(s).
- Choose User: Manager (this routes to the submitter’s manager).
- Click Next.
- Rejection Behavior: Select Final Rejection (if the manager rejects, the process ends).
- Click Save.
Step 7: Define Initial Submission Actions
- In the approval process detail page, scroll down to Initial Submission Actions.
- Click Add New > Field Update.
- Configure:
- Name: Set Status to Submitted
- Field to Update:
Approval_Status__c - New Value: Submitted
- Save.
The record lock is added automatically by default.
Step 8: Define Final Approval Actions
- Scroll to Final Approval Actions.
- Add a Field Update:
- Name: Set Status to Approved
- Field to Update:
Approval_Status__c - New Value: Approved
- Save.
- Add another action: Record Lock > Unlock the record (so users can edit after approval).
- Optionally, add an Email Alert to notify the Opportunity Owner that their discount has been approved.
Step 9: Define Final Rejection Actions
- Scroll to Final Rejection Actions.
- Add a Field Update:
- Name: Set Status to Rejected
- Field to Update:
Approval_Status__c - New Value: Rejected
- Save.
- Add Record Lock > Unlock the record (so the rep can fix the record and resubmit).
- Optionally, add an Email Alert to notify the Opportunity Owner of the rejection.
Step 10: Define Recall Actions
- Scroll to Recall Actions.
- Add a Field Update:
- Name: Set Status to Draft
- Field to Update:
Approval_Status__c - New Value: Draft
- Save.
- Add Record Lock > Unlock the record.
Step 11: Activate the Approval Process
- Go back to the approval process list.
- Click Activate next to “Opportunity Discount Approval.”
- Confirm the activation.
Step 12: Test the Approval Process
Test Case 1 — Record Below Threshold:
- Log in as the sales rep.
- Create or edit an Opportunity and set
Discount_Percent__cto 15. - Click Submit for Approval.
- Expected result: Salesforce rejects the submission because the discount does not exceed 20 percent. You should see an error message.
Test Case 2 — Record Above Threshold:
- Edit the Opportunity and set
Discount_Percent__cto 25. - Click Submit for Approval.
- Expected result: The record is submitted.
Approval_Status__cchanges to “Submitted.” The record is locked. - Log in as the manager.
- Navigate to the Opportunity or check the approval notification.
- Click Approve.
- Expected result:
Approval_Status__cchanges to “Approved.” The record is unlocked.
Test Case 3 — Rejection:
- Submit another Opportunity with a discount above 20 percent.
- Log in as the manager and click Reject. Add a comment explaining why.
- Expected result:
Approval_Status__cchanges to “Rejected.” The record is unlocked. The rep receives an email notification (if configured).
Test Case 4 — Recall:
- Submit an Opportunity for approval.
- Before the manager responds, log in as the rep and click Recall Approval Request.
- Expected result:
Approval_Status__cchanges to “Draft.” The record is unlocked.
Verification Checklist
| Item | Status |
|---|---|
| Entry criteria filter on Discount > 20% | Verify |
| Manager is assigned as the approver | Verify |
| Record locks on submission | Verify |
| Approval_Status__c updates to “Submitted” on submission | Verify |
| Approval_Status__c updates to “Approved” on approval | Verify |
| Approval_Status__c updates to “Rejected” on rejection | Verify |
| Approval_Status__c updates to “Draft” on recall | Verify |
| Record unlocks on approval, rejection, and recall | Verify |
| Approval History shows all actions with timestamps | Verify |
| Records below 20% discount cannot enter the process | Verify |
Summary
Approval processes are a critical tool in the Salesforce administrator’s toolkit. They provide a structured, auditable mechanism for routing records through one or more levels of human review with automated actions at every stage. The key concepts to remember are:
- Entry criteria control which records enter the process.
- Steps define the sequence of approvals, each with its own criteria and approver assignment.
- Actions (field updates, email alerts, tasks) automate side effects at submission, approval, rejection, and recall.
- Record locking protects data integrity during the review cycle.
- Approval History provides a complete audit trail.
- Flow approvals are the modern alternative for complex routing and dynamic logic.
Master these concepts, build the project above, and you will be well prepared to handle approval requirements in any Salesforce organization.
In the next post, we will explore Topics in Salesforce — how to organize and classify records using Topics for collaboration and discovery. See you there!