Configure the Custom Cart Approvals Preview Page
Conga Approvals includes a built-in Preview and Submit page (Apttus_Approval__PreviewSubmitApprovals) that lets a submitter review approval steps and submit a request for any context object, including agreements, opportunities, quotes, and product configurations. This standard page works without additional development.
The Custom Cart Approvals Preview page is a purpose-built Visualforce page for the CPQ shopping cart approval workflow. Use this topic when you need to display additional cart-specific information alongside the standard approval steps. Examples include product pricing summaries, discount data, and custom business fields. Because the standard Apttus_Approval__PreviewSubmitApprovals page is part of the managed Conga package and cannot be edited, creating this custom page is the only way to add custom content to the cart approval preview.
Comparison with the Standard Preview and Submit Page
Both pages use the same Conga approval engine and display the same approval step information. The differences are in scope, entry point, customizability, and how the cart version is resolved.
| Aspect | Standard Conga Preview and Submit | Custom Cart Approvals Preview Page |
| Page | Apttus_Approval__PreviewSubmitApprovals. This is a managed page, part of the Conga package, and cannot be edited. | AptsCartApprovals. This is a custom Visualforce page that you own and can extend. |
| Controller | Managed controller inside the Conga Approvals package. The source is not accessible. | AptsCartApprovalsController. This is a custom Apex class where you can add your own SOQL queries and data logic. |
| Works with | Any object configured in Approvals Custom Config (agreements, opportunities, quotes, product configurations) | Specifically Apttus_Config2__ProductConfiguration__c (the CPQ shopping cart) |
| Entry point | Button or formula field on any object, using a URL formula: /apex/Apttus_Approval__PreviewSubmitApprovals?id={!Object.Id} | Approvals button on the Quote/Proposal page layout. Always previews the most recent Saved cart version from the Configurations related list. |
| Cart version awareness | The page uses only the record ID passed in the URL and does not track cart version history. | The controller automatically queries the most recent Saved ProductConfiguration version. It ignores older superseded versions. |
| Custom content sections | Not supported. The managed page cannot be modified. | Add custom Visualforce markup above or below the approval steps in the AptsCartApprovals.page file. |
| Button actions | Preview, Submit, Recall | Return, Submit, Submit with Attachments, Cancel Approvals |
| Dialog mode | Not supported natively. | Supports isDialog=true, which hides the cart header and Return button for clean rendering inside a modal or iframe. |
| When to use | Standard approvals for agreements, opportunities, or any non-cart object where no custom content is needed. | Cart approvals where the preview must show cart-specific data alongside the approval steps, or where a custom page layout is required for the cart workflow. |
Required Files
| File | Purpose |
| AptsCPQApprovalsConstants.cls | Shared URL parameter and status string constants. The controller extends this class. Do not modify. |
| AptsCPQApprovalsUtil.cls | Null and empty check helpers used by the controller. Do not modify. |
| AptsCartApprovalsController.cls | Custom Apex controller. Resolves the cart version, builds the approval context, and handles all button actions. Extend this file with your own logic. |
| AptsCartApprovals.page | Custom Visualforce page. Renders the approval preview and buttons. Insert your custom content sections here. |
Step 1: Create the Utility Classes
Complete the following prerequisites before you begin:
- The Conga Approvals and CPQ packages are installed in your Salesforce org.
- The standard Conga Approvals workflow is configured for the Apttus_Config2__ProductConfiguration__c object. This includes approval processes, approval steps, entry criteria, and status picklist values.
- An Approvals Custom Config record exists for Apttus_Config2__ProductConfiguration__c in .
- You have administrator access in Salesforce.
- You are familiar with Salesforce Visualforce and Apex.
- AptsCPQApprovalsConstants: This class centralizes every URL parameter name and approval status string used across the controller. The controller extends this class, so all constants are available to it directly.
- AptsCPQApprovalsUtil: This class provides null and empty check helpers that the controller uses to process URL parameters safely before acting on them.
Step 2: Create the AptsCartApprovalsController Class
This controller manages all page behavior. It determines whether the page opened from a quote or from the cart, queries the most recent product configuration version, and builds the approval context passed to the page component.
Before you customize the controller:
- To show extra columns beyond the defaults (Sequence,
Step Name, Assigned To), pass a field set name as the
arFieldSetNameURL parameter when configuring the Approvals button. The field set must exist onApttus_Config2__ProductConfiguration__c. - When the page opens from a quote (quoteId is set in the URL), the controller sets fromQuote to true, hides the cart header, and applies the Return label to the Return button. When the page opens from the cart (configId is set), the cart header is visible and labeled Return to Cart.
- Add custom SOQL queries or data transformations after the prepareContext() call in the constructor.
Step 3: Create the AptsCartApprovals Visualforce Page
<!-- === INSERT CUSTOM CONTENT ABOVE THE APPROVAL STEPS HERE === --> and <!-- === INSERT CUSTOM CONTENT BELOW THE APPROVAL STEPS HERE === --> in the page source.Step 4: Add the Approvals Button to the Quote/Proposal Page Layout
The Approvals button on the Quote/Proposal page launches the custom preview page. New installations add the button automatically. If you are upgrading, you must add it manually.
- Go to .
- Click Edit for the relevant layout.
- Drag the Approvals button from the palette into the Custom Buttons section.
- Click Save.
Step 5: Register the Custom Page in Approvals System Properties
- Go to .
- Click Manage next to Approvals System Properties.
- Click Edit.
- Enter AptsCartApprovals in the Cart Approval Preview Page field.
- Click Save.
The custom Cart Approvals Preview page is active. When a user clicks Approvals on a quote or proposal record with a configured shopping cart, the custom page opens and displays the applicable approval steps alongside any custom content you added. Agreement, opportunity, and other object approvals continue to use the standard Conga Apttus_Approval__PreviewSubmitApprovals page without any change.
