Skip to content

Tracking: where to start ​

The whole tracking path in four steps, the ways to do each step, and which way fits your team.

Tracking checks the analytics events your QA build sends while a flow runs. It has four steps, and most steps have more than one way. Pick a way for each step; each way links to the page that explains it.

The path ​

StepYouResult
1. Receive eventsPoint the QA build at Astra ScoutEvents from the app show up in the run
2. Have a catalogKeep one list of events and rules per appEvery event is checked against it
3. Declare checks in a flowSay which events each action must send (assertEvents)A ✓ or ✕ at the line
4. Read the resultsLook at the runYou know what passed, failed or differs

Steps 2 and 3 are optional for a first look: after step 1, run a flow to see what the app sends.

A first look ​

  1. Install a QA build that sends its events to Astra Scout. Step 1 says what the QA build needs.

  2. Open the Tracking window with Window → Tracking (Shift+Cmd+T). It is empty until a run sends events.

    The Tracking window before the first run

  3. Run a flow: Run Test (Cmd+R).

  4. In the runner, open the Tracking tab. It sums up the newest run: the verdict, the counts and the first problem.

    The runner's Tracking tab after a run

  5. Click Open Tracking Window… to see every event the run sent. The window follows the newest run.

    The Tracking window with the events of a run

Which way should I use? ​

Your situationStart with
I only want to see what the app sendsDo step 1, run a flow, open the Tracking window (Window → Tracking, Shift+Cmd+T)
My team already has a taxonomy sheetImport… the sheet into the catalog
I have no sheet yetStart from the sample catalog the new workspace gives you, or add events by hand
The app already sends events and I do not want to type checksRun the flow once, then Assign events to flow…
I work in a terminal with an AIUse the scout plugin: edit-tracking-spec and check-tracking
I test on both iOS and AndroidRun the same flow on both, then Compare iOS ↔ Android…

Step 1: Receive events ​

The app's QA build has to send its events to Astra Scout instead of Amplitude. App developers set this up in the QA build. Testers choose Window > Builds, select the QA build and click Use This Build.

WayBest forPage
The QA build reads scoutServerUrl, which Astra Scout passes when it opens the app (iOS)One QA build shared by every tester, simulator and iOS deviceSend QA build events to Astra Scout
The QA build sets a fixed addressAndroid, or a build used on one Mac onlyCopy a fixed address

Step 2: Have a catalog ​

The catalog is one file per app, tracking-specs/<app>.yaml. It lists the events, their properties, allowed values and general rules.

WayBest forPage
Start from the sample catalogA new workspace. It already has tracking-specs/sample.yaml with one event to learn fromTracking catalog
Import… from the taxonomy sheet (the spreadsheet that lists all events and properties of the team). It can check guessed enums (fixed lists of allowed values) against the values Amplitude stored (Values from Amplitude)Teams that keep the event plan in a spreadsheetImport your taxonomy
Enter events by hand: + → New Event… in the catalog viewA small app, or a few events to addAdd an event by hand
+ → Amplitude SDK Events…The events the Amplitude SDK sends itself, with no code in the app (autocapture)Amplitude SDK events
Add to catalog for an event the app sentThe app sends an event the catalog lacksEvents the catalog lacks
Ask the AI: the plugin's edit-tracking-spec skill, or the MCP tool edit_tracking_specTerminal users; many edits at once, a rename everywhere, an import with a previewThe scout plugin

To make a new catalog file, choose File → New File…, then Tracking Catalog: see Create a catalog.

Assign events to flow… (step 3) does not change the catalog: it writes into the flow.

Step 3: Declare checks in a flow ​

Put an assertEvents step right under the action that sends the event, and name the catalog in the flow's tracking header (a new workspace's sample flow already has tracking: spec: sample).

WayBest forPage
Write assertEvents by handYou know which events a step sends. The editor suggests event names, properties and values from the catalogDeclare the checks in the flow
Assign events to flow… after one run. The blue bar above the editor ("Run 14:02 received N events, M not in the flow yet.") has the buttonThe app already sends the events; you want checks without typingAssign events from a run

Both of the first two ways write the same assertEvents text. The full syntax is in the assertEvents reference.

Step 4: Read the results ​

WayBest forPage
In the editor: ✓ ✕ ▲ marks, a banner at a failed lineFixing one assertEvents line right where you wrote itResults in the editor
Tracking window (Window → Tracking, or Open Tracking Window… in the runner's Tracking tab). Filters at the bottom: Show Flow Steps, Hide SDK Events, Problems Only, Group, Filter EventsThe whole run: every event, the issues and the rulesCheck a run
Amplitude results: Check in Amplitude, Look Up a User…Seeing what Amplitude actually stored (needs the Amplitude keys in Settings → Amplitude)Amplitude results
Compare iOS ↔ Android… (toolbar of the Tracking window)Seeing whether both apps send the same trackingCompare iOS ↔ Android
From a terminal: check_tracking, compare_tracking_runsAI agents and scriptsFrom a terminal

Next ​