Engagement

Re-Engagement SQL: Finding Non-Openers After Send

5 min read · SFMC SQL practitioner guide

The non-opener pattern

Re-engagement journeys often target subscribers who received a send but never opened. Use a LEFT JOIN from _Sent to _Open on the four keys, then filter where no open exists.

Add _Subscribers to exclude unsubscribed or bounced profiles before export to a Data Extension.

Non-openers for a recent job

SELECT DISTINCT
  s.SubscriberKey,
  sub.EmailAddress,
  s.JobID,
  s.EventDate AS SentDate
FROM _Sent s
INNER JOIN _Subscribers sub ON s.SubscriberKey = sub.SubscriberKey
LEFT JOIN _Open o
  ON s.JobID = o.JobID
  AND s.ListID = o.ListID
  AND s.BatchID = o.BatchID
  AND s.SubscriberID = o.SubscriberID
WHERE s.EventDate >= DATEADD(day, -14, GETDATE())
  AND o.SubscriberID IS NULL
  AND sub.Status = 'active'

Operational notes

  • Replace the date window with your re-engagement lookback policy.
  • Consider IsUnique on _Open if you only care about first-open absence.
  • Stage results to a DE before triggering a Journey entry event.

Related reference: _Sent · _Open · _Subscribers