When it comes to case management in Salesforce, not all cases are created equal—and the channel through which a case is raised often signals how urgent it is. For instance, a support request made over the phone is typically more time-sensitive than one submitted via email or web.
To help prioritize customer service efforts more efficiently, this blog walks you through an elegant Apex trigger that automatically sets the Priority of a Case based on its Origin. If the Origin is “Phone”, the trigger sets the Priority to “High”. For all other Origins, the Priority is automatically set to “Low”. This allows teams to focus on urgent tickets without relying on manual input from users or agents.
The logic is executed during the before insert context and ensures the record is updated before it’s even saved to the database.
🧠 Why This Trigger Is Essential
Timely responses are everything in support and service operations. But when teams are handling hundreds (or thousands) of Cases:
-
Agents need to know which tickets to prioritize
-
Supervisors need real-time metrics on urgent issues
-
Automation needs to route tasks based on priority levels
Without a reliable system for setting Case priority, tickets can sit unnoticed—especially if users forget to mark them properly.
With this trigger:
-
Cases are automatically prioritized at creation
-
Phone-origin cases get high visibility and faster response
-
Service teams can work more efficiently with fewer manual steps
-
Reports and dashboards instantly reflect urgency levels
It’s a small automation that leads to a big boost in customer experience.
🔍 What This Blog Covers
-
How to build a before insert Apex trigger for Case object
-
Why setting Priority based on Origin improves case triage
-
How to default low-priority for all non-phone cases
-
The benefits of pre-save field updates vs. post-save processes
-
Where this logic fits into a scalable case management strategy
This is an ideal starting point for orgs looking to introduce smarter automation around service workflows.
🎯 Real-World Use Cases for This Trigger
-
Call centers prioritizing cases submitted via phone over email
-
Support teams needing real-time visibility into urgent issues
-
Managed service providers triaging incoming tickets based on communication channel
-
Customer experience leaders ensuring live contact cases aren’t missed
-
IT service desks streamlining workload for better response times
Whether you’re managing B2B support, internal IT helpdesks, or external customer queries—this automation keeps you responsive and focused.
👨💻 Developer & Admin Tips
Let’s break down how this trigger works:
-
It fires before a Case is inserted into the system
-
It checks the value of the
Origin
field (CaseOrigin) -
If the Origin is Phone, the
Priority
is set to High -
For any other Origin (Email, Web, Chat, etc.), the Priority is set to Low
-
All of this happens before the record is committed, keeping your data clean and fast
The logic is lightweight and runs without needing any external queries, making it:
-
Efficient and fast
-
Bulk-safe
-
Perfect for high-volume Case orgs
Want to take it a step further?
-
Add logic for additional Origin types (e.g., Chat = Medium, Email = Low)
-
Combine with auto-assignment rules or case queues
-
Send alert notifications for high-priority cases
-
Add exception handling or logging for analytics
Make sure to test the trigger by:
-
Creating cases from different Origins
-
Bulk inserting cases using import tools
-
Validating field values in list views or reports
Also, consider reviewing existing Flows, Processes, or Assignment Rules to ensure there’s no conflict or overlap in logic.
🎥 Live Walkthrough – YouTube Playlist
Need help visualizing the implementation? Check out the Salesforce Makes Sense YouTube playlist for a complete walkthrough. In the video, you’ll learn:
-
How to write and deploy this Apex logic
-
Testing strategies to ensure smooth implementation
-
Visual confirmation that priority is set correctly
-
Bonus tips for making your service workflows even smarter
This is a great resource whether you’re an admin learning Apex or a dev refining your trigger patterns.
Solution:
trigger CaseTrigger on Case (before insert) {
if(Trigger.isBefore && Trigger.isInsert) {
for (Case caseRecord : Trigger.NEW) {
if (caseRecord.CaseOrigin == ‘Phone’) {
caseRecord.Priority = ‘High’;
}
else{
caseRecord.Priority = ‘Low’;
}
}
}
}