Skip to main content
Ask your AI

One event, four tools

This web flow sends one event stream to four analytics tools at once, with no per-tool mapping. The collector fans a single event out to every destination, and each tool receives it in its own native call shape.

{
  "version": 4,
  "flows": {
    "default": {
      "config": {
        "platform": "web",
        "bundle": {
          "packages": {
            "@walkeros/collector": { "version": "^4" },
            "@walkeros/web-source-browser": { "version": "^4" },
            "@walkeros/web-destination-gtag": { "version": "^4" },
            "@walkeros/web-destination-amplitude": { "version": "^4" },
            "@walkeros/web-destination-mixpanel": { "version": "^4" },
            "@walkeros/web-destination-posthog": { "version": "^4" }
          }
        }
      },
      "sources": {
        "browser": {
          "package": "@walkeros/web-source-browser",
          "config": { "settings": { "pageview": true } }
        }
      },
      "destinations": {
        "ga4": {
          "package": "@walkeros/web-destination-gtag",
          "config": { "settings": { "ga4": { "measurementId": "G-XXXXXXXXXX" } } }
        },
        "amplitude": {
          "package": "@walkeros/web-destination-amplitude",
          "config": { "settings": { "apiKey": "test-project" } }
        },
        "mixpanel": {
          "package": "@walkeros/web-destination-mixpanel",
          "config": { "settings": { "apiKey": "test-project" } }
        },
        "posthog": {
          "package": "@walkeros/web-destination-posthog",
          "config": { "settings": { "apiKey": "phc_test" } }
        }
      },
      "collector": { "run": true }
    }
  }
}

Run it​

Save the config as flow.json and push an order event with all four destinations mocked, one --simulate per destination. Each simulation runs its destination on its own, so this compares how each vendor receives the event; it is not a fan-out check of one running flow. This needs @walkeros/cli 4.7.1 or later. Nothing is sent to any vendor:

npx walkeros push flow.json -e '{"name":"order complete"}' \
  --simulate destination.ga4 --simulate destination.amplitude \
  --simulate destination.mixpanel --simulate destination.posthog

You should see, besides an Output: line naming the built bundle before each Simulating line:

Simulating destination: ga4
Simulating destination: amplitude
Simulating destination: mixpanel
Simulating destination: posthog
success: true
  destination.ga4
    mapping: none
    call window.gtag("config","G-XXXXXXXXXX",{})
    call window.gtag("event","order_complete",{"send_to":"G-XXXXXXXXXX"})
  destination.amplitude
    mapping: none
    call amplitude.initAll("test-project",{"analytics":{"autocapture":false,"identityStorage":"none"}})
    call amplitude.track("order complete",{})
  destination.mixpanel
    mapping: none
    call mixpanel.init("test-project",{"track_pageview":false,"autocapture":false})
    call mixpanel.track("order complete",{})
  destination.posthog
    mapping: none
    call posthog.init("phc_test",{"autocapture":false,"capture_pageview":false,"capture_pageleave":false,"loaded":"[Function loaded]"})
    call posthog.capture("order complete",{})
  Duration: 58844ms

What each tool receives​

The collector fans the same event out to all four destinations, and each one forwards it in its own native call (from the packages' examples):

gtag('event', 'order_complete', { send_to: 'G-XXXXXXXXXX' })
amplitude.track('order complete', {})
mixpanel.track('order complete', {})
posthog.capture('order complete', {})

That is the routing half of the job: one stream, four tools, no per-tool code. The payload half is mapping: per-destination rules reshape the same event into each tool's expected schema, like the full GA4 purchase payload in GA4 ecommerce. Without mapping the name arrives in each tool's native call; with mapping the properties do too.

Next steps​

  • GA4 ecommerce: Map an order into a full GA4 purchase payload
  • Mapping: Transform events per destination
💡 Need implementation support?
elbwalker offers hands-on support: setup review, measurement planning, destination mapping, and live troubleshooting. Book a 2-hour session (€399)