# Actions

You can use Klaviyo Connect plugin actions (in forms and links, see Templating Examples) to perform various Klaviyo actions from your Craft templates.

# Identify POST /klaviyoconnect/api/identify

This action is used to track properties about an individual without tracking an associated event.

See the Profile Form Parameters in the Update Profile action.

Note: Profiles can be updated provided the email address used is the same as an existing Klaviyo profile.

Warning: Forms that POST to the 'identify' and 'track' endpoints on unauthenticated pages (Craft user sign-in not required) can be abused to update existing Klaviyo profiles.

# Update Profile POST /klaviyoconnect/api/track

This action is used to add a user to a list or multiple lists and/or track events from a user.

Calls the identify API too.

# Profile Form Parameters

These apply to both actions.

email or profile[email] Required

An email address to identify a person's profile on Klaviyo

If profile[email] is not present, email will be used.

<input type="hidden" name="email" value="[email protected]" />
<!-- or -->
<input type="hidden" name="profile[email]" value="[email protected]" />

# Custom Event Properties

If you'd like to pass through custom profile properties, add them into the profile array.


<input type="hidden" name="profile[LastLogin]" value="{{ currentUser.lastLoginDate|date('Y-m-d\TH:i:sP') }}" />

# Klaviyo-specific Profile properties

See Klaviyo Notes and Special Identify Properties (opens new window) in Klaviyo's API docs.

<input type="hidden" name="profile[first_name]" value="{{ currentUser.firstName }}" />
<input type="hidden" name="profile[last_name]" value="{{ currentUser.lastName }}" />

# List Parameters

List form parameters can be passed to Klaviyo as either a single list or multiple lists.

Either list or lists[] needs to be present to add a user to a list:

list - Required

Klaviyo list ID.

<input type="hidden" name="list" value="{{ entry.listField.id }}" />

lists[] - Required

Array of Klaviyo List IDs

<select name="lists[]" multiple>
  {% for list in entry.listsField %}
    <option value="{{ list.id }}">{{ list.name }}</option>
  {% endfor %}

# Tracking Event Parameters

If event form parameters are present, Klaviyo's tracking API will be called to track the event and associate it to the user.

event[name] - Required

The name of the event to track.

<input type="hidden" name="event[name]" value="Completed Order" />

event[unique_id] - Required See Klaviyo Notes

The ID to associate with an event, e.g. Order ID.

<input type="hidden" name="event[unique_id]" value="{{ order.number }}" />

event[value] - Required See Klaviyo Notes

Value associated with an event, e.g. Total Cost.

<input type="hidden" name="event[value]" value="{{ order.totalPrice }}" />

event[value_currency] - Required See Klaviyo Notes

The ISO 4217 currency code of the value associated with the event. e.g. USD.

<input type="hidden" name="event[value_currency]" value="USD" />

# Custom Event Properties

If you'd like to pass through custom event properties, add them into the event array.

event[PropertyName] - Optional

Associative arrary of extra properties to be assigned to the event in Klaviyo.

<input type="hidden" name="event[Foo]" value="Bar" />

# Extra Form Parameters

The following extra parameters can be used in POST actions.

event[trackOrder] - Optional

When present, will trigger the order tracking logic as apposed to regular event tracking. If event[orderId] is set, that specific order will be used, otherwise the customer's current cart will be used.

This is useful in situations where the built-in order tracking is not sufficient, for example, tracking partial payments.

<input type="hidden" name="event[name]" value="Partial Payment" />
<input type="hidden" name="event[trackOrder]" value="1" />
<input type="hidden" name="event[orderId]" value="543" />

event[orderId] - Optional

The ID of the order to track. Requires trackOrder to be present.

forward - Optional

Tells the plugin to forward the POST request to a specified action once complete. If the forward form parameter is not included, the POST will follow the Craft Commerce redirect field, if present.

<input type="hidden" name="forward" value="/commerce/cart/update-cart" />

subscribe - Optional

Whether to subscribe (opens new window) a user to a list or add their profile (opens new window) to a list (default). This has the benefit of respecting the double opt-in setting of the list (opens new window).

<input type="hidden" name="subscribe" value="1" />

# Restore Cart GET /klaviyoconnect/cart/restore

Restores a previously active cart. Best used in a Klaviyo generated email to a specific customer.

# Parameters

number - Required

The cart number of the cart you wish to restore.

<a href="https://mysite.com/actions/klaviyoconnect/cart/restore?number=10a6a60e178f6d19ad58b2184001217b">Restore your cart</a>

In Klaviyo, if you've set up a flow based on the Started Checkout event, for example, you could create an email template to restore users' carts:

<a href="https://mysite.com/actions/klaviyoconnect/cart/restore?number={{ event.OrderNumber }}">Go to your cart</a>

See Klaviyo's Template Tags & Syntax (opens new window) documentation.