An often touted benefit of AI is the ability to personalize every customer’s experience with your brand. Today that is easier said than done. But you’re going to learn how to do it right now.

Anyone can write a blog post proclaiming that AI will bring in a new age of personalized commerce. Here you’ll get the value. Bring that future into the now. Do things today that other businesses won’t be doing for another 12-18 months. That’s a competitive advantage.

For most DTC brands implementing this is difficult because the required data is siloed in different systems. They don’t talk, data is un-connected, sometimes it’s even anonymized. The features don’t yet exist natively in the email marketing platforms.

You’ve got purchase history in Shopify, open rates and click tracking in Klaviyo, customer support conversations in Gorgias, website traffic is in Google Analytics, and brand voice guidelines in a word doc.

How do you bring this together into a uniquely crafted message for each and every one of the 1000s of people on your email list?

Let’s get into the nuts and bolts.

Working backwards, email marketing services like Sendlane or Klaviyo don’t currently have integrated AIs to do this personalization. They do usually provide custom attributes and those can be referenced in the email template.  This is the pathway we’ll use to inject personalized AI generated copy into each email (or could be SMS).

The bulk of the work is going to happen in Google Sheets.

First, let’s get an export of subscribers from your email system. Download a CVS export to work with. And let's also grab an export of recent e-commerce orders. So I can show you how to mix these two data sets.

Import both of these datasets as sheets into a new Google Sheet. Then create a new blank sheet where we’ll combine them.

Copy the emails column from the email platform export and put that into the blank sheet.  The next column, First Name I’ll use a formula to look up the value.

=XLOOKUP($A2, ‘email_export!A:A’, ‘email_export!B:B’,””) 

Next tie in order information, add a new column for products ordered

=XLOOKUP($A2, ‘order_export!A:A’, ‘order_export!Q:Q’,””)   [NOTE: replace the column indexes to match your data]

You can continue to add columns of reference data that you feel will be worth including in the message.

Finally we get to the AI stuff..

Add a column called “prompt” we’re going to construct the GPT prompt with all the required information to write a custom message:

="You are a genius copywriter tasked with writing an email intro. Here’s the brand voice and style information to use in crafting the perfect email body paragraph: 

<< YOUR BRAND VOICE AND PRODUCT INFO >>

Our current offer is << YOUR OFFER >>

The email will be sent to “ & B1 &” who’s last purchase was a “&C1&”. 

The email intro paragraph:"

Adjust that prompt as required, to reference the data you have.

Now we need to send all these unique prompts over to an AI model to get the generated text.

I’m doing that with a Sheets extension:  GPT Workspace: https://workspace.google.com/u/0/marketplace/app/gpt_for_docs_sheets_slides/451400884190 (no affiliation)

It adds a GPT function to the sheet that can be used.

Add one final column to the sheet, once you have a GPT extension installed.  

=GPT(D1)  [reference your prompt column]

You should get auto-generated text in each cell, personalized for each email address.

HORRAY!  Almost done!

I like to give that column a unique name like “Feb2024PersonalizedOffer’ so that when it imports into the email platform it’s a unique new attribute.

Ok.  Review the generated text. Fine-tune the prompts if required to just generate the text you need. Make sure it’s not generating placeholder text like ‘[Your Brand]’.

Now, export the sheet to a csv - I’d suggest hiding all columns other than email and the generated text to avoid any other unintentional overwriting. Import that data into your email platform.

The platform specific instructions for this are beyond what’s reasonable to include here.  Klaviyo instructions can be found here: https://help.klaviyo.com/hc/en-us/articles/1260806293150  Other platforms may require the help of customer service.

(I never said it was easy)

But now we’re at the final step

Create the email like you normally would, reference the new customer attribute to inject the personalized text dynamically into the email. And it’s ready to test and send out!

And there you go, custom uniquely written emails for each person. 

Want to do something more? Ask GPT to reference interesting things about the city the person lives in (eg: local sports team), or use other Sheets extensions to include the current weather forecast. The more you can pull in the more personal and tailored the message will be.

If this is something you’d like implemented for your business, and don’t want to mess with it yourself - let’s connect - send me a DM!

Keep Reading