---
title: Klaviyo
description: Connect Klaviyo, understand its sync behavior, and query every table and column it writes.
species: reference
---
# Klaviyo

Connect Klaviyo with a private API key. The source writes 9 fixed tables under `titan.klaviyo`.
```sql
select
  id,
  email,
  first_name
from titan.klaviyo.profiles
limit 10
```

## Connect Klaviyo

1. Open **Apps**, choose **Connect app**, and select **Klaviyo**.
2. Enter a private API key.
3. Review the tables, then save the source.
4. Watch **Sync history** until the first run completes.

Credentials are stored as secrets. They never become lake columns or appear in query results.

## Sync behavior

Profiles, lists, campaigns, flows, metrics, events, segments, templates, and catalog items sync together.

A new source syncs when you connect it and then follows its schedule. The default recurring interval is 4 hours. An interrupted run keeps its completed progress and retries safely.

Every lake table also has the [system columns](/v2/docs/concepts/your-lake#the-system-columns) `_synced_at` and `_deleted`; the column reference below lists source columns only.

## Table reference

### `profiles`

`titan.klaviyo.profiles` has 8 source columns.

```columns table=klaviyo.profiles
id                                      string pk           Source field `id`.
email                                   string              Source field `email`.
first_name                              string              Source field `firstName`.
last_name                               string              Source field `lastName`.
phone                                   string              Source field `phone`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
properties                              json                Source field `properties`.
```

### `lists`

`titan.klaviyo.lists` has 4 source columns.

```columns table=klaviyo.lists
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
```

### `campaigns`

`titan.klaviyo.campaigns` has 6 source columns.

```columns table=klaviyo.campaigns
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
status                                  string              Source field `status`.
created_at                              datetime            Source field `createdAt`.
updated_at                              datetime            Source field `updatedAt`.
send_time                               datetime            Source field `sendTime`.
```

### `flows`

`titan.klaviyo.flows` has 6 source columns.

```columns table=klaviyo.flows
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
status                                  string              Source field `status`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
trigger_type                            string              Source field `triggerType`.
```

### `metrics`

`titan.klaviyo.metrics` has 5 source columns.

```columns table=klaviyo.metrics
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
integration                             json                Source field `integration`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
```

### `events`

`titan.klaviyo.events` has 5 source columns.

```columns table=klaviyo.events
id                                      string pk           Source field `id`.
metric_id                               string              Source field `metricId`.
profile_id                              string              Source field `profileId`.
datetime                                datetime            Source field `datetime`.
event_properties                        json                Source field `eventProperties`.
```

### `segments`

`titan.klaviyo.segments` has 4 source columns.

```columns table=klaviyo.segments
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
```

### `templates`

`titan.klaviyo.templates` has 6 source columns.

```columns table=klaviyo.templates
id                                      string pk           Source field `id`.
name                                    string              Source field `name`.
editor_type                             string              Source field `editorType`.
html                                    string              Source field `html`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
```

### `catalog_items`

`titan.klaviyo.catalog_items` has 6 source columns.

```columns table=klaviyo.catalog_items
id                                      string pk           Source field `id`.
title                                   string              Source field `title`.
description                             string              Source field `description`.
url                                     string              Source field `url`.
created                                 datetime            Source field `created`.
updated                                 datetime            Source field `updated`.
```

## Deletes and history

Rows are merged by their source key. When the source can prove that a row was deleted, Supernova keeps the row and sets `_deleted` so queries can choose whether to include history. Filter current-state queries with `where not _deleted`.
