Adding Custom Klaviyo Profile Properties

Last updated: November 12, 2026

Note: This is an advanced setup that sends data from Klaviyo to OneText using a webhook. If you need help, reach out to Support.

Use a Klaviyo flow with a webhook action to send profile data (like a loyalty tier or VIP status) to OneText as customer properties. Once a property is on the customer in OneText, you can use it to personalize messages, build segments, and branch flows, with no CSV imports or manual updates.

Before you start

Make sure you have:

Example: syncing a loyalty tier to OneText

A brand runs a loyalty program with three tiers: Bronze, Silver, and Gold. When a customer reaches Gold, Klaviyo adds them to a "Gold Members" segment.

A Klaviyo flow triggered by Joined Segment: Gold Members sends a webhook to OneText with two properties:

  • loyalty_tier = gold

  • vip = true

In OneText, the brand can then:

  • Personalize messages, for example: "As a Gold Member, you get early access to our sale!"

  • Target campaigns and flows to customers where loyalty_tier equals gold

  • Exclude VIPs from generic promotional texts when they already get a separate high-touch flow

Step 1: Set up the Klaviyo flow

  1. In Klaviyo, create a new flow and choose your trigger (for example, Joined Segment: Gold Members).

  2. Add a flow filter so only profiles with a phone number go through: Phone number is set.

  3. Add a Webhook action to the flow.

    Klaviyo flow actions with Webhook highlighted
  4. Name the webhook something easy to recognize, like OneText - Loyalty Tier.

Step 2: Configure the webhook

  1. In Destination URL, paste:

https://onetext.com/api/customer/properties
  1. Under Headers, add:

  • Key: Authorization

  • Value: your OneText API key value

  1. In JSON Body, paste the payload below and change the property names and values to fit your use case.

{
  "phone": "{{ person.phone_number }}",
  "properties": {
    "loyalty_tier": "gold",
    "vip": "true"
  }
}
  1. Save the webhook and check that Klaviyo doesn't show any errors.

Formatting tips

  • Property values are always strings, so wrap every value in quotes, even "true" or "5793".

  • Keep property names and values consistent (for example, always lowercase gold) so your OneText segments and filters match.

Payload template

Use this as a starting point for any property:

{
  "phone": "{{ person.phone_number }}",
  "properties": {
    "PropertyName": "PropertyValue"
  }
}

You can send more than one property in the same webhook by adding more lines inside properties.

Step 3: Test it

  1. In the webhook action, use Klaviyo's Preview with a test profile that has a phone number.

  2. Turn the flow live (or send a test profile through it).

  3. In OneText, open a segment and filter by that property and it should show 1 or more if you have a test profile sent over.

Good to know

  • Existing segment members aren't synced automatically. A Joined Segment flow only runs for people who join after the flow goes live.

  • Updating a value: Send the same property name with the new value (for example, a Silver flow that sends "loyalty_tier": "silver").

Using your properties in OneText

Once properties are on your customers, you can use them in segments, flows, and message personalization. Learn more: