Skip to main content
All CollectionsIntegrations
Klaviyo integration
Klaviyo integration

Connect Virtue and Klaviyo - automatically sync orders with donations and total donations to customer profiles to celebrate their impact!

Liam Houlahan avatar
Written by Liam Houlahan
Updated over a week ago

Engaging your customers with the impact that their purchase has made is key to running a successful giving campaign. Connecting Virtue with Klaviyo makes this easier than ever!

Merchants using Virtue and Klaviyo can:

  • Share donation values and impact of orders with customers.

  • Update customers on the total giving / impact generated by a campaign

  • Share the total giving and impact from all of individual customer's orders.

To get started create an API key

First you will need to create an API key from within Klaviyo to use with Virtue.

  1. Navigate to API Keys under profile settings.

  2. Click [Create Private API Key]

  3. Enter "Virtue" as your Private API Key Name

  4. Under Select Access Level, select Full Access Key

  5. Click Create. This will generate your new API key.

  6. Click the [copy] button to copy your API key.

Connecting Klaviyo to Virtue

  1. In Virtue go to Integrations > Klaviyo.

  2. Paste the API key you created previously and click Save.

Sending a Giving confirmation email / message

Whenever an order is made on your store that includes giving the "Ordered with donation" event is sent on the customer's profile.

  1. To setup a giving confirmation email / message create a new flow and set the trigger to the metric event called Ordered with donation.

  2. All of the giving, calculated impact and cause details for the order are attached to this event. Below is a breakdown of each field provided and the syntax to use inside of your email / message.

Event field

Email / message syntax

Order total donation amount

{{ event.order_total_giving_amount|default:'' }}

Order donation amount given by the store

{{ event.order_total_store_giving_amount|default:'' }}

Order donation amount given by the customer

{{ event.order_total_customer_giving_amount|default:'' }}

Order total calculated impact amount (when the cause has calculated impact)

{{ event.order_total_impact|default:'' }}

Order calculated impact amount from the store giving (when the cause has calculated impact)

{{ event.order_total_store_impact|default:'' }}

Order calculated impact amount from the customer giving (when the cause has calculated impact)

{{ event.order_total_customer_impact|default:'' }}

Campaign current total donation amount

{{ event.store_running_total_giving_amount|default:'' }}

Campaign current total impact amount (when the order's chosen cause has calculated impact)

{{ event.store_running_total_impact|default:'' }}

Name of the cause

{{ event.cause_name|default:'' }}

Organization name of the cause

{{ event.cause_organization|default:'' }}

Description of the cause

{{ event.cause_description|default:'' }}

Icon for the cause

{{ event.cause_icon|default:'' }}

Website url of the cause

{{ event.cause_website|default:'' }}

Order - all fields from the order provided by the ecommerce platform. (The name of this field is formatted as the ecommerce platform_order ie. shopify_order.

{{ shopify|magento|woocommerce_order }}

Using a customer's total giving from all of their orders in your emails / messages

To share the total giving that has taken place from all of a customer's orders with you follow these steps:

  1. Open the email / message editor for your flow or campaign email / message.

  2. Select [Add personalization] and scroll down to "Custom".

  3. You can insert the below fields from the customer profile.

Profile field

Email / message syntax

Total donations amount from all of the customer's orders.

.{{ person|lookup:"total_giving_amount"|default:"" }}

Total donations made by this customer for their orders.

{{ person|lookup:"total_customer_giving_amount"|default:"" }}

Total donations made by the store for this customer's orders.

{{ person|lookup:"total_store_giving_amount"|default:"" }}

Did this answer your question?