This documentation is currently under development. Certain sections are not yet complete and will be added shortly.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Klaviyo

Get the Klaviyo configuration

get
/api/{tenantId}/admin/extensions/klaviyo

Returns the Klaviyo configuration of the tenant. The private API key is never returned; hasPrivateApiKey tells whether one is stored.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Responses
200

Configuration returned.

The stored Klaviyo connection of the tenant, without its private API key.

siteIdstring · min: 1Required

Klaviyo public API key, also called site ID, as last saved.

listIdstring · nullableOptional

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.

enableSmsSupportbooleanRequired

Whether the account's consents_sms consent is synchronised to Klaviyo, in addition to the email consent.

hasPrivateApiKeybooleanRequired

Whether a private API key is stored. When true, a save may omit privateApiKey to keep it.

get/api/{tenantId}/admin/extensions/klaviyo
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
}

Set Klaviyo configuration

put
/api/{tenantId}/admin/extensions/klaviyo

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.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Body

The Klaviyo connection of the tenant. A save replaces the stored configuration as a whole.

siteIdstring · min: 1Required

Klaviyo public API key, also called site ID. Missing or empty is refused with a 400.

listIdstring · nullableOptional

Klaviyo list the holder is subscribed to or unsubscribed from when the account's consents_email (and, with enableSmsSupport, consents_sms) consent is set.

enableSmsSupportbooleanOptional

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.

Default: false
privateApiKeystring · nullableOptional

Klaviyo private API key. Never returned. Omitted, null or blank keeps the stored key; refused with a 400 when no key is stored yet.

Responses
204

Configuration saved.

No content

put/api/{tenantId}/admin/extensions/klaviyo
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

Update a pass from a Klaviyo flow

post
/api/{tenantId}/webhooks/listeners/klaviyo/passes/pushUpdate

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.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Body

The pass a Klaviyo webhook targets and the change to apply to it.

passTypestring · nullableOptional

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.

additionalDataobject · nullableOptional

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.

updateMetadatabooleanOptional

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.

Default: false
Responses
202

Update accepted.

No content

post/api/{tenantId}/webhooks/listeners/klaviyo/passes/pushUpdate
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

Synchronize Klaviyo customer profile

post
/api/{tenantId}/webhooks/listeners/klaviyo/profiles/sync

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.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Body

The Klaviyo profile to synchronise, as a Klaviyo webhook sends it (snake_case names).

emailstring · nullableOptional

Email address of the profile; looks up the holder in the tenant's customer systems.

phone_numberstring · nullableOptional

Phone number of the profile; looks up the holder in the tenant's customer systems, alongside or instead of email.

Responses
200

Synchronisation accepted.

No content

post/api/{tenantId}/webhooks/listeners/klaviyo/profiles/sync
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