Salesforce governor execution limits ensure the efficient use of resources on the Force.com multi-tenant platform, which is a single resource shared by many customers and organizations. To ensure that no customer monopolizes resources, Salesforce.com has created a set of limits that governs the code execution. Whenever a governor limit is exceeded, the platform halts the execution of the program and displays an error.
Apex code is executed on Salesforce.com servers as part of atomic transactions. Apex transactions ensure the integrity of data. The Apex run-time engine strictly enforces limits to ensure that the Apex code or processes do not monopolize shared resources.
A single trigger execution is one transaction. Most of the governor limits are per-transaction based and some limits are not transaction based. For example, the number of API calls in an org or email notifications that are reset every 24 hours. Salesforce has established the following governor limits.
- Per-Transaction Apex Limits
- Per-Transaction Certified Managed Package Limits
- Lightning Platform Apex Limits
- Static Apex Limits
- Size-Specific Apex Limits
- Miscellaneous Apex Limits
For example, Per-Transaction Apex Limits count for each Apex transaction. For Batch Apex, these limits are reset for each execution of a batch of records in the execute method.
When CPQ features are implemented in a specific way, they can reach the Per-Transaction Apex Limits. Therefore, this section describes Per-Transaction Apex Limits. For other Salesforce governor limits, refer to https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm.