Gamification and interactive email: 9 examples built with Betty

Nine interactive email examples we built with Betty, from a spin-the-wheel and a scratch card to a live countdown and a quiz, with the prompts we used and what works in which inbox.

Nicki Pabst Rasmussen

Gamified emails, like a prize wheel, a scratch card or an advent calendar, take a lot of work. Few inboxes support interactive email, someone has to draw the animation in Photoshop, and someone has to code a fallback for the clients that can't play it. Services with prebuilt wheels and countdowns save the drawing, but their designs don't match your brand.

With Betty, our AI agent, we describe what we want and she makes it. She knows what each email client can show, and she works from your design system, so the colours and fonts are already yours. You get a custom asset to use once, or a module your team can reuse.

That works because a design system in Better Email has no fixed set of building blocks. Modules are written in HTML, so anything that works in an email client can be built, including every interactive piece in this post.

Every example in this post was made for Vandra, the outdoor brand we use for demos, with Vandra's design system. This is one of its campaigns:

A Vandra campaign for The Trail Collection: a hiker in a mountain landscape, four products with prices, a customer quote, field notes about the fabric, a members' free repairs offer and a footer

Where interactive email works

TechniqueWhere it worksWhat it takes
AMP for EmailGmail, Yahoo, AOL, Mail.ru and FairEmailYou register as a sender with the mailbox providers, and your ESP has to send the AMP version. Most ESPs can't.
CSS checkbox trick (:checked)Apple MailGmail strips it and Outlook.com breaks it, so everyone else needs a fallback.
Animated GIFAlmost every email clientOutlook for Microsoft 365 on Windows plays a looping GIF three times, then pauses it behind a play button. Outlook 2007 to 2019 show only the first frame.

Only the GIF plays for nearly everyone on your list, and it needs no sender registration or ESP support.

Motion in the email, interaction on the landing page

The email shows the motion, and the click takes the reader to a landing page where the interaction happens. These patterns all work that way:

  • Spin-the-wheel. The wheel spins in the email. The whole image links to a page that draws the prize.
  • Scratch to reveal. The foil comes off in the GIF and shows an offer or a code.
  • Countdowns. A live timer counts down to the deadline from the moment the email is opened, and the click goes to the sale.
  • Progress bars. A bar fills to show how close a member is to the next tier. Make one GIF per step and let your ESP pick the image from a profile field, as the membership example below does.
  • Quizzes. Each answer is its own button with its own link. The landing page says whether the answer was right, and the click tells you what each person picked. In Apple Mail a quiz can also run inside the email, as the quiz example below shows.

None of them can pick a random prize per person, because a prize GIF is drawn once and plays the same for every recipient. The prize is decided on the landing page after the click.

How we built these with Betty

Betty draws the frames in your design system's colours and fonts, puts the GIF together, and shrinks it to fit a size limit. Here are the prompts we gave her and what came back. The docs explain how to ask Betty for a GIF.

Spin-the-wheel

We asked Betty

Make a spin-the-wheel teaser GIF in our brand colours

Betty made

Animated prize wheel in green, orange and white that spins and slows down, with slices for 10%, 15%, 20% and 25% off, two gifts and two mystery prizes

Betty built a whole module around the wheel: a label, a heading, a line of copy, a pointer above the image, and a button that sets a reminder. The pointer sits in the module, so the GIF itself has none. The email is a teaser: it announces the spin, and the spin itself happens on the landing page.

The module in Better Email, with the settings Betty made for it.
The Spin the wheel module in the Better Email editor: the Vandra wheel under an orange pointer with the heading Spin to win, and the module settings for label, heading, body, wheel image, alt text, a CSS spin switch and the button

The copy, the image and the button are all settings, so the team can swap in another wheel or change the offer without touching code. A switch makes a still wheel image spin with CSS in Apple Mail and iOS, for teams that would rather not send a GIF. Older Outlook versions on Windows show only the first frame, which is still a whole wheel. 640 × 640 pixels, 825 KB, 4.5 seconds.

Gift box reveal

We asked Betty

