Find your content:

Search form

You are here

How should I determine whether to use Before or After when writing a trigger?


The title pretty much says it all.

Attribution to: jackerman09

Possible Suggestion/Solution #1

Depends on your usage. From my experience here's the break down:


  • I'm updating the record that's being updated/inserted - or doing something based on the record being modified
  • Examples: Set value of a pick list based on criteria. Send apex e-mail based on the record updated/inserted


  • I'm updating or creating records that are NOT being updated/inserted
  • Examples: Create a task of an Opportunity that's been edited, Change a look up value on a related record from the Opportunity being edited

The main thing to consider is that the Before happens before the data has been written to the server. This means you can modify the records in "" without having to call a separate "Update." This is ideal if you want to modify data in the records within

After happens after the data has been written to the server. This is important when wanting to create additional related records (Can't create a related record until AFTER the parent has been inserted).

I find about 95% of all the triggers I have ever written are Before Update/Insert. It's very rare that I need a trigger that runs AFTER.

Attribution to: Salesforce Wizard

Possible Suggestion/Solution #2

Before Trigger: In case of validation check in the same object

After Trigger: Insert/Update related object, not the same object

Attribution to: J_B

Possible Suggestion/Solution #3

Updating the records being handled by the trigger must be done in the before trigger.

Validating the records being handled by the trigger should ideally be done in the after trigger. At this point no other data changes on the trigger records are admitted (for example by other triggers) - this is the safest point at which to validate the data.

Initiating updates on related records (including chatter posts), sending emails etc., can be done either in before or after triggers. For example:

  • if you need a record id (on an insert) to use in a lookup field in a related object, then this needs to be done in the after trigger
  • if you want to insert a related record and use its id in a lookup field on the trigger record, then this has to be done in the before trigger
  • if you need to use the record autonumber/name (e.g. in an email) then this must be done in the after trigger

Attribution to: Stephen Willcock

Possible Suggestion/Solution #4

enter image description hereHere's the gist of When to use which trigger.


Attribution to: happy
This content is remixed from stackoverflow or stackexchange. Please visit

My Block Status

My Block Content