Skip to content

Klaviyo 403 error section + Vale cleanup [DOC-1000] #7139

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 16 additions & 11 deletions src/connections/destinations/catalog/actions-klaviyo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Klaviyo lets you send personalized newsletters, automates triggered emails, prod
Klaviyo (Actions) provides the following benefits:

- **Simple setup** - Klaviyo (Actions) has a streamlined default setup process making it easier to get started in a way that "just works".
- **More control** - Actions-based destinations enable you to define the mapping between the data Segment receives from your sources, and the data Segment sends to Klaviyo.
- **More control** - Actions-based destinations enable you to define the mapping between the data Segment receives from your sources and the data Segment sends to Klaviyo.
- **Default property mappings** - Default mappings from the Segment like event, timestamp, and more, allow data to be mapped correctly without any setup required.

> info ""
Expand All @@ -35,9 +35,9 @@ Klaviyo (Actions) provides the following benefits:

{% include components/actions-fields.html %}

## Using Klaviyo with RETL
## Using Klaviyo with Reverse ETL

Klaviyo (Actions) Destination can accept [RETL](/docs/connections/reverse-etl/) data. You can send the models you created in your data warehouse source. Follow [the steps](/docs/connections/reverse-etl/#step-1-add-a-source) to create your data warehouse source and set up models.
Klaviyo (Actions) Destination can accept [Reverse ETL](/docs/connections/reverse-etl/) data from your data warehouse sources. Follow the steps in Segment's [Reverse ETL setup guide](/docs/connections/reverse-etl/setup/#step-1-add-a-source) to create your data warehouse source and set up models.

| Action | Added | Updated | Deleted |
| ------------------- | ------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------- |
Expand All @@ -49,11 +49,9 @@ Klaviyo (Actions) Destination can accept [RETL](/docs/connections/reverse-etl/)
| Unsubscribe Profile | <img class="inline" src="/docs/images/supported.svg" /> | <img class="inline" src="/docs/images/unsupported.svg" /> | <img class="inline" src="/docs/images/supported.svg" /> |

> info ""
> **\*** Though technically possible, it may not be the most intuitive approach to using RETL.
>
> **e.g.,** Triggering a **Subscribe Profile** action when a user is **deleted** from a Model that queries unsubscribed users.
> **\***Though technically possible, this may not be the most intuitive approach to using Reverse ETL.

In order to add users to a list, use the **Upsert Profile** Action and fill out the **List** field with the Klaviyo list to add the profile to.
In order to add users to a list, use the **Upsert Profile** Action and fill out the **List** field with the Klaviyo list you'd like to add the profile to.

Follow these steps to create a list in Klaviyo:

Expand All @@ -65,7 +63,7 @@ Follow these steps to create a list in Klaviyo:

## Using Klaviyo with Engage

Klaviyo (Actions) Destination can accept your [Engage](/docs/engage/) data. If you wish to add a profile to a list associated with the Engage audienceId, you **don't** need to create a list in Klaviyo. During the first sync with the **Add Profile To List (Engage)** Mapping, Segment creates a list with the same ID as your audience.
Klaviyo (Actions) Destination can accept your [Engage](/docs/engage/) data. If you want to add a profile to a list associated with an Engage `audienceId`, you **don't** need to create a list in Klaviyo. During the first sync with the **Add Profile To List (Engage)** Mapping, Segment creates a list with the same ID as your audience.

To add and remove profiles in Klaviyo with Engage Audience data:

Expand All @@ -88,19 +86,26 @@ To add and remove profiles in Klaviyo with Engage Audience data:

#### 429 Too Many Requests

If you're encountering rate limiting issues, consider enabling batching for the Action receiving these errors. To enable mapping, navigate to the mapping configuration and set "Batch data to Klaviyo" to "Yes". This adjustment might help alleviate the rate limiting problem.
If you're encountering rate limiting issues, consider enabling batching for the Action receiving these errors. To enable batching, navigate to the mapping configuration and set "Batch data to Klaviyo" to "Yes". This adjustment might help alleviate the rate limiting problem.

#### 409 Conflict
In most cases, you can safely ignore a `409` error code.

When you use the [Upsert Profile](/docs/connections/destinations/catalog/actions-klaviyo/#upsert-profile) mapping to send Identify events, Segment first attempts to [create a new profile in Klaviyo](https://developers.klaviyo.com/en/reference/create_profile){:target="_blank”}. If the first request returns with a `409` error code, Segment sends a second request to [update the existing profile with the given profile ID](https://developers.klaviyo.com/en/reference/update_profile){:target="_blank”}.
When you use the [Upsert Profile](/docs/connections/destinations/catalog/actions-klaviyo/#upsert-profile) mapping to send Identify events, Segment first attempts to [create a new profile in Klaviyo](https://developers.klaviyo.com/en/reference/create_profile){:target="_blank”}. If the first request returns with a `409` error code, Segment sends a second request to [update the existing profile with the given profile ID](https://developers.klaviyo.com/en/reference/update_profile){:target="_blank”}.

#### 403 Forbidden

Some customers experience 403 errors when sending audience data to Klaviyo through Segment. This occurs due to Klaviyo's security measures blocking requests from shared IPs, which are common when using cloud-hosted platforms, like Segment, that use dynamically generated IP addresses.

To reduce the number of `403` errors that you encounter, enable [IP Allowlisting](/docs/connections/destinations/#ip-allowlisting) for your workspace. For more information the range of IP addresses Klaviyo uses for integration traffic, see Klaviyo's [How to allowlist Klaviyo integration traffic IP addresses](https://help.klaviyo.com/hc/en-us/articles/19143781289115){:target="_blank”} documentation.


### Can I send Engage Audiences to a pre-created Klaviyo List?

No. Engage audiences are designed to initiate the creation of new lists in Klaviyo when you use the "Add Profile to List - Engage" mapping. You cannot link Engage lists to existing Klaviyo lists and cannot edit the List ID for Engage audiences.

### How can I unsuppress a profile when adding it to a list?

When adding a user to a list, our action make use of the [Bulk Profile Import](https://developers.klaviyo.com/en/reference/spawn_bulk_profile_import_job){target="_blank"} endpoint (when batching is enabled), and the [Add Profile To List](https://developers.klaviyo.com/en/reference/create_list_relationships){target="_blank"} endpoint for non-batched requests. Both of which will not update a users suppression status if they were previously suppressed.
When adding a user to a list, our action make use of the [Bulk Profile Import](https://developers.klaviyo.com/en/reference/spawn_bulk_profile_import_job){:target="_blank} endpoint (when batching is enabled), and the [Add Profile To List](https://developers.klaviyo.com/en/reference/create_list_relationships){:target="_blank} endpoint for non-batched requests. Both of which will not update a users suppression status if they were previously suppressed.

To ensure a suppressed profile gets unsuppressed, you can use the "Subscribe Profile" action. When a profile is subscribed in Klaviyo, it automatically unsuppresses any previously suppressed user. You can combine this action with other actions to achieve your goal. If this solution does not fully address your use case, please contact us at [email protected] so we can consider your specific requirements.
3 changes: 2 additions & 1 deletion vale-styles/Vocab/Docs/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,5 @@ waitlist
WebKit
Wootric
Zendesk
Okta
Okta
Klaviyo
Loading