[{"data":1,"prerenderedAt":179},["ShallowReactive",2],{"article-eadapter-milestone-never-fired":3},{"id":4,"title":5,"author":6,"body":7,"category":161,"description":162,"extension":163,"featured":164,"image":165,"meta":166,"navigation":167,"path":168,"publishedAt":169,"readingTime":170,"seo":171,"stem":172,"tags":173,"videoUrl":177,"__hash__":178},"articles\u002Farticles\u002Feadapter-milestone-never-fired.md","The CargoWise Milestone Completed. The Message Never Fired.","Don Dappa",{"type":8,"value":9,"toc":155},"minimark",[10,19,22,25,32,37,58,62,69,135,138,141],[11,12,13,14,18],"p",{},"CargoWise does not send outbound messages because a shipment changed. It sends them because a workflow milestone completed ",[15,16,17],"strong",{},"and"," that milestone carries an explicit instruction to send.",[11,20,21],{},"From Complect's documentation of the platform: \"Workflow Templates will require a Completion Trigger Action adding for any Milestones or Triggers that are required to send eAdaptor outbound messages.\"",[11,23,24],{},"Without that trigger action, the milestone completes — visibly, successfully, green tick and all — and no message fires. Nothing errors. Nothing logs. Your integration simply never hears about events it was built to consume.",[11,26,27,28,31],{},"This is the most dangerous failure mode in the outbound pipeline precisely because it isn't a failure. Every component you own is healthy. The message was never born. When a downstream team reports missing data, check trigger configuration ",[15,29,30],{},"before"," debugging a single line of your own code — the field data says missing or misconfigured workflow triggers are the most common reason for visibility gaps.",[33,34,36],"h2",{"id":35},"xue-or-xus-send-the-right-size-of-message","XUE or XUS: send the right size of message",[11,38,39,40,44,45,49,50,53,54,57],{},"Each trigger sends one of two message types. The one-line rule: XUE (",[41,42,43],"code",{},"UniversalEvent",") carries minimal data — a record ID plus the event — use it when the consumer only needs to know ",[46,47,48],"em",{},"something happened",". XUS (",[41,51,52],{},"UniversalShipment",") carries full shipment details — use it when the consumer needs ",[46,55,56],{},"the data",". XUE is smaller and faster; a visibility platform subscribed to full XUS payloads for every status twitch is paying full-shipment freight for a one-bit fact.",[33,59,61],{"id":60},"the-trigger-map","The trigger map",[11,63,64,65,68],{},"The sourced recommendation: create a comprehensive trigger map ",[46,66,67],{},"before configuring anything"," — which milestones fire which messages to which systems — and review it whenever an integration or workflow changes. Example rows:",[70,71,72,91],"table",{},[73,74,75],"thead",{},[76,77,78,82,85,88],"tr",{},[79,80,81],"th",{},"Milestone",[79,83,84],{},"Trigger action",[79,86,87],{},"Message",[79,89,90],{},"Destination",[92,93,94,109,123],"tbody",{},[76,95,96,100,103,106],{},[97,98,99],"td",{},"Booking Confirmed",[97,101,102],{},"Send XUS",[97,104,105],{},"Universal Shipment",[97,107,108],{},"Visibility platform",[76,110,111,114,117,120],{},[97,112,113],{},"Customs Lodged",[97,115,116],{},"Send XUE",[97,118,119],{},"Universal Event",[97,121,122],{},"Compliance system",[76,124,125,128,130,132],{},[97,126,127],{},"Delivered",[97,129,102],{},[97,131,105],{},[97,133,134],{},"ERP for invoicing",[11,136,137],{},"In production the map needs more columns — owner, tested-in-non-prod date, dedupe notes — because a trigger map is not documentation, it's an operational register. Two hygiene rules with it: test every milestone-trigger combination in a non-production environment (wrong-time triggers cause duplicate messages or premature notifications), and centralise trigger management so two teams don't wire the same milestone twice.",[139,140],"hr",{},[11,142,143,149,150],{},[15,144,145,146],{},"Chapter 4 of ",[46,147,148],{},"eAdapter in Production"," covers the full workflow model, duplicate-trigger governance, and ships a blank trigger-map worksheet with the book. ",[151,152,154],"a",{"href":153},"\u002Feadapter\u002Fproduction-ops?channel=article_triggers","Get Vol 2 →",{"title":156,"searchDepth":157,"depth":157,"links":158},"",2,[159,160],{"id":35,"depth":157,"text":36},{"id":60,"depth":157,"text":61},"technical","CW only sends outbound messages when a milestone carries a Completion Trigger Action. Why the most dangerous outbound failure isn't a failure at all — and the trigger map that prevents it.","md",false,"\u002Fimages\u002Farticles\u002Feadapter-milestone-trigger.webp",{},true,"\u002Farticles\u002Feadapter-milestone-never-fired","2026-09-02",4,{"title":5,"description":162},"articles\u002Feadapter-milestone-never-fired",[174,175,176],"CargoWise eAdapter","workflow triggers","milestones",null,"DNsCNa9RkF1s8XS7qbQC3SgNinaYZZV3z28dPPFQlGg",1788800213425]