Integrate a wellness platform
Learn how to integrate a wellness platform with Klaviyo.
Overview
This resource will help you as you build an integration between a Wellness platform and Klaviyo. It will walk you through understanding the basics of the Klaviyo data model and run through important profile and event data use cases. Where relevant, there will be links to associated resources for deeper understanding.
Since Klaviyo allows data to come in all formats with our schema-less data architecture, it's important to follow best practices, such as creating top-level fields for segmentation. Check out our integration FAQ for more information.
Building an integration with Klaviyo
If you are a partner interested in building a Klaviyo app, explore our guide to joining the Klaviyo ecosystem.
Understanding Klaviyo
Data categories
Klaviyo separates information into three broad primary data categories — events, profiles, and objects. (This is a non-exhaustive list of data types in Klaviyo, but highlighting the most common use cases for Wellness brands)
Events
Events are extremely versatile, since they can be used to record any type of timestamped action and can include associated information. Metrics are events grouped by type.
Profiles
Profiles are people. You can use either an email, phone number, or (not recommended) a specified client ID as a primary identifier. Klaviyo supports custom profile properties with the following data types: strings, integers, floats, dates, booleans, arrays/lists, or JSON (e.g., Birthday, Preferred Location, Membership Tier).
Objects
Objects are stateful representations of your data. Objects enable you to map diverse data concepts into Klaviyo with a many-to-one relationship, like reservations.
Additional Data Categories
In Klaviyo, you can also use catalogs, web feeds, lists & segments, campaigns, and templates. Catalogs are supported through the Catalogs API or via a JSON feed. Web feeds are supported either through a JSON or XML endpoint. For an MVP (minimum viable product), we have not found these categories to be required, but they can add value to your integration.
For each item in the catalog, consider including the following details:
- Unique ID: can be text, numeric, or alphanumeric, but must be unique
- Title: the name of the item
- URL: the website at which a person can find this item
- Image URL: a URL at which the image for this item is hosted
- Description: a text description of the item
- Price: numeric item price, no currency symbol
- Categories: comma-separated list/array of categories, tags, or collections associated with an item
- Variants: Variants for each parent item, with full item details per variant
- Inventory: Inventory available for each variant (Klaviyo does not support storing location-based inventory at this time)
- Sale Price (if available)
Since Klaviyo allows data to come in all formats with our schema-less data architecture, it's important to follow best practices, such as creating top-level fields for segmentation.
Data use cases
Data pushed into Klaviyo is used to personalize both the types of messages and the content within those messages that a profile receives. You can send messages through Klaviyo's supported channels (Email, Text Message, and Mobile Push) through Campaigns and Flows. Outside of messaging, profile and event information can be used for segmentation, personalized/dynamic content in messages, flow filtering, and personalized on-site content like forms.
Models
Below are all of the events Wellness integrations are using for success. We recommend all of the events in each relevant category to build an integration.
Profile Data
Profile Properties
Regardless of your use case, these are the most common profile properties that you'll want to pass into Klaviyo. Note that only email (recommended identifier), phone number, or external ID (not recommended identifier) are required.
Resources:
| Profile Property | Description |
|---|---|
| Email (Recommended as primary identifier) | The profile's valid email address (must be <= 100 characters) |
| First Name | First name |
| Last Name | Last name |
| Phone Number | Klaviyo's APIs only accepts the E.164 format (e.g., +15005550006) |
Example Profile Properties:
- Street address
- City
- Organization
- Country
- State/Region
- External ID
- Tags
- Interests
- PreferredLocation
- PreferredLanguage
- PreferredSpaceFeatures
- WellnessGoals
- PreferredClass
- ClientNotes
- Hometown
- Gender
- MaritalStatus
- Pronouns
- Nationality
- MembershipStatus
- MembershipTier
- Birthday
- Title
- Locale
Consent Data
Consent allows messages to be sent via the Klaviyo platform. Without syncing consent via your integration, consent will need to be captured outside the integration (either uploaded manually or gathered for all contacts in the list again). It is crucial that this connection be built if your platform collects consent in a compliant way.
If possible, it's important to collect both email and text message consent:
- At signup
- During membership purchase
- On your website (via onsite forms)
- During the booking process
- During check-in
Resources:
Collect email and text message consent via API
Bulk Subscribe Profiles
Create Client Subscription
| Consent Type | Description | Notes |
|---|---|---|
| Email consent (marketing) | Whether or not someone is consented to receive email marketing communication. | We highly encourage passing consent to Klaviyo. Please review the regulations for where your users are located to ensure that you're staying compliant. |
| Text message consent (transactional and/or marketing) | Whether or not someone is consented to receive text message communication. Consent can be granted separately for marketing and transactional purposes. | This consent must be explicit and include disclosure language to be compliant with text message regulations. |
User Onsite Activity
These often come from injected Klaviyo javascript on listing pages but could be webhooks/APIs as well. Historic sync is optional, but helpful.
Resources:
JavaScript Track API for onsite metrics
Use Cases:
- Trigger browse abandonment automation sequences based on client behavior on your site
- Trigger abandoned checkout automation sequences when a client does not complete a booking
| Event | Description |
|---|---|
| Active on Site / In App | This event occurs when a client visits your website. |
| Viewed Class | This event occurs when a client views a listing. |
| Added to Cart | This event occurs when a client adds an item (e.g. Class, Appointment, Membership) to their cart. |
| Started Checkout | This event occurs when a client begins the checkout process. |
Example Event Properties:
- ClassTitle
- AppointmentTitle
- StartTime
- EndTime
- StaffMemberName
- RoomName
- StudioName
- ClassURL
- ClassImage
- ClassAmenities
- Tags
Memberships
Below are examples of the most common data coming from the membership process. Note that not all of these data points are necessary and you can add additional ones for your use case. We recommend using events to capture critical points in the membership journey while using objects to store persistent data about a membership.
Resources:
Events API Overview
Custom Objects API Overview
Use Cases:
- Trigger post membership purchase transactional sequences (e.g. membership confirmation)
- Trigger post purchase marketing automation sequences (e.g., experiences, membership winback)
- Trigger check-in confirmation automation sequences to welcome members to your facilities
- Trigger check-out confirmation automation sequences to build member loyalty and get feedback
| Event | Description |
|---|---|
| Activated Membership | Client activates a membership for the first time |
| Purchased Membership | Client purchases a membership |
| Cancelled Membership | Client cancels a membership |
| Froze Membership | Client pauses a membership to be reactivated at a later time. |
| Reactivated Membership | Client reactivates an existing membership |
| Object | Description |
| Membership | This object is used to store data about a client's membership(s). |
Example Event Properties:
- Value
- LocationID
- LocationName
- MembershipID
- MembershipType
- MembershipTier
- MemberSinceDate
- SignupChannel
- StartOnDate
- EndOnDate
- Vouchers
- TrialIncluded
- CommitmentLengthMonths
- BillingFrequency
- TrainerAssigned
- GoalsSelected
Example Object Properties:
- Status
- Value
- LocationID
- LocationName
- MembershipID
- MembershipType
- MembershipTier
- MemberSinceDate
- SignupChannel
- StartOnDate
- EndOnDate
- Vouchers
- TrialIncluded
- CommitmentLengthMonths
- BillingFrequency
- TrainerAssigned
- GoalsSelected
Classes / Appointments
Below are examples of the most common events generated during the enrollment and booking process for wellness programs and experiences. Typically, enrollments represent classes, services, or products that a participant has added to their wellness or membership plan (e.g., spa treatments, workshops, nutritional add-ons). Note that not all of these events are required, and you can include additional ones tailored to your specific wellness offering.
Resources:
Use Cases:
- Trigger post purchase transactional sequences (e.g. booking confirmation)
- Trigger post purchase marketing automation sequences (e.g., upsell, winback)
- Filter marketing automation sequences based on items clients have booked
- Analyzing and segmenting purchase behavior for individual items within a booking
- Factored into models for order prediction and customer lifetime value (CLV)
| Event | Description |
|---|---|
| Booked Class | Client booked an upcoming class |
| Signed In to Class | Client signed in to a class |
| Cancelled Class | Client cancelled a class booking |
| Completed Class Pack | Completed a prepaid class pack |
| Booked Appointment | Client booked an upcoming appointment |
| Cancelled Appointment | Client cancelled an appointment |
| Checked In to Appointment | Client checked in to their appointment at the location |
| Confirmed Appointment | Client confirmed their appointment booking |
| Completed Appointment | Client completed their appointment |
Example Event Properties:
- MemberID
- Timestamp
- ClassID
- ClassType
- ClassName
- AppointmentID
- AppointmentType
- AppointmentName
- StartAt
- EndAt
- Duration
- StaffID
- StaffName
- LocationID
- LocationName
- DifficultyLevel
- ClassDurationMinutes
- BookingID
- BookingSource
- MembershipTier
- ClassCreditUsed
- RemainingClassCredits
Orders
Below are examples of the most common events coming from the retail and add-on purchase experienced at a facility / location. Typically, orders represent items that a client purchases either in-club or through your digital platform, such as supplements, merchandise, class packs, personal training sessions, or wellness add-ons. Not all of these events are required for every integration, and you can add additional events based on the specific needs of your gym or wellness business.
Resources:
Use Cases:
- Trigger post purchase transactional sequences (e.g. order confirmation)
- Trigger post purchase marketing automation sequences (e.g., upsell, winback)
- Filter marketing automation sequences based on items clients have ordered
- Analyzing and segmenting purchase behavior for individual line items within an order
- Factored into models for order prediction and customer lifetime value (CLV)
| Event | Description |
|---|---|
| Placed Order | This event is tracked when an order was placed and includes all of the product information about the items purchased, store information, and order details that can be used in messages. |
| Ordered Product | This event is tracked when a client places an order, but a separate event is tracked for each item someone purchases. For example, if someone buys a coffee and a sandwich, 1 Placed Order event will be tracked along with 2 Ordered Product events; 1 Placed Order event for the purchase as a whole, and then 1 Ordered Product event for the coffee and 1 Ordered Product event for the sandwich. This is useful when creating behavioral segments based on product variant options and other detailed information that's not available in the Placed Order event. |
| Fulfilled Order | This event is tracked when an order is marked as "fulfilled". The event Klaviyo tracks includes all product information regarding the items someone purchased including product names and images so you can use that information in purchase follow up emails. |
| Refunded Order | This event is tracked when a client completes the checkout process and a payment is made, but the client requests the payment to be returned. The event Klaviyo tracks includes all of the product information about the items someone purchased including product names, images, and variant information. |
| Cancelled Order | This event is tracked when an order was canceled by a user or the system. |
| Placed Order | This event is tracked when an order was placed and includes all of the product information about the items purchased, store information, and order details that can be used in messages. |
| Ordered Product | This event is tracked when a client places an order, but a separate event is tracked for each item someone purchases. For example, if someone buys a coffee and a sandwich, 1 Placed Order event will be tracked along with 2 Ordered Product events; 1 Placed Order event for the purchase as a whole, and then 1 Ordered Product event for the coffee and 1 Ordered Product event for the sandwich. This is useful when creating behavioral segments based on product variant options and other detailed information that's not available in the Placed Order event. |
Example Event Properties:
- Value
- Timestamp
- Items
- ItemsCount
- ItemCategories
- FulfillmentMethod
- OrderID
- ProductID
- Quantity
- Collections
- VariantTitle
- DiscountApplied
- DiscountCodes
- OrderingProvider
- VendorName
- Currency
- PaymentType
- ProductURL
- ImageURL
- RefundAmount
- AdjustmentType
- AdjustmentReason
- CanceledReason
- SKU
- Tags
- Source
Common gotchas
The primary gotchas are:
- Using the wrong naming convention so dynamic content does not populate correctly
- Nesting data so it is unreachable using segmentation
Follow this Identify common gotchas article to optimize your integration.
Updated about 7 hours ago