Quick answer: The generating emitter must run before the receiving emitter, the event name/payload must match exactly, and the receiver’s Event Handler properties (Source, Execution Mode) must point at that event.
A “collision spawns sparks” setup uses a Generate Collision Event on one emitter and an Event Handler on another. The sparks emitter never reacts.
Emitter Order
Events propagate within a frame, generator-to-receiver. In the System’s emitter list, the generator must be above the receiver — otherwise the receiver runs first and sees nothing.
Match the Event
The receiver’s Event Handler has a Source dropdown — it must reference the exact event the generator produces (e.g. the collision event), by the same name. A renamed event silently breaks the link.
Execution Mode
The Event Handler stage has an Execution Mode: Spawned Particles (spawn N per event) or Every Particle / Single Particle. If it’s set to a mode that doesn’t spawn, you get no visible result even though the event arrived.
Payload Names
If you read event payload attributes (position, normal, velocity), the names must match what the generator wrote. A typo means the handler runs but reads zeros.
Verifying
Open the Niagara debugger — the event count on the generator is non-zero, and the handler stage shows matching reads. Sparks appear at collision points.
“Generator above receiver, matching event source, a spawning execution mode. All three or nothing fires.”
For cross-emitter communication at scale, Niagara Data Channels are more robust than the classic event system — worth migrating heavy setups.