> ## Documentation Index
> Fetch the complete documentation index at: https://docs.remark.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Klaviyo

> How Remark and Klaviyo work together for profile enrichment, lifecycle marketing, and shopper identity

Remark's Klaviyo integration helps you turn shopper conversations into better-targeted email and SMS marketing. Once connected, Remark can send rich shopper context into Klaviyo, and Klaviyo can send email engagement signals back into Remark.

<Card title="Shopify Custom Pixel" icon="pen" href="/guides/shopify-custom-pixel">
  Make sure your Shopify permissions and pixel setup are in place before going live.
</Card>

## What the integration does

At a high level, the integration has two jobs:

1. It sends shopper context from Remark into Klaviyo so you can personalize messaging based on real conversations, recommendations, and buying signals.
2. It brings Klaviyo email engagement data back into Remark so your team can see whether a shopper opened, clicked, bounced, or unsubscribed.

That means Klaviyo gets richer profile data, and Remark gets better visibility into how marketing emails are performing for each shopper.

## How Klaviyo fits into your stack

If you use Shopify, the cleanest setup is:

* Shopify syncs your catalog into Klaviyo
* Remark syncs shopper context, conversation data, and recommendation data into Klaviyo
* Remark uses product `external_id` values so recommended products can line up with your Klaviyo catalog records

<Info>
  Remark does not build or manage your Klaviyo product catalog. If you want product-aware emails in Klaviyo, be sure to install the Shopify app in Klaviyo and let Remark supply the shopper context around those products.
</Info>

## Connecting Klaviyo to Remark

Remark connects to Klaviyo through OAuth in the dashboard. This gives Remark a secure connection to your Klaviyo account without relying on a long-lived private API key setup.

After connection:

* Remark stores the connection and refreshes tokens automatically
* Existing legacy API-key installs can be migrated to OAuth
* Remark can auto-provision certain Klaviyo assets, including Remark universal content blocks for approved agents

To connect Klaviyo:

1. Open **Settings > Integrations** in the Remark dashboard.
2. Find **Klaviyo**.
3. Select **Connect**.
4. Approve the Klaviyo OAuth request.
5. After Klaviyo redirects you back to Remark, wait for the connection success state.

If your workspace still uses a legacy Klaviyo API-key connection, open the Klaviyo integration settings and select **Migrate to OAuth**. Event settings and profile sync require the current OAuth integration config.

## Event and profile settings

New OAuth installs support these outbound settings:

| Setting                      | Default | Klaviyo metric                            |
| ---------------------------- | ------- | ----------------------------------------- |
| Conversation completed event | On      | Completes a Remark Conversation           |
| Product recommended event    | On      | Receives a Remark Product Recommendation  |
| Activator clicked event      | On      | Clicks a Remark Chat Activator            |
| High intent detected event   | On      | Shows High Purchase Intent in Remark Chat |
| Blog post viewed event       | On      | Views a Remark Blog Post                  |
| Smart tag applied event      | On      | Is Assigned a Remark Smart Tag            |
| Learning created event       | On      | Has a Remark Shopper Learning Captured    |
| Profile sync                 | On      | Updates profile properties, not a metric  |

The dashboard does not ask for API keys or post-install field values for Klaviyo OAuth. Contact `support@remark.ai` if you need help changing which Klaviyo events are enabled.

## When profile data updates

Profile sync runs after completed conversations when profile sync is enabled and the shopper has an email address. In practice, that means Klaviyo profiles update after Remark has enough conversation context to send useful information instead of partial noise.

When a shopper opts in to marketing through Remark, Remark can also create or update the Klaviyo profile, subscribe the profile to email marketing, and send a `Subscribes via Remark` event.

## Data flow at a glance

