Development questions
Write a trigger to send an email notification to the Account Owner whenever a high-value Opportunity (> $50,000) is deleted, including details of who deleted it.
Use after delete, read from Trigger.old, query the Owner emails, and send one batched email call.
apex
trigger OppTrigger on Opportunity (after delete) {
Set<Id> ownerIds = new Set<Id>();
for (Opportunity o : Trigger.old) if (o.Amount > 50000) ownerIds.add(o.OwnerId);
Map<Id, User> owners = new Map<Id, User>([SELECT Id, Email FROM User WHERE Id IN :ownerIds]);
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
for (Opportunity o : Trigger.old) {
if (o.Amount > 50000) {
Messaging.SingleEmailMessage m = new Messaging.SingleEmailMessage();
m.setToAddresses(new String[]{ owners.get(o.OwnerId).Email });
m.setSubject('High-value Opportunity deleted: ' + o.Name);
m.setPlainTextBody(o.Name + ' (' + o.Amount + ') was deleted by ' + UserInfo.getName());
mails.add(m);
}
}
if (!mails.isEmpty()) Messaging.sendEmail(mails);
}
Call sendEmail once with a list, since single-email calls per transaction are limited.
apex-triggertriggercodingscenarioemail
More Development questions
- What is an Apex Trigger in Salesforce and when should you use it over Flows?
- What is the difference between before triggers and after triggers?
- Explain all Trigger context variables (isInsert, isUpdate, isDelete, isUndelete, isBefore, isAfter, isExecuting, size, operationType).
- What is the difference between Trigger.new and Trigger.old?
- In which trigger events are Trigger.new and Trigger.newMap available?
- In which trigger events are Trigger.old and Trigger.oldMap available?