Teaching old dogs new tricks…giveaway edition.

Tony Zupancic
Fairmont Creative
Published in
5 min readFeb 26, 2019

Using giveaways to engage with your audience is not a new marketing strategy. Almost every brand with a social media account has asked it’s users to — like a post, tag a friend, or follow the brand — for a chance to win a product or discount. Giveaways are not only great for brand awareness and engagement, but they are a great way to get new email subscribers.

When a giveaway is put together with email lead generation in mind, there’s typically a landing page for subscribers to enter their email address and provide their consent to receive marketing emails (usually via a checkbox). If you do a quick google search, there are many options available to create quick and easy giveaway landing pages — some even with direct Email Service Provider (ESP) integrations that usually come at higher price points.

Brands with smaller digital media budgets or teams who are simply unaware of these options tend resort to options such as a basic google form to collect email addresses for submission. This leaves them manually exporting a file of entrants, selecting a winner, sorting email subscriber opt-ins, and importing them into their ESP of choice. This is a very time consuming undertaking. It also means that users who subscribed to the email program during this process would not be passed into the welcome series until after the giveaway has ended (4–7 days typically) and will likely miss out on some offers or newsletter sends.

My current position is mostly focusing on email automation within Salesforce Marketing Cloud (SFMC). However, I like looking for opportunities to grow my skills and make ideas experiences more enjoyable. I also look for processes that can be optimized by automating tasks within in other areas that still feed into SFMC (such as email subscribers who enter giveaways). With this in mind I took to the #emailgeeks slack community to figure out some missing pieces on how to put this together.

Public Giveaway Page Setup

The initial landing page, which is built within a SFMC cloud page using bootstrap web framework, is structured to be an over-simplified sub-page of our current website.

The content of the landing page — initially — was hard coded text, styled by CSS; while the product image, name, and links used AmpScript (SFMC programmatic scripting language) to dynamically populate them from our product catalog.

By using AmpScript lookups for the product assets, the giveaway organizer has the ability to control the product details by entering a six digit sku number that is assigned as a variable within the HTML of landing page.

Subscriber Flow

After the giveaway entry form is submitted, there are a few variations of success/denied pages possible — entry completed, already entered, giveaway not active — based on if the entrant has already entered or if the submission date is outside of the giveaway dates. In the event of a successful entry, the email address and opt-in choice are passed onto a form handler page where the RequestParameter AmpScript function writes the values to a SFMC data extension (using another AmpScript function called upsertData).

Since entrants can only enter once per giveaway, but are able to enter different giveaways, they are checked against the giveaway master data extension to ensure they have not already entered that giveaway.

After they are recorded in the giveaway data extension, they are automatically checked to make sure they do not already exist on our mailing list— they are then entered into our welcome journey and added to our subscriber list.

Having a branded giveaway page that automatically moves new subscribers down the funnel is great; but it’s not exactly scale-able or manageable. With this set up (and — from what I can tell — other landing page options available) each and every giveaway would need to have a new landing page created.

So…How do we scale?

First, we start off by giving every giveaway that’s created a unique identifier which can be appended to the landing page URL as a query parameter (baseurl.com/?id=giveawayID).

Next we include the RequestParameter function, on the main landing page within an AmpScript block (used in the same way as above; to capture the parameter value as a variable).The difference, is that the identifier pulled from the parameter can be used as a key to perform a series of lookup functions that gather all of the needed content from a data extension to populate the giveaway landing page rather than capturing and writing data to an extension.

Lastly, the different HTML elements on the main landing page (image sources, text content, links, etc.) are set as AmpScript variables populated by the various lookups in the AmpScript block created above. This setup eliminates the need to create multiple landing pages for each giveaway.

Once the public facing giveaway page is created to run off of dynamic content and we don’t need to create a landing page for every giveaway; the content needs to make its way into a data extension so it can be looked up and populated on the landing page.

Giveaway Central

Using the same technique as the main landing page (web form and RequestParameter function), an additional landing page form can be created to collect the unique identifier, content, product sku numbers, and a start and end date. This page is 100% customized to fit the giveaway entry form needs.

After the main functionality was set in place, A few additions were made along the way…

Since all of the giveaway engagement data is stored in a data extension, there’s a need for an easy way to see the number of new subscribers who entered the giveaway. To remedy this, a section is added to the content admin page that populates; total entries,total email opt-ins, and total new subscribers (put together with ampscript and a SQL daily automation).

The final step in the giveaway process is selecting the winner. I’ve seen this done many times using the “close your eyes and scroll” method. To avoid that and the need for the giveaway organizer to go into the data extension to pick a winner (or me export a file for them), I built a random email address selector in a few steps; gather all rows associated with the referenced giveaway, count those rows and set the number to a max_number variable, select a random number between 1 and the max_number, and finally select the email address of that random row.

Building out this giveaway system has not only saved a great deal of time in setting up and running giveaways, but it has also provided an efficient source of additional leads who have shown high engagement and conversions.

In addition, it was a lot of fun building this out. These types of projects are great to start to looking at SFMC cloud pages differently and get the wheels spinning on what else can be done with them!

--

--