How to Set Up Affiliate Welcome Emails in Klaviyo

Last updated July 18, 2026

When Klaviyo is connected, Oshi doesn't send its own affiliate welcome email. Instead, Oshi fires an event called OSHI - Affiliate Signup into your Klaviyo account, and a flow you build in Klaviyo sends the email. This gives you full control over the design, branding, and timing of the welcome email your affiliates receive.

Important: If you don't have a live Klaviyo flow triggered on this event, your affiliates won't receive a welcome email at all. Set up the flow below before you start approving affiliates.

When the Event Fires

Oshi sends the OSHI - Affiliate Signup event in two situations:

  1. From your dashboard — when you approve an affiliate, click Resend Welcome Email on an affiliate's details, or bulk-send welcome emails from the Affiliates table.
  2. From self-serve signup — when someone signs up through your public affiliate signup page.

One flow covers both. You don't need separate flows for each path.

Step 1: Create the Flow in Klaviyo

  1. In Klaviyo, go to Flows and click Create Flow
  2. Choose Build Your Own
  3. Select TriggerMetric (not List or Segment)
  4. Under metric source, select API
  5. Find and select OSHI - Affiliate Signup, then hit Save
  6. Add an Email action directly after the trigger — no trigger split is needed, since this single metric covers every welcome email
Tip: The metric only appears in Klaviyo's metric picker after at least one event has been received. If you don't see it yet, trigger a test event first (see Step 4).

Step 2: Build the Welcome Email

The one thing every affiliate welcome email must include is the affiliate's personal referral link — that's {{ event.affiliate_url }}. Build the core email around it, along with your business name and logo.

Here's a starting point you can paste into a Klaviyo text block and customize:

Subject:

Welcome to the {{ event.business_name }} affiliate program!

Body:

Hi {{ first_name|default:'there' }},

You're officially an affiliate for {{ event.business_name }}. Here's your
personal referral link:

{{ event.affiliate_url }}

Share it anywhere. Every purchase made through your link earns you a
commission, paid in Bitcoin.

You can also use {{ event.business_logo }} and {{ event.cover_url }} as image sources in your template — both always have a value (Oshi falls back to a default image if you haven't uploaded one).

Step 3: Handle the Optional Fields

Two event properties are only included when the welcome email is sent from your dashboard, and can be empty or missing on the self-serve signup path:

  • redemption_url — the link where the affiliate redeems their earnings
  • affiliate_code — the affiliate's discount code, if they have one

Always wrap these in a Klaviyo conditional so the email doesn't render a blank line or a broken link:

{% if event.affiliate_code %}
Your personal discount code: {{ event.affiliate_code }}
{% endif %}

{% if event.redemption_url %}
Track and redeem your earnings here: {{ event.redemption_url }}
{% endif %}

Step 4: Set the Flow Live and Test It

  1. Set the email action to Live (Klaviyo creates new flows in Manual/Draft mode)
  2. Trigger a real event: open any affiliate's details in your Oshi dashboard and click Resend Welcome Email
  3. In Klaviyo, check Analytics > Metrics and open OSHI - Affiliate Signup to confirm the event arrived
  4. Confirm the flow triggered and the email looks right on desktop and mobile
Warning: Resending the welcome email sends a real email to that affiliate once your flow is live. Test with your own affiliate account or an internal email address.

Event Properties Reference

Every OSHI - Affiliate Signup event includes these properties, available in your template under event.:

Property Always present? Notes
business_name Yes Your business name
business_logo Yes Falls back to a default image if unset
cover_url Yes Falls back to a default image if unset
affiliate_url Yes The affiliate's referral link — the core of the email
timestamp Yes ISO 8601 timestamp of the signup
redemption_url No Dashboard-send path only; guard with a conditional
affiliate_code No Dashboard-send path only; guard with a conditional

The event also identifies the affiliate to Klaviyo with their email, first name, phone number (when Oshi has it), and an external ID in the format customer_<id>, so the event merges onto an existing Klaviyo profile instead of creating a duplicate.

What's Next

Was this article helpful?