# Web SDK

## Installation

Steps to install the Brainfish Tracker SDK in your web application.

### Install dependencies

```bash
npm install @brainfish-ai/web-tracker
```

### Initialize

```tsx
import { Tracker } from '@brainfish-ai/web-tracker';

const tracker = new Tracker({
  accessKey: '{accessKey}',
  trackScreenViews: true,
  // trackAttributes: true,
  // trackOutgoingLinks: true,
});
```

#### Config

<SdkConfig />

### Ready!

You're now ready to use the library.

```typescript
// Sends an event with payload foo: bar
tracker.event('my_event', { foo: 'bar' });

// Identify with user id
tracker.setUserId('123');

// or with additional data
tracker.setUser({
  userId: '123',
  firstName: 'John',
  lastName: 'Doe',
  email: 'john.doe@brainfi.sh',
});

// Increment a property
tracker.increment('app_opened'); // increment by 1
tracker.increment('app_opened', 5); // increment by 5

// Decrement a property
tracker.decrement('app_opened'); // decrement by 1
tracker.decrement('app_opened', 5); // decrement by 5
```

</Steps>

## Usage

### Track event

```typescript
tracker.event('my_event', { foo: 'bar' });
```

### Identify

#### Set user Id

Keep track of your users by identifying them with a unique id. This is a good features if you have things behind a login and want to track user behavior.

<PersonalDataWarning />

```typescript
const userId = '123';
tracker.setUserId(userId);
```

#### Additional data

This method does the same as `setUserId` but also allows you to update the user with additional data.

<PersonalDataWarning />

```typescript
const userId = '123';
tracker.setUser({
  userId,
  // firstName?: string;
  // lastName?: string;
  // email?: string;
  // avatar?: string;
  // properties?: Record<string, unknown>;
});
```

#### Increment property

Increment a property on the user.

```typescript
// Increment by 1
tracker.increment('app_opened');

// Increment by 5
tracker.increment('app_opened', 5);
```

#### Decrement property

Decrement a property on the user.

```typescript
// Increment by 1
tracker.decrement('app_opened');

// Increment by 5
tracker.decrement('app_opened', 5);
```

#### Clear / Logout

Clear the user id and all the data.

```typescript
tracker.clear();
```