Make a 3-second animated GIF of a gift box that shakes, opens and reveals '20% OFF'. Brand colours, 600px wide, under 800 KB. The first frame has to make sense on its own for Outlook.

Betty made

Animated orange gift box with a 20% OFF tag that shakes, opens and reveals 20% OFF in large letters

For the Outlook rule, Betty hung a tag with the offer on the closed box, so the first frame already says 20% OFF. The GIF runs exactly 3 seconds and weighs 211 KB, about a quarter of the limit.

She put it in a module with the offer repeated as live text: a heading, a line of copy, the code GIFT20 in a box, and a button.

The gift module. A note on the image field reminds the team about the first frame in Outlook.
The Gift reveal module in the Better Email editor: the opened gift box, the heading 20% off, just for you, the code GIFT20 and an Open the shop button, next to settings for label, image, alt text, heading, body, discount code, code note and button

Scratch card

We asked Betty

Make a scratch-card GIF: a silver foil layer gets scratched away in a few random strokes to reveal the offer underneath.

Betty made

Animated Vandra members' scratch card where silver foil is scratched away to reveal 15% OFF with the code SCRATCH15

The strokes are random when Betty draws them, and then the same for everyone who opens the campaign. 600 × 400 pixels, 166 KB, 5 seconds.

The prompt didn't mention Outlook, and Betty handled it anyway. The first frame is all foil, so older Outlook versions on Windows show an unscratched card. In the module she built around the GIF, the offer and the code are repeated as live text under the card, and a note in the settings says why.

The scratch card module. The note under the image field explains the Outlook fallback.
The Scratch card module in the Better Email editor: the unscratched card, the heading You've got 15% off, the code SCRATCH15 in a dashed box and a button, next to settings for the image, heading, body, discount code, code note and button

Advent calendar

We asked Betty

Make an advent calendar for December: one door GIF per day in our brand colours that opens to show that day's product. Build it as a module where we pick the day and the product image.

Betty made

Betty made all 24 door GIFs and a module to go with them. The marketer picks the day on a "Today's door" slider, and the date, the heading and the "Door 2 opens tomorrow" line follow from it. Behind the door go the product image, a title, a line of copy, a discount code and a button. A "Custom door GIF" field swaps in a different door for a one-off, and a switch adds a grid of the whole calendar with the earlier doors opened.

The advent calendar module, set to door 1.
The Advent calendar door module in the Better Email editor: Door 1 is open, the SKARV 38 pack behind the opened doors, the code DOOR01 and a Shop door 1 button, next to settings for today's door, label, heading, intro, calendar grid and what is behind the door

The product photo and the door GIF sit in the same spot. The photo is the background of a 560 × 400 box, and the GIF lies on top at the same size. As the doors swing open, the GIF turns see-through where they were, and the photo shows through. It plays once and stops open.

Layering them has two advantages over one GIF with the product baked in:

  • One door works with any product. The doors don't know what's behind them, so you can change the product up to the last minute without a new GIF.
  • The photo stays sharp. A GIF holds 256 colours, so a product photo inside one looks grainy and weighs more. The door GIF only holds flat green, orange and white, and stays at 330 KB.
The HTML behind the doors

Stripped down to the parts that make the trick work:

<!-- The product photo sits underneath as a background image.
     The door GIF sits on top and turns see-through as the doors open. -->

<!--[if mso]>
  <!-- Outlook for Windows can't do the layering, so it just gets the photo -->
  <img src="https://example.com/product.jpg" width="560" height="400"
       alt="Behind door 1: our SKARV 38 pack" style="display:block; border:0;" />
<![endif]-->

<!--[if !mso]><!-->
<table cellpadding="0" cellspacing="0" border="0" width="560">
  <tr>
    <!-- Bottom layer: the product photo -->
    <td background="https://example.com/product.jpg"
        style="background-image:url(https://example.com/product.jpg);
               background-size:cover;
               background-position:center;
               background-color:#22372E;">

      <!-- Top layer: a GIF with see-through areas where the doors open -->
      <img src="https://example.com/door-01.gif" width="560" height="400"
           alt="Behind door 1: our SKARV 38 pack"
           style="display:block; border:0; width:100%; height:auto;" />

    </td>
  </tr>
