How to Track Emails Sent from Salesforce: Opens, Clicks & Activity History
Most teams assume Salesforce tracks every email automatically. It doesn't. Email tracking requires deliberate setup — and even after setup, what gets captured varies significantly by sending method. Individual emails from Contact records track differently from List Emails, which track differently from Flow-triggered sends and campaign emails. Understanding what each method captures and where the gaps are is the difference between knowing exactly how email is performing and guessing at follow-up timing.
For a conceptual overview of Salesforce email tracking, see track emails in Salesforce. For troubleshooting missing tracking data, see Salesforce email tracking issues.
Required Setup: Enable Enhanced Email and Email Tracking
Before any email tracking works, three settings must be active. As Salesforce Ben's email tracking guide explains, tracking requires Lightning Experience, Enhanced Email, and Email Tracking in Activity Settings:
- Enable Lightning Experience: Required for Activity Timeline tracking. Setup → Lightning Experience → Enable.
- Enable Enhanced Email: Setup → Enhanced Email → Enable. This switches email storage from Task records to EmailMessage records — a standard Salesforce object that supports open/click data and SOQL queries. Foundation for all tracking.
- Enable Email Tracking: Setup → Activity Settings → Enable Email Tracking. Activates the tracking pixel embedded in outbound HTML emails. Without this, Salesforce sends emails but captures no engagement data anywhere in the system.
- Set Deliverability to All Email: Setup → Email → Deliverability → Access Level: All Email. Without this, Salesforce suppresses outbound email entirely — no sends, no tracking.
After these steps, individual emails sent from record pages log to the Activity Timeline as EmailMessage records with open and click status. For email setup context, see Salesforce email sending.
What Each Sending Method Tracks — and What It Misses
- Individual email from record: Sends from a Lead, Contact, or Case record. Saves as an EmailMessage record linked to the Contact. Opens and clicks appear on Activity Timeline showing 'Read' or 'Unopened' status with first-open and last-open timestamps. Most complete native tracking method.
- List Email (Send List Email): Sends a personalized template to up to 5,000 recipients per day. Returns aggregate open and click totals in the List Email report — but individual per-contact engagement does not write to each recipient's Activity History by default. Teams send 2,000 emails and see totals, but cannot identify which contacts engaged. See Salesforce email reporting for native report capabilities.
- Flow Builder Send Email action: Flow-triggered emails log to Activity History as sent records when Enhanced Email is enabled, but open and click tracking is not captured. The Send Email action doesn't embed tracking pixels natively. Engagement tracking for Flow emails requires an AppExchange tool.
- Email Alerts (Workflow Rules / Process Builder): Legacy automation method. Logs a Task to Activity History, but does not support open or click tracking. Salesforce recommends migrating from Email Alerts to Flow Builder for new automation.
- Campaign-linked List Email: When List Emails are associated with a Campaign before sending, Salesforce updates Campaign Member Status based on engagement — members move from 'Sent' to 'Opened' or 'Clicked'. This is Salesforce's most useful native reporting for mass email programs. Requires Campaign Member Status values to be configured correctly in advance. See Salesforce campaign management for setup details.
Where to Read Tracking Data: Timeline, Reports, and Log Files
- Activity Timeline (Lightning): Primary interface for individual email tracking. On any Contact, Lead, Account, or Opportunity, the Timeline shows each sent email with 'Unopened' or 'Read' status, first-open and last-open timestamps, and any tracked link clicks. Expand the email record for full detail.
- HTML Email Status (Classic): Classic equivalent of Activity Timeline. Shows the same open/read status and timestamp data on Contact and Lead records. Most organizations have migrated to Lightning.
- Email Log Files: Administrators download CSV files from Setup → Email → Email Log Files for the past 30 days. Contains delivery metadata — status, recipient, message size, timestamps — but not open or click data. Useful for deliverability audits and bounce diagnosis. See Salesforce email log.
- Campaign reports: Campaign Member reports show individual status progression from Sent → Opened → Clicked → Responded for each recipient when emails are properly linked to a Campaign. The most complete native analytics for mass sends. See Salesforce campaign performance tracking for report-building steps.
Common Tracking Failures and Their Fixes
- Opens not recording: Most likely cause: the recipient's email client blocks image loading. Salesforce open tracking relies on a 1×1 pixel image. Outlook blocks images by default; Apple Mail Privacy Protection preloads all images, generating false opens. Open data is directional — not an exact count.
- Clicks show totals only, not per-contact: Native click tracking for List Email returns aggregate counts without identifying which recipients clicked. To get per-contact click timestamps and link-level detail on individual records, an AppExchange tool that writes engagement to Activity History is required.
- Flow emails not tracking engagement: Flow-triggered emails log a sent record to Activity History but capture no opens or clicks natively. This is a known platform gap. See Salesforce email tracking issues for the full diagnostic checklist.
- Campaign report showing zero opens/clicks: Almost always a configuration issue: the Campaign was not associated with the List Email before sending, Campaign Member Status values weren't mapped to tracking events (Opened, Clicked), or the emails were sent before Campaign setup was complete. Retroactive Campaign association does not populate historical tracking data.
When Native Tracking Is Sufficient — and When It Isn't
- Sufficient: individual 1-to-1 sales emails: For sales reps sending individual emails from Contact records, Activity Timeline shows open timestamps and click activity — enough to inform timely follow-up for most sales workflows.
- Sufficient: aggregate campaign performance reporting: For teams running occasional campaigns who need total send/open/click data, native campaign reports deliver actionable metrics without additional tooling.
- Insufficient: per-contact engagement for bulk sends at scale: Marketing and ops teams sending thousands of emails who need to know exactly which contacts engaged — to trigger follow-up sequences, score leads, or personalize next sends — hit the wall of native tracking quickly. List Email doesn't write per-contact engagement to Activity History; Flow emails don't track engagement at all. See Salesforce email attribution reporting for advanced attribution approaches.
Closing the Gaps with a Native AppExchange Tool
Native AppExchange tools like MassMailer write per-contact engagement — opens, clicks, bounces, unsubscribes, timestamps — directly to Activity History on each recipient's Salesforce record for every send type: individual emails, bulk campaigns, drip sequences, and Flow-triggered sends. Sales reps see exactly who engaged and when from the Contact record. Bounce and unsubscribe events update the Email Opt Out field in real time.
This closes both major native gaps simultaneously: List Email's aggregate-only reporting, and Flow emails' complete absence of engagement data. For teams where email engagement should drive CRM workflows — triggering follow-up sequences, scoring leads, personalizing next sends — per-contact Activity History tracking is the enabling capability. The HFM Advisors case study shows how a financial services firm uses native per-contact tracking for client communication compliance and follow-up timing. For open rate optimization strategies, once tracking is in place, see improve Salesforce email open rates.
Get Per-Contact Email Tracking on Every Salesforce Record — Without the Native Gaps.
MassMailer writes opens, clicks, bounces, and unsubscribes directly to Activity History on every Contact and Lead record — for individual emails, bulk campaigns, drip sequences, and Flow-triggered sends. Real-time, per-contact, inside Salesforce. No sync, no external dashboard.
Install free on Salesforce AppExchange → massmailer.io/install
Key Takeaways
- Email tracking is not enabled by default in Salesforce — it requires enabling Lightning Experience, Enhanced Email (Setup → Enhanced Email), and Email Tracking (Setup → Activity Settings) before any open or click data is captured.
- Individual emails from Contact and Lead records provide the most complete native tracking — opens, clicks, and timestamps write to Activity Timeline as EmailMessage records once Enhanced Email is active.
- List Email tracking returns aggregate totals only — total sends, opens, and clicks — without per-contact engagement writing to individual Activity History records. This is the most common native tracking gap for marketing teams.
- Flow Builder Send Email action logs a sent record to Activity History, but captures no open or click tracking natively. Engagement tracking for Flow emails requires an AppExchange tool.
- Open tracking is inherently unreliable — Salesforce uses image-load pixels that Outlook blocks by default and Apple Mail Privacy Protection preloads, making open rates a directional signal. Click tracking is more reliable.
- Native AppExchange tools close both major gaps — writing per-contact engagement to Activity History for bulk sends and Flow-triggered emails — enabling CRM-driven follow-up, lead scoring, and next-send personalization at scale.