We checked this against the base game (the grainFlourMillUS mill and the Lua source from sdk/debugger/gameSource.zip). Five places where it can get stuck:
1. You never see the marker in the GIANTS Editor.
The marker node is just an empty TransformGroup (grainFlourMillUS.i3d:262). The game attaches the icon at runtime (PlaceableTriggerMarkers.lua:113-124). So only check it in game.
2. FS25 syntax for the marker.
<triggerMarkers> sits at placeable level, not inside the unloadTrigger:
<triggerMarkers>
<triggerMarker node="unloadTriggerMarker" adjustToGround="true" filename="$data/shared/assets/marker/markerIconUnload.i3d"/>
</triggerMarkers>
No id and no markerIcons.xml any more. That's FS22 syntax and gets ignored (grainFlourMillUS.xml:58-62, allowed attributes in PlaceableTriggerMarkers.lua:44-49).
3. Productions use sellingStation, not unloadingStation.
<productionPoint>
<sellingStation node="…">
<unloadTrigger exactFillRootNode="…" aiNode="…" fillTypes="…"/>
</sellingStation>
</productionPoint>
(grainFlourMillUS.xml:142-144, ProductionPoint.lua:79)
4. The exactFillRootNode needs the right collision.
A shape of its own with kinematic="true" compound="true" collisionFilterGroup="0x40000000" collisionFilterMask="0x20000000" nonRenderable="true" and without trigger="true" (grainFlourMillUS.i3d:264). If the group is missing, log.txt says "Missing collision group … exact fill node" and the trigger doesn't load at all (UnloadTrigger.lua:97-99).
5. On a map only as a preplaced placeable.
Copying just the geometry into the map i3d gives you neither trigger nor marker. You need a TransformGroup with onCreate="Placeable.onCreate", uniqueId and xmlFilename, an entry with isPreplaced in the map's placeables.xml, and the XML in the map's storeItems.xml (template: mapUS/config/placeables.xml:268-270).
Search log.txt for: "Missing collision group", "Missing trigger marker node", "Preplaced node not defined", "not defined in store items".
If all of that is clean and the marker is still missing: is the trigger marker option on in the menu, and does the building belong to your farm? That part is missing from the shipped source, so we couldn't prove it directly.
💡 Tip if you build with AI agents: have them check questions like this against the real game files instead of memory. The base game XMLs live under data/, the Lua source is sdk/debugger/gameSource.zip in the game folder. With our FSMW GIANTS Editor MCP your agent drives the editor directly and searches the base game.