</table>
<!--<![endif]-->

Three things make it work:

  • The GIF has see-through areas. Every frame is exported with a transparent colour and set to clear before the next one, so the photo shows through as the doors swing away.
  • Both layers are the same size. The photo and the GIF are both 560 × 400, so the opening lines up with the picture behind it.
  • Outlook gets a backup. Outlook on Windows handles background images badly, and older versions show only the first frame of a GIF. The [if mso] block gives it just the photo, so nobody is stuck looking at closed doors.

The trick needs the inbox to show background images. Apple Mail, iOS Mail, Gmail and Outlook.com do. An inbox that doesn't would show the doors opening onto plain green, so check in your test send that the product appears behind the doors. With images off, the reader sees the green box and the alt text. The product name and code under it are live text, so they show either way.

Membership progress bar

We asked Betty

Make a progress bar module that shows each recipient's membership level: Bronze, Silver or Gold. Animate it as a GIF, with the bar filling up to their level. I need to set which merge tag holds the level, and to preview all three versions.

Betty made

Animated Vandra membership status bar where the orange bar fills to Bronze, which gets a star and a tag reading You're bronze

Betty drew one GIF per level, with the bar filling up to the member's tier and stopping there. The module reads the level from a field in SFMC when the campaign is sent, so each recipient gets the GIF, the heading and the copy for their own level.

That gets around the limit from earlier. Each GIF still plays the same for everyone who receives it, but which GIF a recipient gets depends on their membership.

Each GIF is 1200 × 440 pixels for sharp screens, about 22 KB, and plays in 4.4 seconds.

Preview as switches between the three levels in the editor. The settings hold the SFMC attribute, the value for each level, and what to do when a recipient has none: here, hide the module.
The Membership status module in the Better Email editor: the progress bar with Bronze and Silver ticked, the heading You're a Gold member and a See your perks button, next to settings for preview level, SFMC attribute, the value for each level, what to do with no level, and the heading and text for each level

Live countdown

We asked Betty

Can you make a live countdown to Black Friday?

Betty made

This is the timer Betty made. The one in this post always counts down to the coming Friday at 18:00 Copenhagen time. In the module you set the exact date and time. Like in an email, it stops after a minute, and Start again loads a new one.

The module in Better Email. Starts at sets the deadline, and the timer alt text covers readers with images off.
The Black Friday countdown module in the Better Email editor: the label Black Friday · 27 November, the heading Black Friday is coming, a timer showing 39 days, 11 hours, 31 minutes and 11 seconds and a Get early access button, next to settings for label, heading, body, the start time in Oslo time, the timer alt text, the button label and the button link

Betty built a module around the timer: a label with the date, a heading, a line of copy and an early-access button. The date is in the copy as well as in the timer, so readers with images off still know when the sale starts.

The timer is a GIF that a server draws when the email is opened. It starts at the time left at that moment and counts down for one minute, one frame per second. Open the email again and it starts from the new time.

The deadline can also be different for each recipient, such as the end of their free trial. The date comes from a field on the recipient, and your ESP fills it in when it sends.

Older Outlook versions on Windows show only the first frame, which is the time left when the email was opened, so the number is still right. Outlook for Microsoft 365 plays it once and stops.

Once the deadline has passed, the server sends this image in place of the timer, so a campaign opened late doesn't show a row of zeros:

Black Friday is on. The deals are live now.

Save the date with a calendar file

We asked Betty

Make a save-the-date module for Vandra Trail Day on Saturday 14 November, 10:00 to 15:00 at Frognerseteren in Oslo. Add buttons so people can put it in their calendar, whichever calendar they use.

Betty made

The module in Better Email. The calendar settings feed all three buttons.
The Save the date module in the Better Email editor: a dark green date block reading Saturday 14 Nov 2026, the heading Vandra Trail Day, the time and place, a short description and three buttons, Apple & Outlook, Google Calendar and Outlook.com, next to settings for the event text and for the calendar event: start, end, time zone, title, notes and the calendar file URL