| Direction         | Data type                  | Purpose                                                          |
| ----------------- | -------------------------- | ---------------------------------------------------------------- |
| Remark -> Klaviyo | Profile properties         | Enrich Klaviyo profiles for segmentation and personalization     |
| Remark -> Klaviyo | Event data                 | Trigger flows and measure shopper actions tied to Remark         |
| Remark -> Klaviyo | Email subscription updates | Subscribe opted-in shoppers to email marketing                   |
| Klaviyo -> Remark | Email engagement events    | Show opens, clicks, bounces, and unsubscribes in shopper context |

## Profile properties synced from Remark

Remark updates the Klaviyo profile identified by the shopper email address.

Current profile sync writes these Remark custom profile properties when the data is available:

| Property                               | Type      | Meaning                                             |
| -------------------------------------- | --------- | --------------------------------------------------- |
| `remark_last_conversation_timestamp`   | string    | ISO timestamp of the latest synced conversation     |
| `remark_conversation_tags`             | string\[] | Smart tag titles associated with the conversation   |
| `remark_recently_recommended_products` | object\[] | Recently recommended products with product metadata |
| `remark_expert_name`                   | string    | Agent name associated with the shopper interaction  |
| `remark_expert_follow_up`              | string    | AI-generated follow-up copy for new conversations   |
| `remark_shopper_language`              | string    | Shopper language                                    |
| `remark_shopper_device_type`           | string    | Device type such as mobile or desktop               |
| `remark_shopper_region`                | string    | Most recent known region                            |
| `remark_shopper_buying_intent_level`   | string    | Buying intent level from Remark                     |
| `remark_shopper_top_category`          | string    | Strongest current category interest                 |

<Info>
  Some properties are only present when Remark has enough data to populate them. Sparse profiles are normal.
</Info>

`remark_expert_follow_up` is generated for every new conversation that syncs to Klaviyo after the integration is connected. It is not generated for historical conversations synced through backfill, so older imported profile data may not include this property.

### `remark_recently_recommended_products` shape

This field is especially useful for lifecycle marketing because it carries both recommendation context and a catalog identifier.

```json theme={null}
[
  {
    "name": "Alpine Touring Boot",
    "external_id": "12345",
    "why_recommended": "Matches the shopper's fit and terrain preferences"
  }
]
```

For Shopify stores:

* `external_id` is the key product identifier Remark sends for product-aware sync
* Be sure to install the Shopify app in Klaviyo
* Remark adds the shopper and recommendation context; it does not create the catalog itself

## What events Remark sends into Klaviyo

Remark sends event-based signals into Klaviyo for automations and reporting. The events listed below are enabled by default for connected Klaviyo integrations; no per-event opt-in is required. In Klaviyo, these appear under the metric names listed in the settings table above.

| Event                           | Typical trigger                            | Common use                                         |
| ------------------------------- | ------------------------------------------ | -------------------------------------------------- |
| `remark_conversation_completed` | A shopper conversation finishes            | Post-conversation follow-up flows                  |
| `remark_product_recommended`    | Remark recommends a product                | Recommendation follow-up or browse-to-buy journeys |
| `remark_activator_clicked`      | Shopper clicks into the Remark experience  | Top-of-funnel or engagement automations            |
| `remark_high_intent_detected`   | Remark detects a strong buying signal      | Fast-moving high-intent journeys                   |
| `remark_blog_post_viewed`       | Shopper views a Remark-generated blog post | Content interest or nurture flows                  |
| `remark_smart_tag_applied`      | Remark AI applies a smart tag              | Behavioral segmentation                            |
| `remark_learning_created`       | New structured learning is persisted       | Preference-based automations                       |

### Representative event payloads

#### `remark_product_recommended`

```json theme={null}
{
  "product_name": "Alpine Touring Boot",
  "product_external_id": "12345",
  "remark_lead": "lead_abc123"
}
```

#### `remark_blog_post_viewed`

```json theme={null}
{
  "blog_post_id": "post_123",
  "blog_post_title": "How to Choose the Right Touring Setup",
  "blog_post_url": "https://www.example.com/blog/touring-setup",
  "article_type": "guide",
  "featured_products": [
    {
      "name": "Alpine Touring Boot",
      "external_id": "12345"
    }
  ]
}
```

