Journey

Journey Builder SQL Patterns with Data Views

7 min read · SFMC SQL practitioner guide

Journey metadata vs. send tracking

_Journey stores version-level journey metadata (name, status, version GUID). _JourneyActivity maps canvas nodes — email steps expose JourneyActivityObjectID, which ties to triggered send definitions on tracking views.

Email sends from Journey Builder appear in _Sent and _Job with TriggererSendDefinitionObjectID populated.

Join journey activities to sends

SELECT
  j.JourneyName,
  ja.ActivityName,
  ja.ActivityType,
  COUNT(DISTINCT s.SubscriberKey) AS Sends
FROM _Journey j
INNER JOIN _JourneyActivity ja ON j.VersionID = ja.VersionID
INNER JOIN _Sent s
  ON ja.JourneyActivityObjectID = s.TriggererSendDefinitionObjectID
WHERE j.JourneyStatus = 'Running'
  AND s.EventDate >= DATEADD(day, -14, GETDATE())
GROUP BY j.JourneyName, ja.ActivityName, ja.ActivityType
ORDER BY Sends DESC

Common pitfalls

  • Journey versions rotate — filter on the active VersionID or recent CreatedDate when journeys are re-published.
  • Non-email activities (WAIT, DECISION) will not join to _Sent — filter ActivityType or expect null send rows.
  • Journey data is BU-scoped to where the journey was built.

Related reference: _Journey · _JourneyActivity · _Sent