Klaviyo
Returns the Klaviyo configuration of the tenant. The private API key is never returned; hasPrivateApiKey tells whether one is stored.
Configuration returned.
The stored Klaviyo connection of the tenant, without its private API key.
Klaviyo public API key, also called site ID, as last saved.
Klaviyo list the account's consents are synchronised to; builtin for Klaviyo's built-in consents
without a list; null when the account's consents are not synchronised. See Neo.Extensions.Klaviyo.Controllers.SetKlaviyoRequest.ListId.
Whether the account's consents_sms consent is synchronised to Klaviyo, in addition to the email consent.
Whether a private API key is stored. When true, a save may omit privateApiKey to keep it.
The caller is not authenticated.
The caller lacks the tenant.klaviyo.settings:read scope.
Klaviyo is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/klaviyo HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"siteId": "text",
"listId": null,
"enableSmsSupport": true,
"hasPrivateApiKey": true
}Creates or replaces the Klaviyo configuration. Every field is written as sent: an omitted listId clears the stored one and an omitted enableSmsSupport turns SMS synchronisation off. Omit privateApiKey to keep the stored private API key.
The Klaviyo connection of the tenant. A save replaces the stored configuration as a whole.
Klaviyo public API key, also called site ID. Missing or empty is refused with a 400.
Klaviyo list the holder is subscribed to or unsubscribed from when the account's consents_email
(and, with enableSmsSupport, consents_sms) consent is set.
When true, the account's consents_sms consent is also synchronised to Klaviyo for the holder's
phone number; when false, only the email consent is. Default false.
falseKlaviyo private API key. Never returned. Omitted, null or blank keeps the stored key; refused with a 400 when no key is stored yet.
Configuration saved.
No content
The body or siteId is missing, or privateApiKey is omitted while no key is stored yet.
The caller is not authenticated.
The caller lacks the tenant.klaviyo.settings:write scope.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
PUT /api/{tenantId}/admin/extensions/klaviyo HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 77
{
"siteId": "text",
"listId": null,
"enableSmsSupport": false,
"privateApiKey": null
}No content
Target of a Klaviyo flow webhook action. Finds the pass by identifiers and accepts an update with the given pass template, additional data and metadata option; the pass is then updated and refreshed on the holder's devices shortly after the answer.
Same changes as PATCH /api/{tenantId}/passes with options.bypassQueue false. The Klaviyo listener must be enabled for the tenant.
The pass a Klaviyo webhook targets and the change to apply to it.
Pass template to move the pass to. Must be declared for the tenant, or the request is refused with a 400. Null or omitted keeps the current pass template.
Values merged into the pass's additional data, which pass templates and scripts read. Keys not sent keep their current value. Null or omitted changes nothing.
When true, the update also re-reads the holder's data from the tenant's connected systems and recomputes the stored pass metadata. Slower; leave false when the payload carries everything. Default false.
falseUpdate accepted.
No content
The body is invalid, id is combined with other identifiers, or passType is not declared for the tenant.
The caller is not authenticated.
The caller lacks the tenant.klaviyo.listener:write scope, or the Klaviyo listener is not enabled for the tenant.
No pass matches the identifiers.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/webhooks/listeners/klaviyo/passes/pushUpdate HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 111
{
"identifiers": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"passType": null,
"additionalData": null,
"updateMetadata": false
}No content
Accepts the request and answers at once, with no body; the synchronisation completes shortly after. The holder is looked up by email and phone_number in the tenant's customer systems, then Klaviyo receives: a Neostore - Profile synchronized event that sets the profile property neostore.authenticationToken for the holder; and, for each pass matching one of the holder's identifiers, a Wallet Installed event per platform (Apple, Google) the pass is installed on, dated at its installation.
The Klaviyo listener must be enabled for the tenant.
The Klaviyo profile to synchronise, as a Klaviyo webhook sends it (snake_case names).
Email address of the profile; looks up the holder in the tenant's customer systems.
Phone number of the profile; looks up the holder in the tenant's customer systems, alongside or
instead of email.
Synchronisation accepted.
No content
The body is missing or is not valid JSON.
The caller is not authenticated.
The caller lacks the tenant.klaviyo.listener:write scope, or the Klaviyo listener is not enabled for the tenant.
Over 6000 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/webhooks/listeners/klaviyo/profiles/sync HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 34
{
"email": null,
"phone_number": null
}No content
Last updated

