Portfolio rebuild / 2026 rebuild
Member care, made personal
An anonymized rebuild of earlier membership-email patterns, using fictional Northline branding and sample member data to demonstrate AMPscript personalization.
Explore the build
One email. Three member experiences.
Select a fictional member to compare personalized content and fallbacks. These are pre-rendered sample states; AMPscript is not running in this browser. Both canvas widths fit the space available on your screen.
Alex · multiple services · Desktop preview
Read the personalization logic
%%[
/* Fictional portfolio rebuild. Review and validate in SFMC before reuse.
Sample attributes: first_name, vehicle_model, location_name,
service_recommendations (pipe-delimited text). No client identifiers. */
VAR @firstName, @greeting, @vehicle, @location, @services
VAR @rows, @rowCount, @i, @service, @printed
SET @firstName = Trim(AttributeValue("first_name"))
SET @vehicle = Trim(AttributeValue("vehicle_model"))
SET @location = Trim(AttributeValue("location_name"))
SET @services = Trim(AttributeValue("service_recommendations"))
IF Empty(@firstName) THEN
SET @greeting = "Hello,"
ELSE
SET @firstName = ProperCase(@firstName)
SET @firstName = Replace(@firstName, "&", "&")
SET @firstName = Replace(@firstName, "<", "<")
SET @firstName = Replace(@firstName, ">", ">")
SET @greeting = Concat("Hi ", @firstName, ",")
ENDIF
IF Empty(@vehicle) THEN SET @vehicle = "vehicle" ENDIF
IF Empty(@location) THEN SET @location = "your local Northline center" ENDIF
SET @vehicle = Replace(@vehicle, "&", "&")
SET @vehicle = Replace(@vehicle, "<", "<")
SET @vehicle = Replace(@vehicle, ">", ">")
SET @location = Replace(@location, "&", "&")
SET @location = Replace(@location, "<", "<")
SET @location = Replace(@location, ">", ">")
SET @printed = 0
]%%
%%[ IF NOT Empty(@services) THEN
SET @rows = BuildRowsetFromString(@services, "|")
SET @rowCount = RowCount(@rows)
FOR @i = 1 TO @rowCount DO
SET @service = Trim(Field(Row(@rows, @i), 1))
IF NOT Empty(@service) THEN
SET @service = Replace(@service, "&", "&")
SET @service = Replace(@service, "<", "<")
SET @service = Replace(@service, ">", ">")
SET @printed = Add(@printed, 1)
]%%
<li style="margin:0 0 10px;">%%=v(@service)=%%</li>
%%[ ENDIF NEXT @i ENDIF
IF @printed == 0 THEN ]%%
<li style="margin:0 0 10px;">No recommended services on file. We’re here when you need us.</li>
%%[ ENDIF ]%%The project
The email adapts to the information available for each member. A missing name receives a neutral greeting, a missing vehicle or location receives useful fallback copy, and a pipe-delimited service field becomes a readable recommendation list. Three static sample states make those decisions visible without connecting to Salesforce.
My contribution
- Rebuilt the email with original fictional branding, copy, and a locally hosted illustration.
- Prepared AMPscript for subscriber attributes, normalized greetings, and missing-data fallbacks.
- Used BuildRowsetFromString, RowCount, Row, Field, and a loop to handle multiple services while skipping empty items.
- Encoded attribute-derived text before HTML output and prepared multiple-service, single-service, and missing-data samples.
- Built a sandboxed browser preview and downloadable AMPscript + HTML source.