Skip to main content

My events aren't arriving

When a destination stays silent, you do not need a server or a login to find out why. Run your flow against a single event offline and read the result.

npx walkeros push flow.json -e '{"name":"product add","data":{"id":"ers","price":420}}' --simulate destination.gtag

The simulation reports whether the destination accepted the event:

Simulating destination: gtag
success: true
Duration: 4302ms

Add --json to get the same result as machine-readable output ({ "success": true, "duration": 1104 }). Your flow.json must carry config.platform ("web" or "server"), otherwise bundling throws before the simulation runs.

Symptom to cause

SymptomLikely cause
No events at allSource not initialized
A destination is silentMapping mismatch
Partial or wrong dataPath does not exist
A destination is skippedRequired consent not granted
A destination throwsVendor SDK or API error

Log every event at the collector

To confirm events are flowing before you blame a vendor, add an inline console destination. It logs the name of every event the collector processes, so you can see what arrives and when.

const { elb } = await startFlow({
destinations: {
  debug: {
    code: {
      type: 'console',
      config: {},
      push: (event) => console.log('Event:', event.name),
    },
  },
  // ...your other destinations
},
});

If you see event names in the console but the real destination stays silent, the problem is downstream of the collector: a mapping mismatch, a missing consent, or a vendor error. If you see nothing, the source is not capturing or the collector never started.

Checklist

  1. Any errors in the browser console?
  2. Is the event pushed? Add the console destination above to confirm.
  3. Does the destination mapping match the entity and action names exactly? Names are case-sensitive (product add, not Product Add).
  4. Do the mapped data paths exist on the event? Log the full event and check.
  5. Is the required consent granted for the destination?
  6. Run npx walkeros validate flow.json to catch a malformed config.

Zero-install equivalent (AI assistant via MCP)

If you use the walkerOS MCP server with an AI assistant, the same offline simulation is one tool call. step is required and uses the type.name form (for example destination.gtag).

flow_simulate({
configPath: 'flow.json',
step: 'destination.gtag',
event: { name: 'product add', data: { id: 'ers', price: 420 } },
})

The response includes _hints.warnings, which flags when no destination received the event.

💡 Need implementation support?
elbwalker offers hands-on support: setup review, measurement planning, destination mapping, and live troubleshooting. Book a 2-hour session (€399)