Betty built the module and wrote the calendar file herself. There are three buttons, because calendars take events in different ways:

  • Apple & Outlook opens a calendar file (.ics), which Apple Calendar and Outlook on desktop open as a new event.
  • Google Calendar and Outlook.com open a new event in the browser with the title, time, place and notes filled in.

The file stores the time in UTC, so the event lands at 10:00 Oslo time in any reader's time zone. Betty also added a reminder the day before.

Open the calendar file

The file doesn't change once it's made. If the event moves, a note in the settings tells the team to ask Betty for a new one, so the file and the date in the copy always match.

There is more on how each kind of calendar link works in Calendar links in email.

The calendar file Betty wrote
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Vandra//Save the date//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20261018T120000Z
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:OPAQUE
DTSTART:20261114T090000Z
DTEND:20261114T140000Z
SUMMARY:Vandra Trail Day
LOCATION:Frognerseteren\, Oslo
DESCRIPTION:A free day on the trails with the Vandra crew. Guided hikes fo
 r every pace\, gear to try\, and hot coffee at the finish. Details: https
 ://vandra.example/trail-day
URL:https://vandra.example/trail-day
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Vandra Trail Day is tomorrow
TRIGGER:-P1D
END:VALARM
END:VEVENT
END:VCALENDAR

DTSTART and DTEND are in UTC, which the Z marks. Commas in the text are escaped with a backslash, long lines carry on after a space on the next line, and the VALARM block is the reminder.

Quiz with the CSS checkbox trick

We asked Betty

Create a new Module called "Find your trail quiz" that uses the checkbox hack (hidden radio buttons and labels) to run a 3-question quiz inside the email. Questions, shown one at a time with a "Question 1 of 3" progress line. Each answer is a full-width tappable button: How long are you out? Just the day / A few nights What's the weather doing? Dry and clear / Wind and rain What's under your feet? Easy paths / Rocky ground Results: after the last answer, show a product card with image, name, price, one line on why it fits, and a Shop button.

Betty made

This is Betty's module, and the quiz works here the way it does in Apple Mail. Each answer is a label for a hidden radio button, and CSS shows the next question once a button is checked. Three questions with two answers each make eight paths, and Betty mapped them to four products.

She also gave the module a fallback without being asked. Gmail strips the trick and Outlook breaks it, so in those inboxes the reader gets all four products, each with a line on when it fits. Switch to the Gmail and Outlook tab to see it.

Each question, answer and result is a setting. Intro without quiz is the text Gmail and Outlook readers see.
The Find your trail quiz module in the Better Email editor, showing question 1, next to settings for the label, heading, intro, three questions with two answers each, the intro shown without the quiz, and a list of results

The fallback works because the module tests the inbox first. It starts with a hidden checkbox that is already checked. Where :checked works, CSS hides the static list and shows the quiz. Where the inbox strips the checkbox or ignores :checked, nothing matches, and the static list stays.

The CSS and HTML behind the quiz

With the Vandra styling taken out:

<style>
  .quiz, .step2, .step3, .result { display: none; }
  /* The quiz only appears if the inbox kept the checkbox and supports :checked */
  .detect:checked ~ .quiz { display: block !important; }
  .detect:checked ~ .fallback { display: none !important; }
  /* Answering question 1 hides it and shows question 2 */
  #q1a:checked ~ .quiz .step1, #q1b:checked ~ .quiz .step1 { display: none !important; }
  #q1a:checked ~ .quiz .step2, #q1b:checked ~ .quiz .step2 { display: block !important; }
  /* Each combination of answers shows one product */
  #q1b:checked ~ #q2a:checked ~ #q3a:checked ~ .quiz .result-pack { display: block !important; }
</style>

<input type="checkbox" class="detect" checked style="display:none">
<input type="radio" name="q1" id="q1a" style="display:none">
<input type="radio" name="q1" id="q1b" style="display:none">
<!-- Same pair of radio buttons for questions 2 and 3 -->

<div class="fallback">All four products, each with a line on when it fits</div>

