Klaviyo flow templates and event reference

Every Giftnote event sent to Klaviyo, all the properties they carry, and copy-paste template blocks for your flow emails.

Written By Giftnote Team

Last updated About 2 hours ago

Giftnote sends 12 events to Klaviyo. This guide gives you the event list, every property those events carry, and copy-paste template blocks for your flow emails.

If you built flows on the original Giftnote integration, they need updating. The field names have changed. gift_to, gift_from, gift_message, order_items, voucher_items and event.type are no longer sent. See What changed from the original integration at the end of this article for the full mapping.

The notifications you can set up

There are 17 notifications in the Giftnote app under Settings → Notifications. Each one can be sent through Klaviyo. Numbers 1 to 9 cover gift orders and gift cards. Numbers 10 to 17 only apply if you use Multi Gift.

Gift Orders

#NotificationGoes toWhat it is
1Gift Order - ConfirmedCustomerSent to the customer when their gift order is confirmed.
2Gift Order - CompleteCustomerSent to the customer when their gift message has been delivered to the recipient.
3Gift Order - Gift Message DeliveredRecipientThe gift message sent to the recipient. This is the core notification.

Gift Cards

#NotificationGoes toWhat it is
4Gift Card - ConfirmedCustomerSent to the customer when their gift card order is confirmed.
5Gift Card - CompleteCustomerSent to the customer when their gift card delivery is fully complete.
6Gift Card - Gift Message DeliveredRecipientThe gift card delivery email sent to the recipient with their code.
7Gift Card - Store Credit IssuedRecipientSent to the recipient when store credit has been added to their account.
8Gift Card - GenericRecipientFor gift cards that complete on confirmation, with no message and no scheduled delivery.
9Gift Card - Redeemed (tracking only)CustomerA usage signal sent to your marketing integrations when a gift card is redeemed. Sends no email.

Multi Gift

#NotificationGoes toWhat it is
10Multi Gift - ConfirmedCustomerSent to the customer when their group gift checkout is complete and the order is being processed.
11Multi Gift - CompleteCustomerSent to the customer when every gift in their group order has been delivered.
12Multi Gift - Confirmed (Staff)StaffSent to staff contacts who follow multi-gift updates when a group gift checkout is complete and the individual orders start being created.
13Multi Gift - Payment Received (Staff)StaffSent to the shop when payment for a group gift order has been received.
14Multi Gift - Error (Staff)StaffSent to the shop admin when there is an issue with a multi-gift order.
15Multi Gift - Claim RequestRecipientInvites the recipient to claim their gift (addressless gifting).
16Multi Gift - Claim OTPRecipientSends the recipient a one-time code to verify their gift claim.

Other

#NotificationGoes toWhat it is
17Multi Gift - Email Verification OTPShopperSends a shopper a one-time code to verify the email on their order so they can view it.

The three (Staff) notifications go to your team, not to shoppers. In the app they are listed under Recipient.

The events

Find these in the Giftnote app under Settings → Integrations → Klaviyo → Notification Events. Each one has a switch, plus Test, Preview and Edit. Use Preview to see the exact payload your store sends, and Edit to rename the metric if you need it to match an existing flow.

Gift Orders

Metric nameGoes toFires onWhat it is
Placed Gift OrderCustomerSend Later, On DeliveryA customer has placed a gift order. Confirm it has been processed.
Gift Order DeliveredCustomerSend Now, Scheduled Time, Package DeliveredThe gift order met its delivery conditions. Tell the customer their gift has been sent.
Received Gift OrderRecipientSend Now, Scheduled Time, Package Delivered, Resend MessageThe gift message itself, sent to the recipient.

Gift Cards

Metric nameGoes toFires onWhat it is
Purchased Gift CardCustomerSend LaterA customer bought a gift card with a message. Confirm it has been processed.
Gift Card DeliveredCustomerSend Now, Scheduled TimeThe gift card met its delivery conditions. Tell the customer it has been sent.
Received Gift CardRecipientSend Now, Scheduled Time, Resend MessageThe gift card and message, sent to the recipient.
Gift CardBothSelf Purchase, Resend Gift CardA gift card bought with no message, or a resend of just the card.
Issued Store CreditBothStore CreditStore credit issued from the admin. Sends the code and card details.
Redeemed Gift CardBothGift Card SpentA gift card has been used. Report the remaining balance.

Multi Gift

