Loading

Salesforce Advanced Approvals: Conditionally Hide the Submit for Approval Button Using Record Types and Flow

Publiceringsdatum: Jun 25, 2026
Beskrivning

In Salesforce Advanced Approvals, the Submit for Approval button appears on the Quote record by default regardless of the current approval state. This means the button remains visible even after a Quote has already been submitted, which can cause user confusion and unintended resubmissions.

The recommended approach is to control button visibility dynamically by assigning different Record Types that map to different page layouts—one layout includes the Submit for Approval button and one does not.

A Record-Triggered Flow evaluates the Quote's Approval Status and assigns the appropriate Record Type, which in turn controls which page layout and button the user sees.

This solution requires the following components:

- Two page layouts: one with the Submit for Approval button, one without

- Two Record Types on the Quote object: one for quotes in progress, one for new, recalled, or rejected quotes

- A Record-Triggered Flow on the Quote object with decision logic based on Approval Status Note: Existing Quote records are not automatically updated by this solution and must be assigned to the correct Record Type manually or via Data Loader.

Lösning

The steps below create the necessary page layouts, Record Types, and Flow to switch the Submit for Approval button on or off based on the Quote's Approval Status.

## Create Two Page Layouts

1. Navigate to Setup and open the Quote object's page layouts.

2. Identify the existing layout that contains the Submit for Approval button. Keep this layout as-is for quotes that are new, recalled, or rejected.

3. Clone that layout and remove the Submit for Approval button from the clone. This layout will be used for quotes that are in progress.

4. Save both layouts with distinct names that reflect their purpose. 

You now have two layouts: one with the Submit for Approval button and one without. 

## Create Two Record Types on the Quote Object

1. Navigate to Setup > Create > Object > Quote > Record Types > New.

**First Record Type — for In Progress quotes (button hidden):**

1. Set Existing Record Type to Master.

2. Enter a descriptive Record Type Label such as "Quote - In Progress."

3. Set Active to Yes.

4. Modify profile permissions as needed. Permissions can be removed since Record Type assignment will be controlled by the Flow.

5. Select the profiles this Record Type applies to.

6. Assign the page layout without the Submit for Approval button.

7. Click Save.

**Second Record Type — for New, Recalled, or Rejected quotes (button visible):**

1. Set Existing Record Type to Master.

2. Enter a descriptive Record Type Label such as "Quote - New/Recalled/Rejected."

3. Set Active to Yes.

4. Modify profile permissions as needed.

5. Select the profiles this Record Type applies to.

6. Assign the page layout that includes the Submit for Approval button.

7. Click Save.

Optionally, use Record Type picklist settings to restrict the Approval Status field values available on each Record Type, or set the Approval Status field to read-only. 

## Create a Record-Triggered Flow on the Quote Object

1. Navigate to Setup > Process Automation > Flows > New Flow.

2. Select Record-Triggered Flow.

3. Set Object to Quote.

4. Set Trigger to "A record is created or updated."

5. Set Condition Requirements to "Any Condition Is Met (OR)." 

6. Add the following three conditions:

 - ApprovalStatus__c equals Recalled

 - ApprovalStatus__c equals Rejected

 - ApprovalStatus__c equals Pending 

7. Click Done.

**Add a Decision Element:**

1. Add a Decision element to the flow canvas.

2. Enter a label for the new outcome (for example, "Is In Progress").

3. Set Condition Requirements to "All Conditions Are Met (AND)."

4. Set Resource to `{!$Record.ApprovalStatus__c}`. This field is found under SBQQ__Quote__c as "Approval Status."

5. Set the operator and value to match the Pending status that indicates the quote is in progress.

6. Enter a label for the Default Outcome (for example, "Is New, Recalled, or Rejected").

7. Click Done.

**Add an Update Record Element under the Default Outcome (button visible):**

1. Connect an Update Records element to the Default Outcome path.

2. Set "How to Find Records to Update" to "Use the quote record that triggered the flow."

3. Set Condition Requirements to "None — Always Update Record."

4. Set Field to RecordTypeId and Value to the Record Type ID of the Record Type mapped to the page layout with the Submit for Approval button.

5. Click Done.

**Add an Update Record Element under the New Outcome (button hidden):**

1. Connect an Update Records element to the New Outcome path.

2. Set "How to Find Records to Update" to "Use the quote record that triggered the flow."

3. Set Condition Requirements to "None — Always Update Record."

4. Set Field to RecordTypeId and Value to the Record Type ID of the Record Type mapped to the page layout without the Submit for Approval button.

5. Click Done.

**Save and activate the Flow:**

1. Click Save and enter a Flow label.

2. Click Activate.

3. Test by creating or updating a Quote and verifying that the Submit for Approval button appears or is hidden according to the Approval Status. 

The Flow evaluates the Quote's Approval Status each time the record is created or updated, then assigns the matching Record Type. Because the two Record Types point to different page layouts, the Submit for Approval button is shown or hidden automatically without any manual page layout changes per user.

Existing Quote records will not be updated by the Flow retroactively. Assign the correct Record Type to existing records manually through the record detail page or in bulk using Salesforce Data Loader.

Ytterligare resurser
SEE ALSO
Knowledge-artikelnummer

000384614

 
Laddar
Salesforce Help | Article