See Testim Mobile in action. Live demo with Q&A on Apr 29 | Save your spot

Apex Triggers in Salesforce: A Beginner’s Guide

Salesforce is the most popular cloud-based customer relationship management (CRM) platform. It can help you grow your business as it…

By Testim,

Salesforce is the most popular cloud-based customer relationship management (CRM) platform. It can help you grow your business as it enables you to understand your customers’ needs better.

As Salesforce becomes increasingly essential to businesses, they seek more sophisticated and automated solutions for specific tasks to improve performance. Automating business processes is one of Salesforce’s key strengths. Part of the automation takes place in separate custom code, which in most cases is initiated by what is known as a trigger.

Salesforce’s Apex triggers will help you automate a variety of processes. You can execute custom tasks that will run before and after database events, such as data insertion, data updates, etc.

This post explains what Apex triggers are and how they’re used. In addition, it includes a basic Apex trigger example, a short course in how to test it, and best practices you can implement.

What Are Apex Triggers?

Apex is a coding language of Salesforce. It can be invoked or started using triggers. A trigger is a set of Apex code that runs before or after data manipulation language (DML) events.

A DML event could be a variety of data processing tasks that include the standard insert, update, and delete commands.

With Apex triggers, you can automate tasks that would otherwise be nearly impossible to accomplish using only the Salesforce user interface. Triggers enable you to create custom scripts that you can implement according to your needs, and the only limitation is your coding skills.

There are two Salesforce Apex trigger types:

  • Before triggers. These are helpful in cases that require a validation process before accepting a change. They run before any database changes.
  • After triggers. These are helpful in cases where you need to modify your database records and when the necessary value is stored in other records. They run after any database changes.

Both types will help you perform custom tasks and manage records effectively. They can help you perform bulk actions as they can handle several records simultaneously.

When Should You Use Apex Triggers in Salesforce?

There are several ways to automate processes in Salesforce that don’t require coding, like process builders, workflows, etc. Although these automation tools are a good option for some particular tasks, they can’t create custom automation as triggers can.

Triggers are useful for several cases:

High data volume. Triggers can be effective when dealing with a large amount of data. They’re definitely worth considering, especially if you’re using a process builder, which tends to have difficulties handling large amounts of data.

Execution order. Salesforce executes events in a specific order. A trigger helps control the order of events.

Complex logic. Using the process builder can be challenging to automate a complex task. Most likely, it won’t handle it, and it will lead to a runtime error. For advanced and complicated tasks, triggers are faster and more efficient.

Effective troubleshooting. When using a process builder, it’s hard to locate the source of an error and solve it. If something goes wrong, all your efforts are lost. Apex triggers allow you to save partially successful code, they are easier to debug, and exception handling is more precise.

Apex Triggers Syntax

Apex triggers are powerful and relatively easy to create. There are several scenarios where they’re necessary. Triggers are something that administrators can write without specializing in Apex coding. If you know how to do it, you’ll be able to do much more within Salesforce, and the various manipulations you can perform with data, records, workflows, and so on will be easier.

The following is a basic example of an Apex Trigger script:

trigger example

Let’s break the syntax down so you can understand it better. ChangeMaritalStatus is the name of your trigger. It’s up to you to provide a meaningful name that aligns with naming conventions. Contact represents the object that the trigger will run against. Inside the parentheses, you need to specify when exactly the trigger will run. In this example, you need to make changes before inserting a record. Therefore, you have to use the before insert trigger event. Finally, the body of the trigger includes your logic.

Boilerplate Apex trigger syntax can be summarized as follows:

boilerplate code syntax

How to Test Your Trigger

Now that you’ve written your Apex trigger, you need to test it before you can deploy it. Salesforce has strict testing and code coverage rules that require you to test a minimum of 75 percent of your code before it allows you to deploy it.

To achieve test coverage for your trigger, you must write a test class. This will verify that the trigger runs and performs the action indicated within its body when a new contact is created.

test trigger example

Find out more about how to test Apex triggers here.

Apex Trigger Best Practices

Implementing best practices will help you avoid common errors and develop better Apex triggers. Below are some of the most effective approaches you can use:

Run minimum triggers for each object. Ideally, you should use only one trigger for each object. If you have more than one for a single object, Salesforce can’t guarantee that the order of execution will be as you intend. Also, this practice will make it easier to test and manage your triggers.

Bulkify your code. Bulkify means that your code can process multiple records at a time. Suppose your trigger initiates from a bulk DML. In that case, it must be able to process all the records of the collection rather than a single record as it usually does when initiated from the user interface.

Remove logic from your triggers. Instead, write your logic in an Apex class and call it from your trigger. This will make your trigger code easier to test and maintain.

Keep for loops simple. Salesforce enforces runtime and data limitation measures called governor limits to avoid performance issues and optimize processing. Having DML statements and SOQL queries inside for loops will likely exceed them and degrade performance.


Triggers are one of the essential concepts in Apex and a necessary aspect of every Salesforce project. They allow you to perform various actions that will help you automate your processes, improve your data management, and solve complex scenarios that you couldn’t solve with a workflow or process builder. Of course, you should follow best practices to ensure optimal results.

You can learn more about Salesforce’s Apex triggers and find code examples in Apex’s developer guide. Also, Salesforce has a free online learning platform where you can learn how to use Apex triggers in detail.

Are you using Salesforce? Testim for Salesforce is a powerful AI-powered testing tool that will help you automate and simplify your Salesforce application testing effort and test your triggers effectively.

Learn more about how Salesforce tests Salesforce and see how Testim can help.

What to read next

Salesforce Testing: A Practical Guide