# Zaraz Configuration

## Dashboard Setup

1. Domain → Zaraz → Start setup
2. Add tool (e.g., Google Analytics 4)
3. Enter credentials (GA4: `G-XXXXXXXXXX`)
4. Configure triggers
5. Save and Publish

## Triggers

| Type            | When              | Use Case           |
| --------------- | ----------------- | ------------------ |
| Pageview        | Page load         | Track page views   |
| Click           | Element clicked   | Button tracking    |
| Form Submission | Form submitted    | Lead capture       |
| History Change  | URL changes (SPA) | React/Vue routing  |
| Variable Match  | Custom condition  | Conditional firing |

### History Change (SPA)

```
Type: History Change
Event: pageview
```

Fires on `pushState`, `replaceState`, hash changes. **No manual tracking needed.**

### Click Trigger

```
Type: Click
CSS Selector: .buy-button
Event: purchase_intent
Properties:
  button_text: {{system.clickElement.text}}
```

## Tool Configuration

**GA4:**

```
Measurement ID: G-XXXXXXXXXX
Events: page_view, purchase, user_engagement
```

**Facebook Pixel:**

```
Pixel ID: 1234567890123456
Events: PageView, Purchase, AddToCart
```

**Google Ads:**

```
Conversion ID: AW-XXXXXXXXX
Conversion Label: YYYYYYYYYY
```

## Consent Management

1. Settings → Consent → Create purposes (analytics, marketing)
2. Map tools to purposes
3. Set behavior: "Do not load until consent granted"

**Programmatic consent:**

```javascript
zaraz.consent.setAll({ analytics: true, marketing: true })
```

## Privacy Features

| Feature          | Default              |
| ---------------- | -------------------- |
| IP Anonymization | Enabled              |
| Cookie Control   | Via consent purposes |
| GDPR/CCPA        | Consent modal        |

## Testing

1. **Preview Mode** - test without publishing
2. **Debug Mode** - `zaraz.debug = true`
3. **Network tab** - filter "zaraz"

## Limits

| Resource         | Limit |
| ---------------- | ----- |
| Event properties | 100KB |
| Consent purposes | 20    |
