How Skincare and SPF Brands Can Use UV Index to Automate Klaviyo Campaigns
UV levels vary dramatically by location, season, and day. A customer in Manchester and a customer in Málaga are experiencing completely different sun exposure — and neither of them is checking the UV forecast before they open their inbox.
Your brand can be the one that tells them. Automatically, for every customer, based on what the UV index actually looks like where they live.
The property that makes this work
Weather for Email adds wfe_average_uv_index to every Klaviyo profile daily — the average UV index forecast for the next 3 days, on a scale of 0–12+.
Use this as your segmentation and flow trigger. No manual monitoring, no seasonal guesswork.
UV reference scale:
When using this in a flow triggered by the "Upcoming Weather Change" event, you can also reference event.average_uv_index directly in your email content — letting you personalise subject lines and body copy with the actual UV value for each customer.
3 campaigns to set up for UV alerts
1. High UV alert flow
Trigger: Upcoming Weather Change event where average_uv_index is greater than 6.
Send a targeted email promoting broad-spectrum SPF 30+, UV-protective primers, and reapplication-friendly formats. Allow re-entry once every 7 days to avoid over-messaging during extended sunny periods.
Subject line example: "UV is forecast at {{event.average_uv_index}} in your area — your skin needs this"
2. Extreme UV warning flow
Trigger: average_uv_index greater than 8.
A separate, more urgent flow. Lead with SPF 50+, mineral sunscreens, and after-sun repair. Allow re-entry every 3 days — at this UV level, the health urgency justifies more frequent contact.
Subject line example: "⚠️ UV {{event.average_uv_index}} forecast — maximum protection required"
3. Moderate UV segment campaign
For customers where wfe_average_uv_index is between 3 and 5, run a gentler education-led campaign: daily SPF habits, moisturisers with UV protection, antioxidant serums. This is the preventive tier — customers who aren't in crisis mode but are a great fit for daily SPF products.
Dynamic UV index content in the email
Because event.average_uv_index is available when using the Weather Change flow trigger, you can show the actual UV index in the email body:
The UV index in your area is forecast to reach {{ event.average_uv_index }}
over the next 3 days.
{% if event.average_uv_index >= 8 %}
Skin damage can occur in under 15 minutes. SPF 50+ essential today.
{% elif event.average_uv_index >= 6 %}
Strong protection required. Reapply every 2 hours if you are outside.
{% else %}
Daily SPF recommended — UV adds up even on overcast days.
{% endif %}
Year-round relevance
UV doesn't disappear in winter — it drops, but it doesn't go to zero. wfe_average_uv_index lets you segment accurately by actual conditions, not by calendar month. Customers in southern Europe or the US Sun Belt will hit high UV thresholds earlier and more often than customers in the UK — and they'll get your email when it's relevant, not when your promotional calendar says spring has started.
How to show a UV-index scale in your emails
You can show a UV-index scale, and a table of recommendations using the sample HTML code below
{% with needle_pos=person.average_uv_index|multiply:100|divide:12 %}
<!-- UV Index Bar — Weather for Email -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:500px;margin:16px 0;font-family:Arial,sans-serif;">
<!-- Header --> <tr> <td style="padding-bottom:6px;font-size:13px;color:#444444;"> UV Index forecast for your area: <strong style="color:#333333;">{{ person.average_uv_index }}</strong> </td> </tr>
<!-- Gradient bar with needle --> <tr> <td style="position:relative;"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td style="height:12px;border-radius:6px;background:linear-gradient(to right, #5BC8F5 0%, #A8D940 25%, #F5C842 50%, #F59342 75%, #E84040 100%);"> <table cellpadding="0" cellspacing="0" border="0" style="margin-left:{{ needle_pos }}%;"> <tr> <td style="width:18px;height:18px;background:#333333;border:3px solid #ffffff;border-radius:50%;margin-top:-3px;box-shadow:0 1px 3px rgba(0,0,0,0.3);display:block;"></td> </tr> </table> </td> </tr> </table> </td> </tr>
<!-- Labels with UV ranges --> <tr> <td style="padding-top:4px;"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:20%;text-align:left;"> <span style="font-size:10px;color:#888888;display:block;">Low</span> <span style="font-size:9px;color:#aaaaaa;display:block;">1–2</span> </td> <td style="width:20%;text-align:center;"> <span style="font-size:10px;color:#888888;display:block;">Moderate</span> <span style="font-size:9px;color:#aaaaaa;display:block;">3–5</span> </td> <td style="width:20%;text-align:center;"> <span style="font-size:10px;color:#888888;display:block;">High</span> <span style="font-size:9px;color:#aaaaaa;display:block;">6–7</span> </td> <td style="width:20%;text-align:center;"> <span style="font-size:10px;color:#888888;display:block;">Very High</span> <span style="font-size:9px;color:#aaaaaa;display:block;">8–10</span> </td> <td style="width:20%;text-align:right;"> <span style="font-size:10px;color:#888888;display:block;">Extreme</span> <span style="font-size:9px;color:#aaaaaa;display:block;">11+</span> </td> </tr> </table> </td> </tr> <!-- Spacer --> <tr><td style="height:16px;"></td></tr>
<!-- Safety table header --> <tr> <td> <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #e0e0e0;"> <tr> <td style="padding:6px 8px;font-size:11px;color:#888888;font-weight:bold;width:30%;">Level</td> <td style="padding:6px 8px;font-size:11px;color:#888888;font-weight:bold;">Recommendations</td> </tr>
<!-- Low --> <tr style="border-top:1px solid #f0f0f0;"> <td style="padding:8px;vertical-align:top;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:10px;height:10px;background:#5BC8F5;border-radius:50%;vertical-align:middle;"> </td> <td style="padding-left:5px;font-size:11px;font-weight:bold;color:#1a6e90;vertical-align:middle;white-space:nowrap;">Low (1–2)</td> </tr> </table> </td> <td style="padding:8px;font-size:12px;color:#555555;line-height:1.5;"> No protection needed for most people. Wear sunglasses on bright days. If outside for an hour or more, apply SPF 15+. </td> </tr>
<!-- Moderate --> <tr style="border-top:1px solid #f0f0f0;"> <td style="padding:8px;vertical-align:top;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:10px;height:10px;background:#A8D940;border-radius:50%;vertical-align:middle;"> </td> <td style="padding-left:5px;font-size:11px;font-weight:bold;color:#3a6200;vertical-align:middle;white-space:nowrap;">Moderate (3–5)</td> </tr> </table> </td> <td style="padding:8px;font-size:12px;color:#555555;line-height:1.5;"> Apply SPF 30+ sunscreen. Wear a hat and sunglasses. Seek shade during midday hours (11am–3pm). </td> </tr>
<!-- High --> <tr style="border-top:1px solid #f0f0f0;"> <td style="padding:8px;vertical-align:top;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:10px;height:10px;background:#F5C842;border-radius:50%;vertical-align:middle;"> </td> <td style="padding-left:5px;font-size:11px;font-weight:bold;color:#7a5000;vertical-align:middle;white-space:nowrap;">High (6–7)</td> </tr> </table> </td> <td style="padding:8px;font-size:12px;color:#555555;line-height:1.5;"> Protection essential. Apply SPF 30–50+ and reapply every 2 hours. Cover up with UV-protective clothing. Reduce time in the midday sun. </td> </tr> <!-- Very High --> <tr style="border-top:1px solid #f0f0f0;"> <td style="padding:8px;vertical-align:top;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:10px;height:10px;background:#F59342;border-radius:50%;vertical-align:middle;"> </td> <td style="padding-left:5px;font-size:11px;font-weight:bold;color:#7a3200;vertical-align:middle;white-space:nowrap;">Very High (8–10)</td> </tr> </table> </td> <td style="padding:8px;font-size:12px;color:#555555;line-height:1.5;"> Extra protection required. Apply SPF 50+, wear long sleeves, a broad-brimmed hat, and UV-blocking sunglasses. Avoid sun between 11am–4pm if possible. </td> </tr> <!-- Extreme --> <tr style="border-top:1px solid #f0f0f0;"> <td style="padding:8px;vertical-align:top;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width:10px;height:10px;background:#E84040;border-radius:50%;vertical-align:middle;"> </td> <td style="padding-left:5px;font-size:11px;font-weight:bold;color:#7a1a1a;vertical-align:middle;white-space:nowrap;">Extreme (11+)</td> </tr> </table> </td> <td style="padding:8px;font-size:12px;color:#555555;line-height:1.5;"> Maximum protection. Stay indoors or in deep shade during midday hours. Unprotected skin can burn in minutes. SPF 50+, full coverage clothing, and sunglasses mandatory. </td> </tr> </table> </td> </tr>
</table>
{% endwith %}
Start sending personalised emails with UV index with a free 14-day trial →