<div class="quiz">
  <div class="step1">
    <label for="q1a">Just the day</label>
    <label for="q1b">A few nights</label>
  </div>
  <!-- step2, step3, and one result card per product -->
</div>

The inputs have to come before the quiz in the HTML, because the ~ selector only reaches elements that follow.

Colour picker

We asked Betty

Create a new interactive module: a product colour picker. Show one product with a swatch for each colour. Tapping a swatch swaps the photo, the colour name and the Shop button, so the button links to the colour the reader picked. Let us add colours in the settings, each with a name, a swatch colour, an image and a link.

Betty made

This is the checkbox trick with a single question. Each swatch is a label for a hidden radio button, and picking one swaps the photo, the colour name and the button, so "Shop in Navy" links straight to the navy version.

In Gmail and Outlook the reader sees the first colour, and the swatches are links to each colour's product page, so a tap still goes somewhere.

Each colour is a row in the settings: a name, a swatch, an image, alt text and a link. The button text gets the colour name added.
The Colour picker module in the Better Email editor: the FJELL MERINO ZIP in Sand with three colour swatches and a Shop in Sand button, next to settings for label, product name, body, price, button label and a list of colours, each with a name, swatch, image, alt text and link
The CSS and HTML behind the colour picker

It uses the same test checkbox and fallback as the quiz. The picker itself is one set of radio buttons, with one rule per colour:

<style>
  .photo, .info { display: none; }
  /* One block like this per colour */
  #navy:checked ~ .picker .photo-navy,
  #navy:checked ~ .picker .info-navy { display: block !important; }
  #navy:checked ~ .picker .swatch-navy { box-shadow: 0 0 0 2px #1A2420 !important; }
</style>

<input type="radio" name="colour" id="sand" checked style="display:none">
<input type="radio" name="colour" id="navy" style="display:none">

<div class="picker">
  <img class="photo photo-sand" src="sand.jpg" alt="FJELL MERINO ZIP in Sand">
  <img class="photo photo-navy" src="navy.jpg" alt="FJELL MERINO ZIP in Navy">

  <label for="sand" class="swatch swatch-sand" title="Sand"></label>
  <label for="navy" class="swatch swatch-navy" title="Navy"></label>

  <div class="info info-sand"><a href="https://example.com/merino?colour=sand">Shop in Sand</a></div>
  <div class="info info-navy"><a href="https://example.com/merino?colour=navy">Shop in Navy</a></div>
</div>

The first radio button starts checked, so a colour shows before anyone taps.

Before you send

  • The first frame works alone. Outlook 2007 to 2019 on Windows stop there, so it should show the offer or a complete picture.
  • The GIF ends on the offer. Outlook for Microsoft 365 plays a looping GIF three times and then pauses it behind a play button, so the frame it stops on should still say what the campaign offers.
  • The GIF is under about 1 MB. Large GIFs load slowly on mobile data. Ours range from 21 KB to 825 KB.
  • The alt text describes the offer. "Spin to win up to 25% off" tells a reader with images off or a screen reader what the campaign offers. "Wheel" doesn't.
  • Nothing flashes more than three times a second. Faster flashing can trigger seizures. A GIF also ignores the reduced-motion setting some readers turn on, so keep the motion short or let the GIF play once and stop.
  • The deadline is in the copy too. A live timer is an image, so it's missing when images are off. A line like "Our best prices start Friday 27 November" works in every inbox.
  • The whole image is a link, and the landing page matches the GIF. If the wheel promises up to 25% off, the page has to hand out a real prize.

Try it with your design system

Ask Betty for a wheel, a countdown or an advent calendar in your own design system. The docs cover images, GIFs and calendar files and countdown timers. See what Betty does, or book a demo and we'll show it with your brand.

Written by

Nicki Pabst Rasmussen

Co-founder and CEO, Better Email

Nicki has worked in email production since 2017, first at agencies and then through his own consultancy, where he solved template and sending-platform problems for agencies and large companies.

LinkedIn

Ready to make your emails Better?

Join enterprise teams at Fritz Hansen, Norlys, and BLS Hafnia, and ship on-brand campaigns up to 10× faster.

Personalized demo · See it in action · No commitment