Build a Product Purchase Anniversary Campaign in Eloqua
This is a recent program we built for a client, and while it is simple in theory, it proved to have a number of complexities we had to work through. As it turned out, the solution was pretty simple, so let’s talk about it!
The client wanted to send an anniversary email for specific purchases. The email, to be sent on the first, second and third anniversaries, would contain a coupon code, specific to the anniversary year.
We decided to use dynamic content for the coupon code, because we wanted to make it simple to update and add new codes in the future. Having one, localized place for this was a nice to have.
The CDO has records for every product purchase, including ones we don’t want to send emails about. So our segment needs to be checking the purchase date of only specific products.
In order to find the purchase date only for specific products, look for both criteria in the Compare Contact Object Records filter.
In this case, “MaterialNumber” is the field for product – basically a SKU. The purchase date field is called “PurchaseDate”.
Our first thought was to leverage the “Dynamically equal to Today (No Year)” filter, but this doesn’t work well, as it would be any year, and we’d need to identify which anniversary they fell under.
The best option is to use “within the last X days”.
Here’s the winning combination:
In this case, we’re basically looking for people between 1 year ago + 1 day, and + 0 days. We also tried “Within the last 365 days” and “Not within the last 364 days”, but that gave us one day too early. So shifting the number of days by one fixed that.
What happens next?
Repeat this segment for 2 years and 3 years, then build the canvas.
We decided to have three different canvases; one for each year. You could use only one, and have a 1 year wait step between each email, but we wanted to only allow the segments to dictate who got what email. Just in case someone was held up for some reason, even for a day, it would throw off the rest of their anniversary emails. You’ll also want to be sure you set the segment to refresh daily at a minimum.
Here’s how the canvas looks.
The only thing worth noting here is the use of an update rule. We’re applying an update rule to write a value of “Year 1” to the Pump Anniversary Contact Field, which we created. There are 3 rules in total; one for each year. Right after that, we’re triple checking we have a value in the Pump Anniversary field. This is just to be certain that our dynamic content will work. The wait step will wait for 6 minutes if the answer is no, until the update rule has executed. It should be immediate, but you can never be too certain!
Now, a step back to the dynamic content
Why didn’t we just use the same product and date criteria for the dynamic content? Well, we decided to use the segment and canvas to mark a contact field with Year 1, 2 and 3. This was so that we could be certain the coupon code would work even if the email was sent a day late, say for a soft bounce or something similar. So this way, the field will be marked as Year 1, until they get into the Year 2 segment.
So the dynamic content is simple now!
And that’s it! Truly not too complicated at the end of the day.