HomeGuidesAPI Reference
ChangelogHelp CenterCommunityContact Us
Guides

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 API Overview

Profile PropertyDescription
Email (Recommended as primary identifier)The profile's valid email address (must be <= 100 characters)
First NameFirst name
Last NameLast name
Phone NumberKlaviyo'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:

  1. At signup
  2. During membership purchase
  3. On your website (via onsite forms)
  4. During the booking process
  5. During check-in
Resources:

Collect email and text message consent via API
Bulk Subscribe Profiles
Create Client Subscription

Consent TypeDescriptionNotes
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
EventDescription
Active on Site / In AppThis event occurs when a client visits your website.
Viewed ClassThis event occurs when a client views a listing.
Added to CartThis event occurs when a client adds an item (e.g. Class, Appointment, Membership) to their cart.
Started CheckoutThis 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
EventDescription
Activated MembershipClient activates a membership for the first time
Purchased MembershipClient purchases a membership
Cancelled MembershipClient cancels a membership
Froze MembershipClient pauses a membership to be reactivated at a later time.
Reactivated MembershipClient reactivates an existing membership
ObjectDescription
MembershipThis 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:

Events API Overview

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)
EventDescription
Booked ClassClient booked an upcoming class
Signed In to ClassClient signed in to a class
Cancelled ClassClient cancelled a class booking
Completed Class PackCompleted a prepaid class pack
Booked AppointmentClient booked an upcoming appointment
Cancelled AppointmentClient cancelled an appointment
Checked In to AppointmentClient checked in to their appointment at the location
Confirmed AppointmentClient confirmed their appointment booking
Completed AppointmentClient 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:

Events API Overview

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)
EventDescription
Placed OrderThis 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 ProductThis 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 OrderThis 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 OrderThis 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 OrderThis event is tracked when an order was canceled by a user or the system.
Placed OrderThis 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 ProductThis 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.