Module-by-module image design specs for every Swimply email. All emails are fully image-based — designed in Figma and exported as image slices. Subject lines and preview text are ESP/Braze fields only and do not appear in the designed image.
Entry: account_created → Exit: first_booking_completed or 21 days. 5 emails over 10 days, paced to build excitement without overwhelming. Each email maps to a stage of the guest discovery journey: Welcome → How it works → Social proof → Inspiration → Personalized picks.
account_created
first_booking_completed
Design direction: These mirror the guest browsing experience on swimply.com. Pull visual elements from the product: search UI, listing cards, filter tags, collection badges, review cards. The emails should feel like the website is reaching into the inbox.
Entry: 2nd listing view without booking (within 2 hours) → Exit: first_booking_completed or 3 days. 2 emails: E1 features the SPECIFIC listing they browsed (dynamic CC), E2 broadens to discovery. The browsed listing's photo, name, price, and rating are pulled via Connected Content into Email 1.
Design direction: Email 1 should feel like the listing page itself reached into their inbox. Use the actual listing card UI from the product (photo, badge, title, location, price, rating). Email 2 pivots to discovery. Both should feel personal and timely, not like a blast.
Entry: Guest saves/likes a listing without booking (6-hour delay) → Exit: Booking completed or 3 days. Single email. The saved listing\'s details (photo, name, city, price, rating, host name) are pulled dynamically via Braze Connected Content. The dynamic listing block uses existing Braze code — no new design work needed for that section.
Entry: BookingConfirmedToGuest (first booking only, BOOKING_COUNT = 1) → Exit: Second booking or 30 days. 4 emails + push/SMS. E1 fires mid-booking to capture peak joy. E2 fires 0-2 hours post-swim. E3 at Day 7, E4 at Day 30. The 2-arm test (10% off vs. no offer) runs across all touchpoints.
BookingConfirmedToGuest
A/B Test: Arm A = no discount (pure emotional rebook). Arm B = 10% off with code STAYWET10. Both arms get every email. Do not scale promo spend until Arm B lift vs. control is confirmed.
Summer Pass Segmentation (E2–E4): Starting in E2, the flow branches on has_summer_pass. Non-holders see a Summer Pass pitch module (the best path to becoming a repeat user). Holders see a credits-balance module pulling {{credits_balance}} from their profile, nudging them to use what they've already earned. This layer runs on top of the Arm A/B test, creating a 2×2 matrix. Goal: drive repeat rate well above the current ~20%.
has_summer_pass
{{credits_balance}}
Voice: Pure Pool Joy (T6). Fun, emoji-driven, friend energy. Carry similar themes to push/SMS but use different copy across channels. Key rule: never tell the guest how they felt. No "that was epic," "you had a great time," or "the post-pool glow." Instead, paint a picture of the NEXT pool day. Forward-looking, not backward-looking.
{% if {{custom_attribute.${has_summer_pass}}} != true %} send Email 2A {% else %} send Email 2B {% endif %}
This is a dedicated Summer Pass email for guests who don't have the pass. The entire email is about Summer Pass. The Arm A/B discount test still runs on top (Arm B gets the 10% off card at the bottom as a bonus incentive).
{% if {{custom_attribute.${has_summer_pass}}} == true %} send Email 2B {% endif %}
This is the rebook email for Summer Pass holders. Same forward-looking structure as the original E2, but with a credits nudge module instead of a Summer Pass pitch. These guests already have the pass -- the goal is to get them to use their credits and book again.
Type: One-time product launch email to all active guests. Trigger: Campaign send (segment: active guests, booked at least once OR browsed in last 90 days). This is a feature announcement, not a lifecycle drip. Design it to feel like news, not a drip email.
Voice: Exciting product news meets Swimply warmth. The guest should feel like Swimply just made their next pool day even better. Not corporate "we're pleased to announce." More like a friend saying "oh you're gonna love this."
Entry: host_application_started → Exit: first_booking_received or 30 days. The flow mirrors the listing builder (3 steps: Space → Photos/Title → Pricing/Availability → Publish). Each email maps to where the host is stuck or what comes next. 38% of approved hosts never publish. This flow fixes that.
host_application_started
first_booking_received
Design direction: These are NOT text emails. Break approved copy into visual modules: stat tiles, comparison graphics, progress indicators, photo examples. Think Swimply's playful, colorful brand applied to education. Every email should feel like the product itself is coaching the host.
Entry: first_listing_published → Exit: first_booking_received or 21 days. 5 emails dripped over 2-3 weeks to help newly-live hosts optimize their listing for their first booking. Uses the Daisy AI coaching tone from the listing builder. Each email focuses on ONE optimization lever.
first_listing_published
Voice: Daisy AI coaching style. Helpful, data-backed, encouraging. "Done beats perfect." "Photos are everything." Never lecture. Always show the payoff.
Type: One-time product launch email to all active hosts. Trigger: Campaign send (segment: hosts with at least 1 completed booking). This announces the Monitor add-on for hosts. Monitors manage the booking on behalf of the host: check guests in, verify guest count, ensure guests leave on time. $50/booking, deducted from earnings after completion.
Voice: Host coaching voice. The monitor solves the #1 host objection: "I don't want to be there for every booking." This is about freedom, not safety. The host gets to earn without the hassle.
Type: Seasonal campaign blast. Two versions: Guest + Host. Send date: Early spring (pool season opener). Current issues: Hero body is too text-heavy. Summer Pass banner copy is too small to read. Key price points ($67, $149 crossed out) need to be big bold visual moments. The middle guest version from the original design needs a full rework.
Trigger: New listing goes live within guest's area. Email + Push. Copy is fine. Design needs a full refresh. The listing data (title, city, distance, photo) is dynamic via Braze event properties.
The current live email has the following issues that the redesign must fix:
Reference the current live email in Braze to see exactly what this looks like. The redesign should feel like a completely different email.
All the live docs, Figma pages, and reference materials for Swimply email design.