Skip to main content
Version: Next

Klaviyo

Klaviyo source connector

Description

Reads data from Klaviyo APIs. The connector builds Klaviyo request headers from private_key and revision, then uses the shared HTTP source runtime to parse the response.

Key features

tip

In streaming mode, the connector repeatedly calls the configured API. Set poll_interval_millis to control the request interval.

Options

nametyperequireddefault valuedescription
urlStringYes-Klaviyo API URL.
private_keyStringYes-Klaviyo private API key.
revisionStringYes-Klaviyo API revision, usually in YYYY-MM-DD format.
methodStringNoGETHTTP method. Supported values are GET and POST.
headersMapNo-Extra HTTP request headers. The connector already sets Authorization, Accept, and revision.
paramsMapNo-HTTP query parameters.
bodyStringNo-HTTP request body, usually used with POST.
formatStringNoTEXTResponse format. Use json when the response should be parsed by schema, json_field, or content_field.
schemaConfigNo-Output schema. Required when format = "json".
json_fieldConfigNo-JSONPath mapping from response fields to output columns. Must be used together with schema.
content_fieldStringNo-JSONPath used to select the array or object that should be parsed as rows.
pageingConfigNo-Pagination settings. See Pagination.
poll_interval_millisintNo-Request interval in milliseconds for streaming jobs.
retryintNo-Maximum retry count when the request throws IOException.
retry_backoff_multiplier_msintNo100Retry backoff multiplier in milliseconds.
retry_backoff_max_msintNo10000Maximum retry backoff in milliseconds.
json_filed_missed_return_nullbooleanNofalseReturn null when a field configured in json_field is missing.
common-optionsconfigNo-Source common options. See Source Common Options.

Authentication

Set private_key to the Klaviyo private API key. The connector sends it as:

Authorization: Klaviyo-API-Key <private_key>
Accept: application/json
revision: <revision>

Response Parsing

The default format is TEXT, which returns the whole response as one content column.

Use format = "json" and schema when you want structured output:

format = "json"
schema = {
fields {
type = string
id = string
attributes = {
name = string
created = string
updated = string
}
links = {
self = string
}
}
}

Use content_field when the rows are inside a nested JSON node. Use json_field when columns need to be extracted from different JSONPath expressions.

Pagination

pageing can be used when the target API needs paging parameters.

nametyperequireddefault valuedescription
total_page_sizelongNo0Total number of pages to request.
batch_sizeintNo100Page size returned by each request.
start_page_numberlongNo1First page number.
page_fieldStringNopageRequest parameter name for page number pagination.
page_typeStringNoPageNumberPagination type. Supported values are PageNumber and Cursor.
cursor_fieldStringNo-Request parameter name for cursor pagination.
cursor_response_fieldStringNo-JSONPath field used to read the next cursor from the response.
use_placeholder_replacementbooleanNofalseUse ${field} placeholder replacement in headers, parameters, and body.

Example

env {
parallelism = 1
job.mode = "BATCH"
}

source {
Klaviyo {
plugin_output = "klaviyo"
url = "https://a.klaviyo.com/api/lists"
private_key = "replace-with-private-key"
revision = "2020-10-17"
method = "GET"
format = "json"
schema = {
fields {
type = string
id = string
attributes = {
name = string
created = string
updated = string
}
links = {
self = string
}
}
}
}
}

sink {
Console {
plugin_input = "klaviyo"
}
}

Changelog

Change Log
ChangeCommitVersion
[improve] http connector options (#8969)https://github.com/apache/seatunnel/commit/63ff9f910a2.3.10
[Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on http (#5816)https://github.com/apache/seatunnel/commit/6f49ec6ead2.3.4
[Improve][build] Give the maven module a human readable name (#4114)https://github.com/apache/seatunnel/commit/d7cd6010512.3.1
[Improve][Project] Code format with spotless plugin. (#4101)https://github.com/apache/seatunnel/commit/a2ab1665612.3.1
[Improve][Connector-V2][Http]Improve json parse option rule for all http connector (#3627)https://github.com/apache/seatunnel/commit/589e4161ec2.3.0
[Feature][Connector-V2][HTTP] Use json-path parsing (#3510)https://github.com/apache/seatunnel/commit/1807eb6c952.3.0
[Hotfix][OptionRule] Fix option rule about all connectors (#3592)https://github.com/apache/seatunnel/commit/226dc6a1192.3.0
[Improve][Connector-V2][Klaviyo]Unified exception for Klaviyo connector (#3555)https://github.com/apache/seatunnel/commit/08f86150782.3.0
[Feature][Connector-V2][Klaviyo]Add Klaviyo source connector (#3443)https://github.com/apache/seatunnel/commit/fc00a2866b2.3.0