Metric nameGoes toFires onWhat it is
Multi Gift CreatedCustomerMulti Gift request receivedA multi-gift request has been created.
Multi Gift ApprovedCustomerMulti Gift approvedA multi-gift request has been approved.
Multi Gift CompleteCustomerAll gifts deliveredEvery gift in a multi-gift has been delivered.

Two field name styles, two syntaxes

This is the single most common reason a Giftnote field renders blank in Klaviyo. Giftnote sends properties in two naming styles, and each needs a different syntax.

Single-word and camelCase names use normal dot access:

{{ event.From|default:'' }}
{{ event.To|default:'' }}
{{ event.Message|default:'' }}
{{ event.orderName|default:'' }}
{{ event.customerName|default:'' }}

Names containing a space must use the lookup filter:

{{ event|lookup:'Gift Card Code'|default:'' }}
{{ event|lookup:'Gift Card Value'|default:'' }}
{{ event|lookup:'Scheduled Time'|default:'' }}
{{ event|lookup:'Delivery Method'|default:'' }}

{{ event.Gift Card Code }} will not error. It renders nothing at all, and the email sends with a blank space where the code should be. Always use lookup for any field name with a space in it, and always add |default:''.

Property reference

On every event

PropertyUse in a template asExample value
From{{ event.From }}John Doe
To{{ event.To }}Jane Smith
Message{{ event.Message }}The gift message the sender wrote
customerName{{ event.customerName }}John Doe
customerEmail{{ event.customerEmail }}john@example.com
orderName{{ event.orderName }}#1024
orderId{{ event.orderId }}Internal order reference
shopName{{ event.shopName }}Your store name
Scheduled Time{{ event|lookup:'Scheduled Time' }}September 23 2026 at 7:43 PM
scheduledAt{{ event.scheduledAt }}2026-09-23T19:43:15.718Z
createdAt{{ event.createdAt }}2026-09-23T19:43:15.718Z
Delivery Method{{ event|lookup:'Delivery Method' }}sendNow

Delivery Method is sent as a camelCase code, not as the label you see in the Giftnote app. Use Preview on the event to read the exact value before you write a flow filter on it.

Scheduled Time is pre-formatted text with no timezone. Use it when you want to print a send time. Use scheduledAt when you need a real timestamp to compare against.

Gift order events only

Present on Placed Gift Order, Gift Order Delivered and Received Gift Order.

PropertyTypeNotes
Order ItemsListOne entry per line item. Each has Title, Quantity, Price, Sku, URL, Image.
Order SkusListA flat list of the SKUs in the order.
Return URLTextOnly if you have the Loop Returns integration enabled.

Gift card events only

Present on Purchased Gift Card, Gift Card Delivered, Received Gift Card, Gift Card, Issued Store Credit and Redeemed Gift Card.

PropertyUse in a template asExample value
Gift Card Code{{ event|lookup:'Gift Card Code' }}GIFT-XXXX-1234
giftCardLast4{{ event.giftCardLast4 }}T123
Gift Card Value{{ event|lookup:'Gift Card Value' }}50
Gift Card Currency{{ event|lookup:'Gift Card Currency' }}AUD
Gift Card Currency Symbol{{ event|lookup:'Gift Card Currency Symbol' }}$
Gift Card Balance{{ event|lookup:'Gift Card Balance' }}Remaining balance. Redeemed Gift Card only.

The gift card code is deliberately masked on customer-facing events. On Purchased Gift Card, Gift Card Delivered and Redeemed Gift Card, Gift Card Code returns a masked value such as ********T123, so a live code is never emailed to the buyer in a confirmation. The full code is only sent on Received Gift Card, Gift Card and Issued Store Credit. In customer confirmations, use {{ event.giftCardLast4 }} and refer to the card as ending in those four characters.

Copy-paste template blocks

Subject lines and preview text

{{ event.From|default:'Someone' }} sent you a gift
A gift from {{ event.From|default:'' }} is on its way
{{ event.To|default:'Your recipient' }} has received your gift
Your gift card is here, {{ event.To|default:'' }}

Recipient gift message, text block

For Received Gift Order and Received Gift Card. Paste into the source view of a text block.

<p>Hi {{ event.To|default:'' }},</p>
<p>{{ event.From|default:'Someone' }} has sent you a gift from {{ event.shopName|default:'' }}.</p>
<p><strong>They left you this message:</strong></p>
<p><em>{{ event.Message|default:'' }}</em></p>

To hide the message section entirely when the sender did not write one, wrap it:

{% if event.Message %}
<p><strong>They left you this message:</strong></p>
<p><em>{{ event.Message }}</em></p>
{% endif %}

