Skip to main content
Work down the list that matches what you see. Web and order problems often come down to the private key’s scopes, a store’s Enable Klaviyo switch being off, a missing Public key / site ID, or an order with no customer email. If you are checking your branded app, use Native Apps below.

Connecting

The key is wrong, or it is missing the Lists — Read scope, which storekit uses to check the key. Create a new private key in Klaviyo with every scope listed in Connecting Klaviyo, then under Klaviyo account → Edit paste it into Private key and click Connect (or Replace key) again.
Your Klaviyo account has no lists yet, or the key lacks Lists — Read. Create a list in Klaviyo, then reload the store’s Klaviyo page.
Under Klaviyo account → Edit, paste the new key into Private key and click Replace key. The new key replaces the old one for every store in the account; per-store settings (the switch, list, public key) are kept.

Orders

In order:
  1. On the store’s Klaviyo page, check the Enable Klaviyo switch in the header is on — and that Save was clicked after switching it.
  2. Check the private key has Events — Write and Profiles — Write. Without them Klaviyo rejects every event.
  3. Check the order had a customer email. Orders without one are never sent — dine-in and kiosk orders often have none.
  4. In Klaviyo, open the customer’s profile by email and look at the activity feed; events can take a minute or two to appear.
Connecting switches on every store in the account. Open that store’s Klaviyo page, switch Enable Klaviyo off and click Save.
Fulfilled Order is sent when the order is marked complete in storekit. Orders that are accepted but never marked complete produce no Fulfilled Order. Build post-order flows on Placed Order with a delay if your stores do not reliably complete orders.
storekit gives every event a stable unique ID, so retries do not duplicate. Two genuinely different events with the same order are expected — for example Placed Order and Fulfilled Order, or one Ordered Product per dish. If you see two Placed Order events with the same OrderId, contact storekit support with the order code.
Every event sends money in major units (12.50, never 1250) — see Conventions. A template that divides or multiplies by 100 is the usual cause.

Browser Events

The store has no Public key / site ID — the header shows Needs attention with “No browser events: add this store’s public key / site ID”. Under This store → Edit, add it and click Save. Each store needs its own entry. Ad blockers and privacy browsers also block these events for some customers; that is normal and cannot be fixed on storekit’s side.
Browser events are anonymous until the customer types their email at checkout. A customer who browses and leaves before checkout never gets a profile, so Viewed Product on its own cannot trigger a flow for them. Kiosk customers are identified only when their order is placed.

Native Apps

Connecting your ordering website does not automatically connect your app. Contact storekit support to confirm the app is connected to the same Klaviyo account as your stores. Use the latest available app version when testing.
A name alone is not enough to match the customer to their existing email profile. If the customer signed in with an email address but it is missing in Klaviyo, contact storekit support so we can investigate the missing details.
Compare the email addresses on both Klaviyo profiles. Different email addresses can result in separate profiles for the same person. If the addresses match, or one profile is missing its email, contact storekit support before deleting either profile. Existing duplicates may need review rather than merging automatically.
Signing in updates the customer profile; it is not itself an Opened App event. Using the latest app version, sign in, switch to another app, then return. Check the customer’s activity in Klaviyo.If the event is still missing, contact storekit support with the app name, app version, whether you use iPhone or Android, and the time you tested.
An app visit does not mean the customer has allowed notifications. Check that notifications are allowed for your app in the phone’s settings. If they are, ask storekit support to confirm push messaging is ready for your app.Opened Push records a tap on a Klaviyo notification, not an ordinary app launch or a storekit order notification.
One of:
  • No list is chosen under This store → Edit → Subscriber list on that store — the summary says “None: opt-ins aren’t subscribed”. Choosing one only affects orders placed after you Save.
  • Marketing opt-in is off under Settings → General on that store, so no box was shown.
  • The order had no email address.
  • The private key lacks Subscriptions — Write.
  • The list uses double opt-in and the customer has not confirmed yet.
The phone number could not be converted to a valid international number for the store’s country, so storekit subscribed the email only. Landline numbers and numbers with typos are the usual cause. Klaviyo also requires SMS to be set up on your account before it accepts SMS consent.
Expected. Every order with an email creates or updates a profile so their order history is complete. They are not subscribed to your list and Klaviyo will not send them marketing unless you subscribe them yourself.

Historical Sync

Expected. Synced orders carry their original dates and are sent as a backfill, so Klaviyo records them without firing flows. They count towards segments only.
Under Klaviyo account → Edit → Historical orders, the sync has already been run for the account (it shows Completed) or is still In progress. It runs once per account and cannot be re-run from the dashboard.
Only orders with status Complete or Accepted that have a customer email, from stores switched on at the time of the sync, are included.

Catalog

The sync includes named, non-deleted dishes from every menu on stores whose Enable Klaviyo switch is on. Check the store’s switch, and check the private key has Catalogs — Read/Write. The sync runs at 05:00 daily; a dish added today appears tomorrow.
Dishes are keyed by PLU, then SKU, then POS ID. Two different dishes sharing the same PLU (common after a POS import) become one catalog item. Fix the PLU on one of them in storekit and the next sync creates a separate item.
storekit never deletes catalog items. Delete it in Klaviyo.

Review Events

Under Stores → your store → Settings → Feedback, check Enable feedback is on. If Opt-in only is on, only customers who ticked the marketing box are asked. Requests go out after the order’s estimated ready time plus Notification delay, and a customer is asked at most once per store per 24 hours.
The customer has not completed the review form. Only completed reviews are sent.
Expected. Ratings of 4 and 5 are positive; 1 to 3 are negative. The threshold is fixed.

Still Stuck

Contact storekit support with the store name, the order code (OrderCode, shown on the customer’s receipt) and what you expected to see in Klaviyo. Please do not send your private API key.

Connecting Klaviyo

Scopes and per-store setup

Event Reference

Every event and property