An open API service indexing awesome lists of open source software.

https://github.com/fliskdata/analyze-tracking

Automatically document your analytics setup by analyzing tracking code and generating data schemas ๐Ÿš€
https://github.com/fliskdata/analyze-tracking

amplitude analytics googleanalytics heap javascript mixpanel mparticle pendo posthog rudderstack segment snowplow typescript

Last synced: 10 days ago
JSON representation

Automatically document your analytics setup by analyzing tracking code and generating data schemas ๐Ÿš€

Awesome Lists containing this project

README

        

# @flisk/analyze-tracking

Automatically document your analytics setup by analyzing tracking code and generating data schemas from tools like Segment, Amplitude, Mixpanel, and more ๐Ÿš€.

[![NPM version](https://img.shields.io/npm/v/@flisk/analyze-tracking.svg)](https://www.npmjs.com/package/@flisk/analyze-tracking)

## Why Use @flisk/analyze-tracking?
๐Ÿ“Š **Understand Your Tracking** โ€“ Effortlessly analyze your codebase for `track` calls so you can see all your analytics events, properties, and triggers in one place. No more guessing whatโ€™s being tracked!

๐Ÿ” **Auto-Document Events** โ€“ Generates a complete YAML schema that captures all events and properties, including where theyโ€™re implemented in your codebase.

๐Ÿ•ต๏ธโ€โ™‚๏ธ **Track Changes Over Time** โ€“ Easily spot unintended changes or ensure your analytics setup remains consistent across updates.

๐Ÿ“š **Populate Data Catalogs** โ€“ Automatically generate structured documentation that can help feed into your data catalog, making it easier for everyone to understand your events.

## Quick Start

Run without installation! Just use:

```sh
npx @flisk/analyze-tracking /path/to/project [options]
```

### Key Options:
- `-g, --generateDescription`: Generate descriptions of fields (default: `false`)
- `-o, --output `: Name of the output file (default: `tracking-schema.yaml`)
- `-c, --customFunction `: Specify a custom tracking function

๐Ÿ”‘ย  **Important:** you must set the `OPENAI_API_KEY` environment variable to use `generateDescription`

Note on Custom Functions ๐Ÿ’ก

Use this if you have your own in-house tracker or a wrapper function that calls other tracking libraries.

We currently only support functions that follow the following format:
```js
yourCustomTrackFunctionName('', {

});
```

## Whatโ€™s Generated?
A clear YAML schema that shows where your events are tracked, their properties, and more.
Hereโ€™s an example:

```yaml
version: 1
source:
repository:
commit:
timestamp:
events:
:
description:
implementations:
- description:
path:
line:
function:
destination:
properties:
:
description:
type:
```

Use this to understand where your events live in the code and how theyโ€™re being tracked.

[GPT-4o mini](https://platform.openai.com/docs/models/gpt-4o-mini) is used for generating descriptions of events, properties, and implementations.

See [schema.json](schema.json) for a JSON Schema of the output.

## Supported tracking libraries

Google Analytics

```js
gtag('event', '', {

});
```

Segment

```js
analytics.track('', {

});
```

Mixpanel

```js
mixpanel.track('', {

});
```

Amplitude

```js
amplitude.logEvent('', {

});
```

Rudderstack

```js
rudderanalytics.track('', {

});
```

mParticle

```js
mParticle.logEvent('', {

});
```

PostHog

```js
posthog.capture('', {

});
```

Pendo

```js
pendo.track('', {

});
```

Heap

```js
heap.track('', {

});
```

Snowplow (struct events)

```js
snowplow('trackStructEvent', {
category: '',
action: '',
label: '',
property: '',
value: ' '
});
```

```js
trackStructEvent({
category: '',
action: '',
label: '',
property: '',
value: ''
});
```

```js
buildStructEvent({
category: '',
action: '',
label: '',
property: '',
value: ''
});
```

_Note: Snowplow Self Describing Events are coming soon!_

## Contribute
Weโ€™re actively improving this package. Found a bug? Want to request a feature? Open an issue or contribute directly!