Customer confirmation, text block

For Placed Gift Order, Gift Order Delivered, Purchased Gift Card and Gift Card Delivered.

<p>Hi {{ event.customerName|default:'' }},</p>
<p>Your gift for {{ event.To|default:'your recipient' }} on order {{ event.orderName|default:'' }} has been sent.</p>
<p>Delivery time: {{ event|lookup:'Scheduled Time'|default:'as soon as possible' }}</p>

Order items, text block loop

The most reliable way to list the products in a gift order. Paste into the source view of a text block.

{% for item in event|lookup:'Order Items' %}
<p>
  <a href="{{ item.URL|default:'' }}">{{ item.Title|default:'' }}</a>
  x {{ item.Quantity|default:'' }}
  - {{ item.Price|default:'' }}
</p>
{% endfor %}

With the product image:

{% for item in event|lookup:'Order Items' %}
<p>
  <img src="{{ item.Image|default:'' }}" width="80" alt="{{ item.Title|default:'' }}" />
  <br />
  <a href="{{ item.URL|default:'' }}">{{ item.Title|default:'' }}</a>
  x {{ item.Quantity|default:'' }}
</p>
{% endfor %}

Each item in the loop exposes item.Title, item.Quantity, item.Price, item.Sku, item.URL and item.Image. URL and Image can be empty depending on the product, so always keep the |default:''.

Order items, dynamic table block

If you prefer Klaviyo's product table block over a text loop, set the table up with:

  • Row collectionevent|lookup:'Order Items'
  • Row aliasitem

Then reference {{ item.Title }}, {{ item.Quantity }}, {{ item.Price }}, {{ item.Image }} and {{ item.URL }} inside the table. Send yourself a preview to confirm the rows render before you turn the flow on.

Gift card block, recipient

For Received Gift Card, Gift Card and Issued Store Credit. These are the events that carry the full, usable code.

<p>Hi {{ event.To|default:'' }},</p>
<p>{{ event.From|default:'Someone' }} has sent you a <strong>{{ event|lookup:'Gift Card Currency Symbol'|default:'' }}{{ event|lookup:'Gift Card Value'|default:'' }} {{ event|lookup:'Gift Card Currency'|default:'' }}</strong> gift card.</p>
<p><strong>Your code:</strong> {{ event|lookup:'Gift Card Code'|default:'' }}</p>

Gift card block, customer confirmation

For Purchased Gift Card and Gift Card Delivered. Note this uses giftCardLast4, not the code.

<p>Hi {{ event.customerName|default:'' }},</p>
<p>Your {{ event|lookup:'Gift Card Currency Symbol'|default:'' }}{{ event|lookup:'Gift Card Value'|default:'' }} gift card ending {{ event.giftCardLast4|default:'' }} has been sent to {{ event.To|default:'your recipient' }}.</p>

Remaining balance

For Redeemed Gift Card.

<p>Your gift card ending {{ event.giftCardLast4|default:'' }} has been used.</p>
<p><strong>Remaining balance:</strong> {{ event|lookup:'Gift Card Currency Symbol'|default:'' }}{{ event|lookup:'Gift Card Balance'|default:'0' }} {{ event|lookup:'Gift Card Currency'|default:'' }}</p>

Only renders if you have the Loop Returns integration enabled. Present on the gift order and Multi Gift events.

{% if event|lookup:'Return URL' %}
<p><a href="{{ event|lookup:'Return URL' }}">Start a return or exchange</a></p>
{% endif %}

The flows you can build

Twelve events means twelve possible flows. Build them in this order. The first six cover the vast majority of gifting volume, so start there and add the rest later.

  1. Received Gift Order — the gift message to the recipient. The most important one. Trigger: Received Gift Order.
  2. Received Gift Card — the gift card and message to the recipient. Trigger: Received Gift Card.
  3. Gift Card — a card bought with no message, or a resend of just the card. Trigger: Gift Card.
  4. Issued Store Credit — store credit issued from your admin. Trigger: Issued Store Credit.
  5. Placed Gift Order — order confirmation to the customer. Trigger: Placed Gift Order.
  6. Purchased Gift Card — gift card purchase confirmation to the customer. Trigger: Purchased Gift Card.
  7. Gift Order Delivered — tells the customer their gift has landed. Trigger: Gift Order Delivered.
  8. Gift Card Delivered — tells the customer their card has been sent. Trigger: Gift Card Delivered.
  9. Redeemed Gift Card — remaining balance after a card is used. Trigger: Redeemed Gift Card.
  10. Multi Gift Created — a multi-gift request has been created. Trigger: Multi Gift Created.
  11. Multi Gift Approved — a multi-gift request has been approved. Trigger: Multi Gift Approved.
  12. Multi Gift Complete — every gift in a multi-gift has been delivered. Trigger: Multi Gift Complete.

