Wanderlust Travel Co.
Where Next?

Back to Home

A luxury-editorial World Tourism Day member privilege campaign architected in Salesforce Marketing Cloud (SFMC). Featuring relational catalog lookups, real-time date countdown math, tier-based mathematical discount engines, and a responsive MJML built email.

HTML Email Advanced AMPscript Relational Lookups MJML Responsive Framework Dynamic Discount Math GIF Animation

Email Preview

Campaign Architecture

Wanderlust Travel Co. honors World Tourism Day (September 27) by delivering highly personalized, editorial travel recommendations to private club members.

Instead of relying on generic static promotional blasts, this lifecycle campaign uses relational data lookups based on the member's past trip style (Beach, Adventure, City, Culture, Foodie, Wildlife) to curate their next luxury escape.

The email architecture incorporates a real-time countdown engine using DateDiff() to drive urgency toward the September 27 deadline, programmatic loyalty discount math (calculating custom pricing by tier), dynamic asset orchestration, and fail-safe fallback logic.

Data & Render Pipeline

Members & Sendable Audience DE
       │
       ▼
SQL Query Activity (Segmentation by Active Tier & Activity)
       │
       ▼
Sendable Campaign Data Extension
       │
       ├─► DateDiff(Now(), PromoDeadline) ──► Real-Time Urgency Badge & Countdown
       ├─► LoyaltyTier Logic ───────────────► Dynamic Discount Math & Subject Lines
       ├─► LookupRows(Destinations, Style) ─► Relational Package Query & Fallbacks
       └─► Style Matrix Index ──────────────► Dynamic Hero & Staggered Editorial Imagery
       │
       ▼
Compiled MJML Responsive Engine (High-End Editorial Aman Layout)
       │
       ▼
Personalized Member Inbox Delivery

Audience preparation is orchestrated via SQL queries in Automation Studio, while full content curation, image mapping, and price calculations run dynamically at send time using AMPscript.

Relational Data Model

Wanderlust Club

SubscriberKey (PK)
EmailAddress
FirstName
HomeCity
LoyaltyTier
PointsBalance
TravelStyle
LastDestination
LastTripDate

Destinations (Catalog)

DealID (PK)
TravelStyle
Destination
Country
Region
Nights
FromPrice
Tagline
BookURL
HeroBgImage

Editorial_Assets

StyleID (PK)
TravelStyle
HeroBgImage
StaggeredImg1
StaggeredImg2
DiscoverCardImg
Wanderlust Club (Send DE)
    │
    │ TravelStyle (Match Category)
    ▼
Destinations (LookupRows)
    │
    │ TravelStyle Fallback (LookupOrderedRows 'All' DESC)
    ▼
Dynamic Editorial Image Matrix & Calculations

AMPscript: Relational Lookups & Date Math

Queries dynamic destination rows based on individual preference, manages multiple fallback tiers, and evaluates the campaign deadline in real-time.

/* 1. Real-Time Expiry Math (Sept 27 - World Tourism Day) */
SET @today = Now()
SET @promoEndDate = StringToDate("2026-09-27")
SET @daysRemaining = DateDiff(@today, @promoEndDate, "D")

IF @daysRemaining > 2 THEN
  SET @urgencyBadge = Concat('• ', @daysRemaining, " Days Remaining <br> Valid Through Sept 27")
ELSEIF @daysRemaining >= 0 THEN
  SET @urgencyBadge = "• Final Call <br><span style = 'color:#c59b27; font-weight:700;'>Ends September 27</span>"
ELSE
  SET @urgencyBadge = ''
ENDIF

/* 2. Relational Catalog Lookup with Ordered Fallback */
SET @destinationRows = LookupRows('Destinations', 'TravelStyle', @travelStyle)
IF RowCount(@destinationRows) > 0 THEN
  SET @destRow = Row(@destinationRows, 1)
  SET @destination = Field(@destRow, 'Destination')
  SET @country = Field(@destRow, 'Country')
  SET @region = Field(@destRow, 'Region')
  SET @nights = Field(@destRow, 'Nights')
  SET @fromPrice = Field(@destRow, 'FromPrice')
  SET @tagline = Field(@destRow, 'Tagline')
  SET @bookURL = Field(@destRow, 'BookURL')
ELSE
  SET @destinationRows = LookupOrderedRows('Destinations', 1, 'FromPrice DESC', 'TravelStyle', 'All')
  SET @destRow = Row(@destinationRows, 1)
  SET @destination = Field(@destRow, 'Destination')
  SET @country = Field(@destRow, 'Country')
  SET @region = Field(@destRow, 'Region')
  SET @nights = Field(@destRow, 'Nights')
  SET @fromPrice = Field(@destRow, 'FromPrice')
  SET @tagline = Field(@destRow, 'Tagline')
  SET @bookURL = Field(@destRow, 'BookURL')
ENDIF

Mathematical Discount & Tier Pricing Engine

Discounts are determined programmatically by tier (Platinum: 25%, Gold: 20%, Silver: 15%, Base: 10%). The discount price is calculated on the fly using AMPscript math operators rather than hardcoded copy.

/* Tier Discount Rules */
IF @loyaltyTier == "Platinum" THEN
  SET @discountPercent = 25
  SET @subjectline = Concat(@firstName, ", your Platinum privilege: 25% sitewide through Sept 27")
ELSEIF @loyaltyTier == "Gold" THEN
  SET @discountPercent = 20
  SET @subjectline = Concat("A 20% World Tourism Day privilege for our Gold members")
ELSEIF @loyaltyTier == "Silver" THEN
  SET @discountPercent = 15
  SET @subjectline = Concat(@firstName, ", unlock 15% off your next escape")
ELSE
  SET @discountPercent = 10
  SET @subjectline = "Your World Tourism Day invitation: 10% off all itineraries"
ENDIF

/* Dynamic Mathematical Price Calculation */
SET @formattedFromPrice = FormatNumber(@fromPrice, "C0", 'en-US')
SET @calcDiscountPrice = Multiply(@fromPrice, Subtract(1, Divide(@discountPercent, 100)))
SET @formattedDiscountPrice = FormatNumber(@calcDiscountPrice, "C0", 'en-US')

Key Engineering Highlights

Relational Lookups & Fallbacks Connects Send DE to catalog using LookupRows and LookupOrderedRows.
Dynamic Expiry Math Computes remaining countdown days via DateDiff and triggers sub-48hr warning tags.
Programmatic Price Engine Executes mathematical discounts using Multiply, Subtract, and Divide.
"Then vs Next" Narrative Bridge Replaces repetitive destination mentions with an editorial memory-to-future progression.
Strict Fallback Logic Safe handling for empty names, unselected travel styles, and non-numeric balances.

credits

Campaign Implementation AMPScript Personalization and Testing using AMPscript Academy
Assets Gifs created on Canva

Source Code

The complete AMPscript, SQL queries, MJML template, and compiled HTML files are available on GitHub.


View Project on GitHub