# Destinations

> Route events to data warehouses, analytics tools, and CRMs automatically

Source: https://docs.graph8.com/developers/destinations/

graph8 stores all your event data automatically in its built-in CDP (ClickHouse + PostgreSQL). Contacts, companies, enrichment, sequences, and campaigns all work out of the box - no destination setup needed.

**Destinations are optional** - for teams that also want a copy of their event data in their own warehouse or analytics tools. Configure once, every event flows to both graph8's CDP and your additional destinations.

## Supported Destinations

### Data Warehouses

| Destination | What You Get |
|-------------|-------------|
| **BigQuery** | Auto-schema, streaming inserts, partitioned tables |
| **Snowflake** | Auto-schema, bulk loading, warehouse auto-resume |
| **ClickHouse** | Async inserts, optimized for high-volume streaming |
| **Redshift** | Auto-schema, S3 staging for bulk loads |
| **Postgres** | Direct inserts, auto-schema |
| **MySQL** | Direct inserts, auto-schema |
| **S3** | JSON/Parquet files, partitioned by date |

### Analytics & Marketing

| Destination | What It Does |
|-------------|-------------|
| **Google Analytics 4** | Forward events as GA4 hits |
| **Amplitude** | Send events and user properties |
| **Mixpanel** | Track events and identify users |
| **Facebook Conversion API** | Server-side conversion tracking |
| **HubSpot** | Sync contacts and events |

### Custom

| Destination | What It Does |
|-------------|-------------|
| **Webhook (HTTP)** | POST events to any URL |
| **JavaScript Tag** | Load third-party scripts client-side |

## Adding a Destination

1. Go to **Connections > Destinations** in your graph8 dashboard
2. Click **+ Add Destination**
3. Select the destination type
4. Enter credentials (project ID, API key, connection string, etc.)
5. Click **Save**

That's it. Events start flowing immediately to the new destination.

## How It Works

```
g8.track('signup', { plan: 'pro' })
    │
    ├──→ BigQuery (events.signup table, auto-created)
    ├──→ Google Analytics 4 (as GA4 event)
    ├──→ HubSpot (contact activity)
    └──→ graph8 CDP (contact enrichment + sequences)
```

- **No extra code** - the SDK sends to graph8, graph8 fans out to all destinations
- **No data loss** - events are persisted before delivery, retried on failure
- **Schema-free** - send any JSON, warehouses get auto-created tables and columns
- **Real-time** - events arrive at destinations within seconds

## Filtering Events Per Destination

Use [Functions](https://docs.graph8.com/developers/functions/) to control which events reach which destinations. For example, send only `purchase` events to Facebook Conversion API, or strip PII before sending to BigQuery.

## Verifying Delivery

Open **Connections > Live Events** to see events flowing through the pipeline. Each event shows which destinations received it and delivery status.

See [Live Events](https://docs.graph8.com/developers/live-events/) for details.

> **Tip: Using the SDK?**
> Events from `g8.track()`, `g8.identify()`, and `g8.page()` in the [JavaScript SDK](https://docs.graph8.com/developers/sdk/) automatically enter the pipeline. No additional setup needed beyond installing the SDK and configuring destinations.
