Zest's Gift Notes app puts the power of gifting communications entirely in your hands. By connecting Klaviyo to your Zest app, your store sends beautiful, on-brand gift notification emails to both gifters and recipients.
You write the copy, design the templates, and control every detail. Zest handles the trigger logic automatically. This guide walks you through everything: connecting Klaviyo, understanding the events Zest sends, building your seven flows, and going live.
Overview: Why Klaviyo Integration Matters
When a customer purchases a gift through your store using Zest's Gift Notes or Multiship Checkout app, Zest fires event triggers to your Klaviyo account at the right moment. Your Klaviyo flows — which you build once and maintain — send the actual emails. This architecture gives you complete ownership of your brand's gift communications:
Full control over email templates, copy, and design.
No engineering or developer involvement needed.
Emails send from your domain, maintaining customer trust and brand consistency.
Important: Klaviyo integration is required to enable digital gift note delivery (email-based gift notifications to recipients). Printed gift notes work independently and do not require Klaviyo. You can launch with printed notes first, then add digital gift notes as a second phase.
Gifters and Gift Recipients
Zest Gift Notes tracks two audiences throughout the gifting journey:
Gifter — the customer who purchases the gift
Gift Recipient — the person who receives the gift
Prerequisites and API Key Setup
Before connecting, make sure you have:
An active Klaviyo account.
Admin access to your Klaviyo account (to create API keys).
Admin access to your Shopify store with the Zest Gift Notes app installed.
Generating your Klaviyo API key
Log in to your Klaviyo account.
Click your account name in the bottom-left corner, then select Account.
Navigate to Settings > API Keys.
Click Create Private API Key.
Give it a descriptive name (e.g., "Zest Gift Notes").
Set Full Access permissions — Zest requires the ability to create events and profiles.
Click Create and copy the key. Store it somewhere safe — you'll only see it once.
Important: Use a full-access private API key. Read-only keys will cause a validation error when saving. Do not use a public API key.
Connecting Klaviyo to Zest
Step-by-step: connecting your integration
From your Shopify admin, open the Zest Gift Notes app.
Navigate to Settings.
Scroll to the Integrations section and click Connect (or Add integration if no integration exists yet).
From the Integration type dropdown, select Klaviyo.
Paste your full-access private API key into the API key field.
Click Save.
When you save, Zest automatically sends a set of test events to your Klaviyo account to verify the connection is working. If validation fails, double-check that your API key is correct and has full-access permissions.
Once saved, your integration is active. You can return to this screen at any time to remove and re-add your integration or send additional test events.
Understanding Zest Events in Klaviyo
Zest fires seven events, each corresponding to a key moment in the gift journey. All consumer gifting events use lowercase names with underscores (e.g., zest_gift_order_placed), making them easy to distinguish from any other events in your Klaviyo account.
The seven Zest events
Event name | When it fires | Email recipient |
| Gifter places an order with a recipient email | Gifter |
| Gift notification sent to recipient at the gifter's chosen delivery time | Recipient |
| Recipient sends a thank-you message to the gifter | Gifter |
| Recipient opts in to receive shipping updates | Recipient |
| Gift order is marked as shipped | Recipient |
| Gift order is out for delivery | Recipient |
| Gift order is delivered | Recipient |
Note on a deprecated event name: The event formerly named zest_gift_accepted has been renamed to zest_tracking_opt_in. If you have any existing flows using the old event name as a trigger, create a new flow using zest_tracking_opt_in and copy your email content over. The old event name is deprecated and should not be used for new flows.
Event properties: what data is available
Each event passes a set of properties you can reference in your email templates. Here is what each event sends:
zest_gift_order_placed
order_idgift_urlgift_messagegift_fromdigital_carddigital_card_occasion(if applicable)digital_card_name(if applicable)recipient_namerecipient_emailrecipient_phone
zest_send_gift
order_idgift_urlgift_messagegift_fromdigital_carddigital_card_occasion(if applicable)digital_card_name(if applicable)recipient_name
zest_send_thank_you
order_idthank_you_messagerecipient_name
zest_tracking_opt_in
order_idcustomer_idgift_urlgift_from
zest_gift_shipped / zest_gift_out_for_delivery / zest_gift_delivered
order_idcustomer_idgift_urlgift_fromtracking_linktracking_numbertracking_company
Note: recipient_name is only available on the zest_gift_order_placed, zest_send_gift, and zest_send_thank_you events. It is not included in shipping or delivery events. Avoid personalized recipient greetings using recipient_name in your shipping, out-for-delivery, and delivered email templates to prevent blank fields.
How to find Zest events in Klaviyo
In Klaviyo, navigate to Analytics > Metrics.
Search for "zest" — all Zest events will appear in the list.
Click any event to view recent activity, timestamps, and the full data payload.
If no events appear, check that your API key is correct, has full-access permissions, and that test events have been sent from the Zest app.
Creating Klaviyo Flows
You need to build seven flows — one for each Zest event. Each flow follows the same simple structure: one trigger event → one transactional email. No time delays or conditional splits are needed.
Keep it simple! Zest handles all timing logic automatically — events fire at exactly the right moment. Adding wait steps or conditional splits can confuse customers and may interfere with transactional email status approval.
Want even more information?
Here are some more helpful Klaviyo resources:
The Klaviyo seven flows to build for Gift Notes
Flows that go to the gifter:
Gift order confirmation — Trigger:
zest_gift_order_placed
Confirms to the gifter that their gift order was placed successfully.Thank-you relay — Trigger:
zest_send_thank_you
Delivers the recipient's thank-you message to the gifter.
Flows that go to the recipient:
Gift notification — Trigger:
zest_send_gift
Notifies the recipient that a gift is on its way. This is the primary gift reveal email.Tracking opt-in confirmation — Trigger:
zest_tracking_opt_in
Confirms to the recipient that they've opted in to receive shipping updates.Gift shipped — Trigger:
zest_gift_shipped
Notifies the recipient that their gift has shipped, with tracking information.Gift out for delivery — Trigger:
zest_gift_out_for_delivery
Lets the recipient know their gift is almost there.Gift delivered — Trigger:
zest_gift_delivered
Confirms delivery to the recipient.
How to build each flow in Klaviyo
In Klaviyo, go to Flows and click Create Flow.
Select Create from Scratch.
Name your flow (e.g., "Zest — Gift Notification").
Under Trigger, select Metric and search for the corresponding Zest event (e.g.,
zest_send_gift).Click Done, then Create Flow.
In the flow builder, add an Email action immediately below the trigger (no delays).
Design your email template using the event properties listed in Section 4.
Before going live, mark the email as Transactional (see Section 7).
Once tested and approved, set the flow to Live.
Repeat for all seven flows.
Using Liquid Syntax and Event Properties in Email Templates
All event properties must be referenced using the event. prefix in Klaviyo's liquid syntax.
Correct syntax examples
What you want to show | Correct Liquid code |
Recipient's name |
|
Gift page link |
|
Digital card image |
|
Tracking link |
|
Gifter's name |
|
Gift message |
|
Thank-you message |
|
Tracking number |
|
Shipping carrier |
|
Always use event. prefix. Using {{recipient_name}} instead of {{event.recipient_name}} will result in a blank field.
Including the digital card image
To display the digital card in your email, insert the {{event.digital_card}} variable as the src attribute of an <img> tag. Switch to HTML/source view in the Klaviyo template editor:
<img src="{{event.digital_card}}" alt="Your digital gift card" />
Including a tracking link
<a href="{{event.tracking_link}}">Click here to track your gift</a>
Tip: set default values for Liquid variables
If a variable like a counter displays blank in a preview, check that a default value is configured in the liquid tag (e.g., {{event.some_variable|default:0}}).
Applying for Transactional Email Status
Gift notification emails are transactional — they relate to an order and contain information the recipient needs (gift notification, shipping updates). This means they must be sent to recipients regardless of their marketing opt-in status.
To ensure delivery, you need to mark each flow email as transactional and get it approved by Klaviyo.
How to apply for transactional status
In Klaviyo, open a flow and click on the Email action.
In the right sidebar, scroll down and check the Transactional box.
Submit the request for review.
Repeat for all seven flow emails.
Approval typically takes less than 24 hours. When writing your justification, emphasize:
These emails are tied to a specific ecommerce order.
They serve a functional purpose (notifying a gift recipient about a gift being sent to them).
They contain no marketing content.
They meet industry transactional email standards.
Apply for transactional status after building and testing your flows, but before going live.
Why transactional status matters
Gift recipients did not subscribe to your marketing list — they were added as part of a gift transaction by the gifter. Transactional emails bypass marketing opt-in requirements, ensuring every recipient gets the gift notification they're expecting.
Note for international brands: If your store serves UK or EU customers, gift notification emails are transactional in nature and generally do not require marketing consent. However, requirements can vary by region. Consult with your compliance team for specific guidance on GDPR or similar regulations.
Suggested Email Copy for Each Event
Below is suggested copy for each email. Paste the text directly into the Klaviyo email body. Where a clickable link is needed, the instructions walk you through inserting it via Source Code.
Important: All emails in these flows must be marked as transactional in Klaviyo. Transactional email approval can take up to 24 hours. Plan for this in your launch timeline, and note that every edit to a transactional email will require a new approval.
zest_gift_order_placed (Gifter)
Paste into the email text box:
Thank you for your gift order for {{ event.recipient_name }}! They'll receive a notification at {{ event.recipient_email }}.zest_send_gift (Gift Recipient)
Paste into the email text box:
Hi, {{ event.recipient_name }} — {{ event.gift_from }} sent you a gift! Click here to view their gift message, see tracking details, and send a thank you note!Then click Source Code, find the word "here", highlight and delete it, and paste:
<a href="{{ event.gift_url }}">here</a>zest_send_thank_you (Gifter)
Paste into the email text box:
Good news! {{ event.recipient_name }} has sent you a thank you message for their gift: "{{ event.thank_you_message }}"zest_tracking_opt_in (Gift Recipient)
Paste into the email text box:
You opted in to receive tracking updates. We'll notify you when your gift from {{ event.gift_from }} ships. Track this gift here.Then click Source Code, find the word "here", highlight and delete it, and paste:
<a href="{{ event.gift_url|default:'' }}">here</a>zest_gift_shipped (Gift Recipient)
Paste into the email text box:
Your gift from {{ event.gift_from }} has shipped! Track your delivery: here via {{ event.tracking_company }}.Then click Source Code, find the word "here", highlight and delete it, and paste:
<a href="{{ event.tracking_link|default:'' }}">here</a> via {{ event.tracking_company }}zest_gift_out_for_delivery (Gift Recipient)
Paste into the email text box:
Exciting news! Your gift from {{ event.gift_from }} is out for delivery today. Track its progress: {{ event.tracking_number }}.Then click Source Code, find the tracking number reference, highlight and delete it, and paste:
<a href="{{ event.tracking_link }}">{{ event.tracking_number }}</a>zest_gift_delivered (Gift Recipient)
Paste into the email text box:
Your gift from {{ event.gift_from }} has been delivered! We hope you enjoy it. Click here to send a thank you message.Then click Source Code, find the word "here", highlight and delete it, and paste:
<a href="{{ event.gift_url }}">here</a>Testing Your Flows
Always test your flows before enabling email gifting in your store settings.
Sending test events from Zest
In the Zest Gift Notes app, go to Settings.
In the Integrations section, click Send test events.
Enter a test email address (tip: use an alias like
[email protected]to avoid conflicts with existing profiles).Click Send test events.
Zest will fire all seven events to your Klaviyo account simultaneously.
Flows must be set to Live (not Draft or Manual) for test events to trigger them. If emails aren't arriving, check the flow status first.
Previewing emails in Klaviyo
In Klaviyo, open your flow and click on the email.
Click Preview and Test.
Under Preview as a specific person, search for the test email you sent events to.
Select the most recent event and preview the email to verify that liquid code is populating correctly.
Tips for clean testing
Use a fresh test email alias rather than a team member's email address. Team member emails may have been previously unsubscribed, or Klaviyo's Smart Sending may skip them if they received a similar email recently.
After sending test events, check the Skipped tab in each flow's message analytics. Smart Sending can suppress emails sent too close together to the same address.
Check Analytics > Metrics in Klaviyo and search "zest" to confirm all seven events were received.
Going Live: Enabling Email Gifting
Once your flows are built, transactional status is approved, and testing looks good, you're ready to go live.
Enabling email gifting in Zest
In the Zest Gift Notes app, go to Settings.
Click Edit next to Gifting capabilities.
Check the Email gifting box.
Click Save.
Important: Email gifting cannot be enabled until a Klaviyo integration (or other supported integration) is connected. If you try to enable it without a connected integration, you will see a validation error: "You must set up an integration prior to enabling email gifting." This is a built-in safeguard.
Once enabled, Zest will automatically trigger your Klaviyo flows when real gift orders are placed.
Common Issues and Troubleshooting
Flows aren't sending emails
Check these in order:
Flow status — Flows must be set to Live, not Draft or Manual. Draft flows do not process events.
API key permissions — Ensure the connected API key is full-access, not read-only.
Smart Sending — Klaviyo's Smart Sending feature may skip emails to recipients who received a similar email recently. Check the Skipped tab in your flow's message analytics. Consider disabling Smart Sending for critical transactional flows.
Wrong trigger event — Confirm you selected a consumer gifting event (lowercase, e.g.,
zest_gift_order_placed), not a corporate Zest Platform event (title case, e.g.,Zest Platform - Place Gift Order). Using the wrong event type will cause flows to not fire.Transactional status not approved — Emails marked as Transactional but pending approval may not send until approved.
Email gifting not enabled — Verify the Email gifting toggle is checked under Gifting capabilities in Zest settings.
Verifying events are reaching Klaviyo
In Klaviyo, go to Analytics > Metrics.
Search for "zest".
Click into an event to view recent activity and confirm the data payload looks correct.
If no events appear, send fresh test events from the Zest app and recheck.
Multiship orders: Smart Sending skips for gifters
When a customer sends to multiple recipients via Multiship Checkout, zest_gift_order_placed fires once for each Child Order. Klaviyo's Smart Sending may suppress subsequent emails to the same gifter if they arrive too close together.
Check the Skipped tab in message analytics for the zest_gift_order_placed flow. Consider disabling Smart Sending for this flow.
Recipient name shows as blank in shipping emails
The recipient_name property is only included in zest_gift_order_placed, zest_send_gift, and zest_send_thank_you. It is not available in shipping or delivery events. Remove personalized recipient name greetings from your shipped, out-for-delivery, and delivered email templates.
Event formerly called zest_gift_accepted
This event has been renamed to zest_tracking_opt_in. If you have a flow using zest_gift_accepted as a trigger, it will still receive events for now, but create a new flow with zest_tracking_opt_in as the trigger and migrate your email content over. The old name is deprecated.
Duplicate Klaviyo profiles from recipients
If a recipient provides a different email address when opting in for tracking updates than the one the gifter originally entered, a second Klaviyo profile may be created. The initial gift notification uses the gifter-provided email. This is expected behavior.
Can I use a different email platform?
Klaviyo is the primary supported integration and used by the vast majority of Zest customers. Zest also officially supports Attentive, Braze, Customer.io, Drip, Iterable, Mailchimp, Omnisend, Postscript, Sendlane, Yotpo, and Shopify Flow. A Custom HTTP option is available for platforms not on this list. Contact your Zest account team to discuss compatibility with other platforms.
Can I launch without Klaviyo set up?
Yes. Printed gift notes do not require Klaviyo and can be enabled independently. Digital gift notes (email delivery to recipients) require Klaviyo flows to be built, tested, and approved first. Email gifting can be added as a phase-two enhancement post-launch.