Flows 1 to 4 go to the recipient and are the ones that carry the full gift card code. Flows 5 to 9 go to the customer who bought the gift. Flows 10 to 12 only apply if you use Multi Gift.

How to build each one

  1. In Klaviyo, create a flow and set the trigger to the Giftnote metric you want, for example Received Gift Order.
  2. Add an email and build it from the blocks above.
  3. Before you switch the flow live, go back to Giftnote and turn off the matching built-in Giftnote notification, or your recipients will get two emails. This is under Settings → Notifications in the Giftnote app.
  4. Use Test on the event in Giftnote to push a sample event, then preview your email against it in Klaviyo.

You do not need conditional logic to separate products from gift cards any more. Gift orders and gift cards are separate events, so a flow triggered on a gift card event will never receive an order with products, and vice versa. Build one flow per event.

What changed from the original integration

If you are migrating flows built on the older Giftnote Klaviyo integration, these are the replacements.

Old fieldUse instead
event.gift_toevent.To
event.gift_fromevent.From
event.gift_messageevent.Message
event.timeevent|lookup:'Scheduled Time'
event.timezoneNo longer sent
event.order_itemsevent|lookup:'Order Items'
item.titleitem.Title
item.quantityitem.Quantity
item.imageitem.Image
item.product_urlitem.URL
item.variant_titleNo longer sent
event.voucher_itemsGift card details are now sent as flat fields on each gift card event
event.voucher_valueevent|lookup:'Gift Card Value'
event.voucher_currencyevent|lookup:'Gift Card Currency'
event.voucher_currency_symbolevent|lookup:'Gift Card Currency Symbol'
event.voucher_codeevent|lookup:'Gift Card Code'
event.type (PRODUCTS_ONLY / HYBRID / VOUCHERS_ONLY)No longer sent. Trigger a separate flow per event instead.
has_products / has_vouchers trigger filtersNo longer sent. Trigger a separate flow per event instead.

New fields with no older equivalent: item.Price, item.Sku, Order Skus, giftCardLast4, Gift Card Balance, Delivery Method, Return URL, orderId, orderName, customerName, customerEmail, shopName, createdAt, scheduledAt.

Build a block with AI

If you want an AI assistant to write a custom block for you, paste this prompt in along with what you want the email to say.

I am building a Klaviyo flow email triggered by a Giftnote event.

Klaviyo uses Django-style template syntax. Giftnote sends properties in two naming styles and each needs different syntax:

- Single-word or camelCase names use dot access:
  {{ event.From }}, {{ event.To }}, {{ event.Message }}, {{ event.customerName }}, {{ event.customerEmail }}, {{ event.orderName }}, {{ event.orderId }}, {{ event.shopName }}, {{ event.giftCardLast4 }}, {{ event.createdAt }}, {{ event.scheduledAt }}

- Names containing a space MUST use the lookup filter:
  {{ event|lookup:'Gift Card Code' }}
  {{ event|lookup:'Gift Card Value' }}
  {{ event|lookup:'Gift Card Currency' }}
  {{ event|lookup:'Gift Card Currency Symbol' }}
  {{ event|lookup:'Gift Card Balance' }}
  {{ event|lookup:'Scheduled Time' }}
  {{ event|lookup:'Delivery Method' }}
  {{ event|lookup:'Order Items' }}
  {{ event|lookup:'Order Skus' }}
  {{ event|lookup:'Return URL' }}

Rules:
- Always add |default:'' to every variable.
- Never write {{ event.Gift Card Code }}. It fails silently.
- "Order Items" is a list. Loop it with {% for item in event|lookup:'Order Items' %} ... {% endfor %}. Each item exposes item.Title, item.Quantity, item.Price, item.Sku, item.URL, item.Image.
- "Order Items", "Order Skus" and "Return URL" only exist on the gift order events. The Gift Card fields only exist on the gift card events.
- On Purchased Gift Card, Gift Card Delivered and Redeemed Gift Card the Gift Card Code is masked, so use giftCardLast4 in those emails.

Output plain HTML suitable for pasting into a Klaviyo text block source view. Use inline styles only. No external CSS, no JavaScript.

What I want the email to say:
[describe it here]