Expand my Community achievements bar.

Join us on September 25th for a must-attend webinar featuring Adobe Experience Maker winner Anish Raul. Discover how leading enterprises are adopting AI into their workflows securely, responsibly, and at scale.

Troubleshooting Step Events in Adobe Journey Optimizer: Diagnosing Errors, Discards, and Failures for Reliable Customer Journeys

Avatar

Employee

6/30/25

Troubleshooting Step Events in Adobe Journey Optimizer: Diagnosing Errors, Discards, and Failures for Reliable Customer Journeys

This is Part 2 of a 3-part series on Step Events in Adobe Journey Optimizer. Jump to: Mastering Step Events in Adobe Journey Optimizer: Fundamentals, Schema, and Essential Queries for Da... | Troubleshooting Step Events in Adobe Journey Optimizer: Diagnosing Errors, Discards, and Failures fo... | Optimizing and Validating Adobe Journey Optimizer Step Events: Performance Analytics, Feedback Integ...

Schema disclaimer – Field names may evolve. Always verify against the public XDM reference: https://github.com/adobe/xdm/tree/master/docs/reference/adobe/experience/journeyOrchestration .

Picture an email that never leaves the station. Marketing is fuming, DevOps is shrugging, and you're the last line of defence. Time to interrogate Step Events.

Adobe's stock query examples include a basic error count per node; this post shows you how to diagnose those errors in style.

Already comfortable counting entrances/exits? Jump back to Step Events, Part 1: Fundamentals for refreshers; then continue here.

 

i) Understanding Error Fields: Decoding Step Event Failures in Adobe Journey Optimizer

Field What it captures

actionExecutionError High-level message (e.g. ACTION_EXECUTION_ERROR )
actionExecutionErrorCode Partner-specific code (SMTP, SMPP, HTTP)
actionExecutionOriginError Origin system description
fetchError , fetchErrorCode Errors during personalisation fetch

Only one of these needs to be non-NULL for the step to be considered "in error".

ii) Node-Level Error Heatmap

When things go wrong, the first question is 'where?'. This query pinpoints which journey nodes are generating the most errors.

SELECT _experience.journeyOrchestration.stepEvents.nodeName                AS node,
       COUNT(DISTINCT _experience.journeyOrchestration.stepEvents.profileID) AS profiles
FROM   journey_step_events
WHERE  _experience.journeyOrchestration.stepEvents.journeyVersionID = '<journeyVersionID>'
  AND  timestamp > (NOW() - INTERVAL '6 hour')
  AND (
        _experience.journeyOrchestration.stepEvents.actionExecutionError IS NOT NULL OR
        _experience.journeyOrchestration.stepEvents.fetchError IS NOT NULL)
GROUP  BY node
ORDER  BY profiles DESC;

image.png

iii) Drill-Down for a Single Action

Now that we know the 'where,' let's find the 'why.' This gives you the raw error codes for a specific, problematic action node.

SELECT timestamp,
       _experience.journeyOrchestration.stepEvents.profileID            AS profile,
       _experience.journeyOrchestration.stepEvents.actionExecutionError AS err,
       _experience.journeyOrchestration.stepEvents.actionExecutionErrorCode AS code
FROM   journey_step_events
WHERE  _experience.journeyOrchestration.stepEvents.journeyVersionID = '<journeyVersionID>'
  AND  _experience.journeyOrchestration.stepEvents.nodeName = '<Node-Name-Unique>'
  AND  _experience.journeyOrchestration.stepEvents.actionExecutionError IS NOT NULL
ORDER  BY timestamp DESC
LIMIT  100;

Why unique Node Name? If your canvas re-uses the same label, use nodeID instead.

 

image.png

iv) Fetch vs. Send – Which Side Failed?

Is the problem with getting the personalization data (fetch), or sending the message (execution)? This query settles the debate.

SELECT CASE WHEN fetchError IS NOT NULL THEN 'fetch-error'
            WHEN actionExecutionError IS NOT NULL THEN 'execution-error' END AS stage,
       COUNT(*) AS occurrences
FROM   journey_step_events
WHERE  _experience.journeyOrchestration.stepEvents.journeyVersionID = '<journeyVersionID>'
      AND  _experience.journeyOrchestration.stepEvents.nodeName = '<Node-Name-Unique>'
GROUP  BY stage;

v) Triage Workflow

  1. Run the heat-map query – identify the hottest node.
  2. Drill into that node for last N hours.
  3. If fetch errors dominate → look at data prep & personalisation sources.
  4. If execution errors dominate → contact support and inspect action provider logs (Message, custom action, etc.).

vi) Dispatcher & State-Machine Discards

1. EVENT_WITH_NO_JOURNEY (Dispatcher)

When an incoming event matches no running journey, the Dispatcher drops it. Use this query to trend such mis-routed events.

SELECT DATE(timestamp) AS event_day,
       COUNT(*)        AS discards
FROM   journey_step_events
WHERE  _experience.journeyOrchestration.serviceEvents.dispatcher.eventType = 'EVENT_WITH_NO_JOURNEY'
GROUP  BY event_day
ORDER  BY event_day DESC;

image.png

2. State-Machine Discard Taxonomy

If the event did reach a journey but was later rejected, the State-Machine records the reason.

eventType Meaning First Fix

terminatedJourneyVersion Version stopped/deleted Republish journey
reentranceNotAllowed Re-entrance policy blocked Allow re-entry or start new instance
expiredInstance Instance >30 days Shorten journey or re-start
journeyVersionLoadingError Runtime load failed Contact support

3. Query Template

SELECT _experience.journeyOrchestration.serviceEvents.stateMachine.eventType AS reason,
       _experience.journeyOrchestration.stepEvents.journeyVersionID         AS jvid,
       COUNT(*)                                                             AS profiles
FROM   journey_step_events
WHERE  _experience.journeyOrchestration.serviceEvents.stateMachine.eventCode = 'discard'
GROUP  BY reason, jvid;

image.png

Summary & What's Next

You now have a systematic playbook for interrogating Step Events when things go sideways— from zeroing-in on the hottest error nodes to dissecting segment-export discards. In Part 3 we take the gloves off and focus on performance and guardrails.

Continue your journey: Mastering Step Events in Adobe Journey Optimizer: Fundamentals, Schema, and Essential Queries for Da... | Optimizing and Validating Adobe Journey Optimizer Step Events: Performance Analytics, Feedback Integ...

1 Comment