#### `remark_smart_tag_applied`

```json theme={null}
{
  "tag_id": "tag_123",
  "tag_title": "High fit confidence",
  "tag_description": "Shopper gave specific fit preferences",
  "is_global": false,
  "confidence_score": 0.94
}
```

#### `remark_learning_created`

```json theme={null}
{
  "learning_id": "learning_456",
  "learning_type": "interest",
  "learning_key": "skiing",
  "learning_value": "powder skiing",
  "prettified_string": "Interested in powder skiing",
  "confidence_score": 0.91
}
```

#### `remark_conversation_completed`

The conversation-completed event is typically paired with the richest profile update. Use it when you want Klaviyo flows to react to a finished conversation and then read the latest profile properties for personalization.

## What Klaviyo sends back into Remark

Remark also ingests email engagement data from Klaviyo through Klaviyo system webhooks.

| Klaviyo engagement | Meaning inside Remark                     |
| ------------------ | ----------------------------------------- |
| Opened             | Shopper opened a marketing email          |
| Clicked            | Shopper clicked a marketing email link    |
| Bounced            | Email delivery bounced                    |
| Unsubscribed       | Shopper unsubscribed from email marketing |

Remark uses these events to enrich the shopper timeline and filters inside the dashboard. Your team can see recent engagement activity alongside conversation and browsing behavior, which gives a better read on whether a shopper is still engaged.

## Typical use cases

Common ways to use this integration include:

* Building segments based on shopper intent, preferences, or recent conversations
* Following up after agent conversations with more relevant product or category messaging
* Using Remark recommendation context in campaigns and flows
* Understanding whether a shopper who talked to an agent is also engaging with marketing emails

## What to expect from the data

Not every profile will contain every field. The exact shape depends on what the shopper actually shared or did.

For example:

* Some shoppers will have recommendation data but no smart tags
* Some will have agent context but no follow-up copy
* Some profiles will gain more detail over time as more conversations happen

That is expected. The integration is designed to accumulate useful context over time rather than require every field upfront.

## Notes and edge cases

* `remark_expert_follow_up` appears for new conversations, but not for backfilled historical conversation data.
* Some product objects may omit `external_id` if the upstream product identifier is unavailable, but catalog-aware usage works best when it is present.
* Klaviyo events are skipped when Remark does not have a shopper email address.
* Legacy API-key installs can still send the conversation-completed event, but OAuth migration is required for current event settings and profile sync.

## Troubleshooting

### OAuth connection fails

Try the connection flow again from **Settings > Integrations**. If you see a missing or expired temporary token message after returning from Klaviyo, restart the OAuth flow instead of refreshing the callback page.

### Legacy API-key connection is still active

Open the Klaviyo integration settings and select **Migrate to OAuth**. After the OAuth migration succeeds, Remark stores refreshable OAuth tokens and can use the current Klaviyo event and profile settings.

### Events are missing in Klaviyo

Confirm the shopper has an email address and the Klaviyo integration is connected. Remark events are enabled by default for OAuth installs, but events are skipped when Remark does not have a customer email.

If a specific metric is still missing, contact `support@remark.ai` to confirm the event is not disabled for your workspace.

### Profile properties are missing

Confirm profile sync is enabled and the shopper completed a conversation with an email address. Many properties only appear when the conversation included that signal, such as recommended products, smart tags, agent names, or shopper context.

### Webhook engagement data is missing in Remark

Reconnect Klaviyo or contact `support@remark.ai`. Klaviyo engagement ingestion depends on signed system webhooks for your workspace, including the configured webhook ID and secret.

### Product recommendations do not match Klaviyo catalog items

Confirm your product `external_id` values match the product IDs Klaviyo receives from Shopify or your ecommerce catalog source. Remark sends recommendation context, but Klaviyo owns catalog matching.

<Note>
  Need help connecting Klaviyo, migrating OAuth, or testing events? Contact `support@remark.ai`.
</Note>
