Integrations
GET /integrations
List the organization's connected storefront integrations, newest first. Access tokens are never returned.
Requires the settings:read permission.
Query parameters
limitnumberThe number of records to return.
cursorstringA pagination cursor. Fetch the next page by passing the nextCursor value from the previous response.
sortcreatedAt | -createdAtThe sort order. Prefix a field with - to sort descending. Defaults to -createdAt.
filterstringA JSON-encoded filter document, for example {"createdAt":{"$gte":"2025-01-01T00:00:00Z"}}. Filterable fields: id, type, createdAt. See Filtering for the syntax.
GET /integrations/{id}
Get a single integration by ID.
Requires the settings:read permission.
Path parameters
idstringrequiredThe ID of the integration.
PATCH /integrations/{id}
Update how a connected integration behaves in Meisei. Only the settings you send are changed, and the rest are left alone. These are Meisei's own settings, not the store's.
Requires the settings:write permission.
Path parameters
idstringrequiredThe ID of the integration.
Body parameters
settingsobject | object | objectThe settings to change, in the shape the integration's type takes. Anything you leave out keeps its current value.
channelstring | nullSlack only. The channel this connection posts to, as a label to show in Meisei.
webhookUrlstringSlack only. A replacement incoming webhook URL, for pointing an existing connection at a different channel.
apiKeystringKlaviyo only. A replacement private API key, for rotating the one this connection holds.
DELETE /integrations/{id}
Disconnect an integration. Syncing stops and the stored access token is discarded. Records already synced into Meisei are kept.
Requires the settings:write permission.
Path parameters
idstringrequiredThe ID of the integration to disconnect.
POST /integrations/slack
Connect Slack by storing an incoming webhook URL. Meisei posts the message types you switch on, plus an optional daily or weekly summary, to the channel that webhook belongs to. One Slack connection per organization.
Requires the settings:write permission.
Body parameters
webhookUrlstringrequiredThe Slack incoming webhook URL to post to. Create one in Slack under your app's Incoming Webhooks, picking the channel it posts to. It is a credential, so Meisei never shows it again once saved.
channelstring | nullThe channel the webhook posts to, such as #reviews. Slack does not report this back, so it is a label for your own reference.
POST /integrations/klaviyo
Connect Klaviyo with a private API key. Meisei sends the events you switch on as Klaviyo metrics, keeps each customer's Meisei properties up to date on their profile, and imports current state for the customers it already knows about. One Klaviyo connection per organization.
Requires the settings:write permission.
Body parameters
apiKeystringrequiredThe Klaviyo private API key to send events and profile updates with. Create one in Klaviyo under Settings, API keys, with write access to profiles, events and lists. It is a credential, so Meisei never shows it again once saved.
GET /integrations/{id}/klaviyo-lists
List the Klaviyo audiences this connection can add customers to. Meisei calls Klaviyo live, so a list created a moment ago is here.
Requires the settings:read permission.
Path parameters
idstringrequiredThe ID of the Klaviyo integration.
POST /integrations/{id}/test
Check that a connection still works. For Slack this posts a test message to the channel; for Klaviyo it asks Klaviyo who the credentials belong to. Unlike a real notification, this reports the failure rather than swallowing it, so a credential that has been revoked shows up here rather than as silence.
Requires the settings:write permission.
Path parameters
idstringrequiredThe ID of the integration to test.
GET /integrations/shopify/connect-context
Check whether a Shopify store can be connected to this organization, and say why not if it cannot. The connect screen calls this so it never offers a button that would fail once the merchant is back in Shopify.
Requires the settings:read permission.
Query parameters
shopstringrequiredThe myshopify.com domain of the store being connected
POST /integrations/shopify/grant
Authorize the Shopify connector to connect a store to the signed-in user's organization
Requires the settings:write permission.
Body parameters
shopstringrequiredThe myshopify.com domain of the store being connected
statestringrequiredThe ticket the Shopify app issued when the merchant started connecting, naming the store and the staff member.