Appearance
Klaviyo
In the following example, we will be sending user data to Seen for video generation, and receiving a unique video player link and personalised email thumbnail back to Klaviyo for distribution.
This example uses a POST webhook in Klaviyo Flows to send data to Seen, and an event to receive the data back to Klaviyo.
This example assumes that a Project with a published video already exists in your Seen Platform Workspace.
Send data to Seen
- Create a new Flow in Klaviyo.
- Choose your trigger.
- Add Webhook as the next step, give it a name, and fill it out with the following:
- Destination URL ⇒
https://next.seen.io/v1/projects/{Project_ID}/data(find the endpoint from your project's Run tab) - Headers
- Key ⇒
Authorization - Value ⇒
Bearer {token}(create a token from your project's Run tab)
- Key ⇒
- JSON Body. You can use the code snippet below as the starting point for the payload (remember to modify it based on the personalisations in your video campaign; see Create Data for the payload structure):json
{ "first_name": "{{ person.first_name }}", "last_name": "{{ person.last_name }}", "id": "{{ person.id }}" }
- Destination URL ⇒
- You can now test the webhook with a test profile.
Receive data back from Seen
In your project's Run tab, click on Add webhook.
Configure the webhook with the following details:
Field Value Method POSTURL https://a.klaviyo.com/api/events
Headers
| Header | Value |
|---|---|
Content-Type | application/vnd.api+json |
Accept | application/vnd.api+json |
Authorization | Klaviyo-API-Key {{your API key}} |
revision | 2026-07-15 |
Remember to check the latest revision date from Klaviyo's documentation.
Request Content
json
{
"data": {
"type": "event",
"attributes": {
"properties": {
"seen_player": "{{ Player link }}",
"seen_thumbnail": "{{ Email thumbnail link }}"
},
"backfill": false,
"metric": {
"data": {
"type": "metric",
"attributes": {
"name": "SEEN"
}
}
},
"profile": {
"data": {
"type": "profile",
"id": "{{ id }}"
}
}
}
}
}Remember to change the variables from the example to the actual placeholders, and to review the payload content before saving.
- You can now test the full flow.