Open-source library · Android & iOS

Your mobile analytics, verified on the device.

Verivent checks every event against your tracking plan inside the app. Real values, and nothing leaves the phone.

Live · each event is checked as it fires

Plan in the web.
Verdict on the phone.

01 · define

Write the plan with your team

Name, channel, when it fires and its properties. Every save is a revision; publish a version when the draft is ready.

plan 0.3.0 · published
add_to_playlistbackend
playlist_idrequired
sourcesearch · library · radio
02 · load

Hand the JSON to the app

Load the published version from code, or paste it into the inspector on the device. The library never calls home.

verivent-plan-0.3.0.jsonInspector.loadTrackingPlan(json)
03 · verify

See the verdict as it fires

Each event breaks or matches the plan right in the timeline, on the device that sent it.

add_to_playlist✕ 2
play_track✓
search✓
04 · re-check

The same verdict, in the web

Export the session and check it again in your browser, against the published plan or a draft.

playlist_idRequired, but not sent12 of 12
sourceNot an allowed value12 of 12
screen_nameDoesn't match the pattern ^[a-z_]+$3 of 18
values never quoted · nothing uploaded
Fix the plan or the app, publish the next version, and go round again.

What you get that a dashboard can't give you.

The verdict happens on the device

Real values are checked where they are produced. Nothing is uploaded to get an answer, so it works on a test phone, a device farm or offline.

Values, not just names

Types, required fields, allowed values and formats like a country code or an ID. Each problem says what the plan expects and never repeats what was sent.

source · expects search, library or radio

Analytics and network, one timeline

The request that fed an event sits next to the event. When a property is missing, the response that should have carried it is one row away.

17:42:33GET /v1/me/playlists · 20017:42:34add_to_playlist✕ 2

Android and iOS, the same rules

One Kotlin Multiplatform validator, so an event that breaks on one platform breaks the same way on the other, with the same words.

An open-source library.

The Android and iOS library is Apache-2.0. It ships in debug builds only, and a no-op twin keeps it out of release.

build.gradle.kts
dependencies {
  debugImplementation("io.github.asanre:verivent:<version>")
  releaseImplementation("io.github.asanre:verivent-no-op:<version>")
}
Package.swift
.package(url: "https://github.com/asanre/verivent-swift", from: "<version>")

See a verdict in ten seconds.

Try the demo — no sign-up