Per-transaction Certified Managed Package Limits
Certified managed packages are managed packages that have passed AppExchange security checks for most transaction limits. Certified managed packages are developed by Salesforce ISV partners and installed in our org from AppExchange under a unique namespace.
With this governor limit, there is no limit to the number of certified namespaces that can be accessed through a single transaction. However, the prerequisite is that the number of operations that can be performed in a single namespace does not exceed the per-transaction limits. In addition, the total number of operations that can be performed in any transaction across the namespace is limited. The total limit for each namespace is 11 times. Shared limits on all namespaces are not affected by collective limits, such as a limit on maximum CPU time.
Description |
Cumulative Cross-namespace Limits |
The total number of SOQL queries issued |
1,100 |
The total number of records retrieved by Database.getQueryLocator |
110,000 |
The total number of SOSL queries issued |
220 |
The total number of DML statements issued |
1,650 |
The total number of callouts (either HTTP requests or Web services calls) in a transaction |
1,100 |
The total number of sendEmail methods allowed |
110 |
All transaction limits count individually for certified managed packages expect:
- Maximum CPU time
- Total heap size
- Maximum number of unique namespaces
- Maximum transaction execution time
Each of these limits applies to all transactions, even as the number of certified managed packages running in the same transaction. If we install an AppExchange package created by an uncertified Salesforce ISV partner, the code for that particular package will not have its own governor limits. All resources used by the package are counted toward the total governor limit of the org. All collection resource messages and warning messages are also generated based on the corresponding package namespace.

Static Apex Limits
So far, we know that there are different governor limits for each description we give in Apex. There are more governor limits for Static Apex, i.e., for different kinds of callouts, queries, loops, records, and batch sizes, along with different transactions. Let’s look at these limits individually:
Description |
Limits |
The default timeout of callouts (either HTTP requests or Web services calls) in a transaction |
10 seconds |
The maximum size of the callout request or response (either HTTP request or Web services call) |
6 MB for synchronous Apex or 12 MB for asynchronous Apex |
The maximum SOQL query runtime before Salesforce cancels the transaction |
120 seconds |
The maximum number of class and trigger code units in the deployment of Apex |
5,000 |
Apex trigger batch size |
200 |
For loop list batch size |
200 |
The maximum number of records that are returned for a Batch Apex query in Database.QueryLocator |
50 million |
Per-transaction Apex Limits
Per-transaction Apex Limits are used for counting each Apex transaction. When we talk about Batch Apex, these specific limits in the execution method for executing each batch of records will be reset. The following table summarizes the limits for the synchronous and asynchronous Apex:
Description |
Synchronous Limits |
Asynchronous Limits |
The total number of SOQL queries issued |
100 |
200 |
The total number of records retrieved by SOQL queries |
50,000 |
|
The total number of records retrieved by Database.getQueryLocator |
10,000 |
|
The total number of SOSL queries issued |
20 |
|
The total number of records retrieved by a single SOSL query |
20,000 |
|
The total number of DML statements issued |
150 |
|
The total number of records processed as a result of DML statements, Approval.process, or database.emptyRecycleBin |
10,000 |
|
The total stack depth for any Apex invocation that recursively fires triggers with insert, update, or delete statements |
16 |
|
The total number of callouts (either HTTP requests or Web services calls) in a transaction |
100 |
|
The maximum cumulative timeout for all callouts (either HTTP requests or Web services calls) in a transaction |
120 seconds |
|
The maximum number of methods with the future annotation allowed per Apex invocation |
50 |
0 in batch and future contexts and 1 in the queueable context |
The maximum number of Apex jobs added to the queue with System.enqueueJob |
50 |
1 |
The total number of sendEmail methods allowed |
10 |
|
The total heap size |
6MB |
12MB |
The maximum CPU time on Salesforce servers |
10,000 milliseconds |
60,000 milliseconds |
The maximum execution time for each Apex transaction |
10Â minutes |
|
The maximum number of push notification method calls allowed per Apex transaction |
10 |
|
The maximum number of push notifications that can be sent through each push notification method call |
2,000 |
|
