DEV Community

Mike Sedzielewski
Mike Sedzielewski

Posted on • Originally published at Medium on

Maximizing Customer Loyalty with CDP-Powered Incentives

It’s the twenties and the market circumstances made brands revisit loyalty programs. Privacy regulations, post-pandemic habits, and chain supply breakdowns caused a shockwave of changes to how digital teams design CLV schemes.

It might be hard to surf this wave without spending money on software. Connecting zero-party data, new customer experiences and touchpoints, and the whole ecommerce backend with the reward campaigns requires tasking a number of coders to glue it all together.

There’s a way to make the Gantt chart for your customer lifetime value projects shorter, though. It’s promo codes. Although they sound easy, they can become a pain when your scale grows. Fortunately, an integration of CDP and a Promotion Engine lets you embrace promo codes and forge a loyalty strategy without taxing your dev team too much.

Beyond the public codes — promo code types and their purpose

One of the Big 4 consultancy firms was tasked with finding out why “earn and burn” loyalty programs fail. They surveyed customers and came up with three reasons:

  • It took too long to earn points or rewards.
  • Rewards were irrelevant.
  • Too many notifications caused confusion.

How to address it? Let’s engage customers with something easy to understand, easy to use, and, finally, evoking the feeling of being rewarded. Any ROI-guaranteed examples? No sir, you need to experiment your way to find the reward-customer-fit.

Now, what’s the most straightforward reward to start building loyalty? A promo code — easy to understand and easy to use. Let’s see how we can make it more relevant with customer preferences stored in your CDP.

Iteration #1 — public promo codes

We have a blank checkout view. Let’s display “BLCKFRDY” on top of your your web/mobile app. It’s the simplest site-wide promo code, but is there any way to get it more personal? A pipeline between CDP and a Promotion Engine might help you pave the way.

The setup gives you a way to modify promo code experience depending on customer preferences. A product manager now gets a palette with three types of conditions:

  • Soft — showing or hiding promotions depending on one (or more) customer preferences.
  • Hard — making promotions exclusive only to a selected segments.
  • Dynamic — making promotions better (or less attractive) for some customers.

Let’s see some real-world variants we’ve seen in recent years.

With the CDP x Promotion Engine pipeline in place, building promotions take only several clicks to roll-out. Changing eligibility conditions or rolling them back is also a matter of selecting different attributes. This makes the public promo codes a scalable marketing tool — you can introduce new campaigns in days or even hours.

Iteration #2 — bulk codes

But sometimes public codes are not enough. Perhaps you want to be more selective when it comes to promotion eligibility (e.g., one-off “sorry” coupons handled by the customer support team). Or, you want to track marketing channels with higher granularity (e.g. exclusive anniversary discounts offered to “premium” members only via the app). Or, spinning a referral program by equipping your customers with a code that works as a discount for new customers and servers as a referral measure at the same time.

All of these examples are proven tools for enticing customer loyalty so you might want to have them under your belt. Bulk promo codes give you that and more.

How does a CDP & Promotion Engine integration make it easier for digital teams? First, generating up to millions of codes and making them available to a customer profile is out-of-the-box. The only thing remaining is to figure out how to display the code to the customer (see the next section👇)

Second, while implementing code generation is a fun challenge to a seasoned developer, maintaining it is not. Devs don’t like to be interrupted with requests like: “can you disable “HAPPY10” for one day please?”. This is where the Promotion Engine shines with hundreds LUX.

The admin dashboard gives the control over the bulk codes back to the revenue/marketing/customer success teams. They can search, disable, track, monitor, redeem, and roll back codes on their own, with the user interface that favors revenue generation and security.

The best part? It’s easy to mix public and bulk codes to test original promo codes ideas, see how they entice loyalty — again all without distracting the development team.

🥡 Takeaways :

  • Instead of rolling out a full-blown point program, start with promo codes (public and bulk) to see how they impact customer loyalty.
  • To create, manage, and track promo codes, build a promotion engine.
  • Use customer attributes from CDP to define promo eligibility rules and see how they drive revenue.

Beyond the homepage — funnel-aware promotions

Ease of creating and managing promo codes isn’t the only benefit coming with a CDP-fed Promotion Engine. Even a generous incentive won’t work if it doesn’t end up in the right place. Imagine an endpoint which returns all valid promo codes for the logged-in user. What can you do with it?

You can start with personalizing discounts on the side-wide banners. Let’s step up the game by displaying personal incentives further in the funnel — product pages, category pages, checkout, popups are also great places to nudge customers. For example:

  • Show a product-page discount only to customers who went dormant.
  • Reward them with a one-off code for leaving a review of a product.
  • Give a one-off promo code to the first-time customers, right after the purchase.
  • Display a time-limited promotion next to the cart only to the geofenced customers.
  • Or a classic one — show a last-resort cart abandonment discount.

But the true power comes when you feed your promotion system with the current cart structure. Then the branches of the promotional rules tree grow tenfold. With this in place, your promotional mix gets new knobs that allow you to control how much margin you can spend, or should I say invest, in your campaigns.

While most ecommerce allow you to define a minimum amount to make a promotion work, a flexible Promotion Engine can go way beyond that. The endpoint returning all valid codes for the logged-in user can now return product- and volume-specific discounts such as:

  • Buy product X to get Y with 50% off.
  • Get 10% off with $100 spend, make it 15% with $200.
  • Discount the cheapest product in the cart.
  • If you buy 10 SKUs, give one free.
  • Add a free gift, when buying something from the X category.

Finally, you can interweave customer segments with OR and AND like this one:

The code ARABICA-LVRS is displayed only on the “arabica coffee” category page, works only for selected SKUS and gives $10 off to new customers, but $5 to others.

Want a real promo scenario?

Carsome uses a mix of promotional rules to drive car sales based on customer activity and the stock information. The longer a car stays in the parking lot the worse it’s for the business. Carsome uses this information together with a tight CDP integration. The system watches out for user behaviour (car browsed, essential clicks, cart abandonment events), then these insights are put into a formula that defines what discount should be applied for a given shopping context.

This endpoint might work well for other promotional use cases, for example, reminders. Supposing your first-time customer received a discount for their next order via email (we’ll get to that later), you can show the same promo code on a flash banner once the user logs in to your app again.

You can take it to the next level by creating a customer wallet — a list of all active incentives the customer is entitled to. Showing redeemed offers is also worth considering as, with a bit of creativity, you can use it to paint a positive picture of your brand.

If you have plenty of ideas in your head by now, hold on, because we haven’t covered the best part yet — messaging.

🥡 Takeaways :

  • Showing promotions where the user is shopping increases the chances for using them.
  • Fine-grained promotional API helps you tie promotions to every funnel stage.
  • Adding the cart context to your promotion rules, enables you to roll out margin-sensitive incentives.
  • Promotion Engine that understands customer attributes and cart structure gives you utmost control over who gets a discount, when and what kind.

Beyond the website — email, SMS, and push notifications

For offline customers, promo codes are deadly effective call-to-actions. A CDP-powered Promotion Engine becomes a precision rifle that helps you target customers with personalized offers. It’s powerful and simple — the mechanism follows the “if-then” logic supplied with operators.

Technically, if a CDP tracks an event and notifies a Promotion Engine, it automatically creates a promo code according to the predefined conditions, then, if needed, notifies other systems about the offer. A few examples:

  • If a customer purchased an order, send them a re-engagement offer with email after 30 days.
  • If a customer clicked on a specific car AND it occupied the parking space for more than 6 months, double the discount and inform the customer with a push notification.
  • If a customer has a birthday today, show a 50% promo code for products up to $50 in the app, for the next 7 days.
  • If a customer’s total order amount exceeds $1000 OR the number of orders is greater than 10 AND she hasn’t redeemed BLACKFRIDAY code, send a webhook to Braze with a unique promo code.

These examples show how real-time events, common customer attributes, aggregated data, and interaction with previous offers managed by a Promotion Engine, can be used to trigger an incentive/reward workflow.

A caveat here — connecting promotions with messages on scale requires planning. Email/SMS deliverability has policies you do need to take into account. For example, your integration should be able to throttle and queue data to be sure every message ends up delivered, with all the {{placeholders}} replaced with the right values.

What you can do with a CDP + Promotion Engine + CRM tools + checkout system tightly integrated thanks to the API-first capabilities?

Pomelo, for one, used this approach to roll out a massive customer acquisition campaign together with a referral program. They built it in weeks and the project has been rewarded by Braze. We prepared a step-by-step guide for glueing four API-first tools to achieve a similar effect.

The list of use cases goes way beyond that. With tools like Braze’s Connected Content, you can wire personalized promotions to your messages by literally editing a message template.

Here’s a list of Braze x Voucherify Liquid examples presenting some promotional scenarios.

Building a wallet full of personalised incentives is one thing, but to move the needle with incentives you should make them easy-to-apply — we’ll zoom in on it now.

🥡 Takeaways :

  • Promotions can be effective when wired to your messaging platform.
  • Make sure to check how to work with a messaging queue in a scalable way.
  • Modern engagement platforms have nifty tools for incorporating data into messages without complex development work, check them out before you open your IDE.

Beyond the manual promo codes — promotions UX

Let’s sum up what we’ve achieved so far by connecting the CDP and the Promotion Engine.

We have generated coupons (both public and bulk), used customer attributes and cart structure to define their eligibility, and injected them in places and messages across the customer journey. A successful promo code redemption is the single most essential event in the whole process. Let’s see how we can make it easier for the customer.

Here’s a list of how you can shape your UI to put promo codes in motion:

  • Clearly state the timeframe of the promotion.
  • Automatically apply publicly available codes.
  • Create a sales compilation page (Remember wallet? How about the one for not-logged users?)
  • Enable filtering in your sales category.
  • Be clear about the restrictions of promotion upfront.
  • Leave the old price tag on.
  • Include coupon code fields as a core part of both the shopping cart and checkout pages.
  • For minimum-spend promotions, do the math for users and help them reach the spending target.
  • Display an error message for invalid coupon codes.
  • And many more.

Including these ideas into your UI already takes time. But if you sell through web and mobile, the development work doubles:

  • Listing used promo codes for specific customers
  • Showing discounts eligible to VIP customers only
  • Calculating total discount every time a product is added/removed from the cart

This is where a fine-grained REST API comes into play. SaaS Promotion Engines have endpoints for these use cases. You just model the backend once and connect the touchpoints.

Bonus : need ideas for the UI? Here’s a Figma Kit with the most common promotion and coupon components.

You can improve promo code experience even more. Remember our product-specific discount? You might be wondering why use codes for a “buy one, get one free” use case at all. And you’re right — with an advanced Promotion Engine, you can drop codes altogether, just show the promotion banner and make the discount auto-applied every time a cart is recalculated or the customer’s attributes are changed.

While auto-applied cart-level promotions working with customer attributes give leeway for next-level bundling, you need to know when to double down on a promotion and when to stop it. Promotion Engines have a few handy tools for that.

🥡 Takeaways :

  • Promotions are only as effective as their UX.
  • Building top promotion experience requires gazillion lines of front-end code, Promotion Engines make it easier serving predictable promotion backend.
  • Take a look at Coupon and Promotion Figma Kit to get inspiration for your frontend.
  • Why not to get rid of promo codes, when you can calculate the discount based on the shopping context — see if your Promotion Engine supports it.

(Not) beyond the budget — fraud and margin protection

It looks like we have everything ready to go after redemptions, higher sales, reengagement, you name it. We know how to counteract the enemy number one of promotional campaigns — lack of engagement. But nemesis number two is looming on the horizon — exceeding your margins and, simply, fraud.

Your Promotion Engine controls the discount eligibility based on the cart information and customer behaviour so you’re already in a better position to fight back. But there’s still some work to be done.

From the plethora of tools in your marketing toolbelt, promo codes are the family of “sharp knives” — ready for precise work but they carry the risk of hurting yourself. The biggest risks are losing money with too generous discounts and customers trying to abuse your offers.

Example? Let’s assume your offer is $10 off for the “arabica coffee” category. When the margin for some SKUs is less than the discount, you start losing money. Worse, imagine customers buy the whole stock of these particular SKUs.

How does a Promotion Engine protect you from the loss? There are three major features:

  • Dynamic discounts — the offer is modified based on a formula. In the case of Voucherify, it can include parameters such as an order amount, cheapest product price, or any custom attribute like margin.

  • You can soften the limits for specific segments e.g., your “loyal” tier, if you integrated CDP tightly with the rule engine.
  • Global safety caps — again, Voucherify can impose:
  • Redemption limits : per customer, per day, per customer per day/month, per given campaign, etc.
  • Budget limits : total discounted amount, total orders’ value, etc.
  • Promotion stacking — some promotions should be stacked in the specific order, some shouldn’t be stacked at all. A flexible Promotion Engine can work with such promotion dependencies.

🥡 Takeaways:

  • To experiment with codes with lesser fraud and promo misuse, you need to set up a safety net.
  • A Promotion Engine has dedicated features like parameterized discounts, budget limits, and stacking to prevent promotion loss.

Beyond the POC phase — when push comes to shove

Digital promotions, especially promo codes, look very tempting to be adapted. They have a hidden cost, though. It’s complexity and compliance. When designing your Promotion Engine, you should look far ahead of the POC phase. While the path onwards is different for every digital team, there are some common obstacles:

  • Marketer interface  — the marketing team wants to change promotion conditions and touchpoints every day. No wonder, experimenting with the offer is what they get paid for. Enabling, disabling, searching, counting redemptions — they already call for some UI. Add approvals to the mix and you end up with a full-blown admin panel.
  • Internationalisation  — if your pilot is successful, the next step is going abroad. Different currencies, labels, discount policies, or event product catalogs may break your promotion strategy in lots of tiny places.
  • Security & fraud  — once in a while you can hear a story about the promo code that unlocked a once in a lifetime deal for way too many customers. Sometimes the loss exceeds a decade-long licence for a Promotion Engine. But you can expect more risk out there. Fraud and malicious actors in your team do happen too (not to mention data leaks). When running dozens or hundreds of promo code campaigns, investing in a coherent management suite with an audit log helps you sleep better.
  • Privacy  — promo codes earned a special place in the SPAM prevention algorithms not without a reason. Even without GDPR implications, you want to be complicit with customers’ preferences. A good CDP & Promo Engine tandem respects people’s contact choice from the outset.
  • Scale  — a well-crafted promo code can bring huge traffic to your store. We’ve seen this happen when one of our users ran a TV ad. Wise men put in manuscripts that the code optimization shouldn’t be your default. But when your checkout crashes during the peak, you just killed the viral campaign — the holy grail of every consumer-facing business.
  • Integration  — finally, the code responsible for connecting promotions to other ecommerce tools, data sources, and customer touchpoints might be hard to maintain. Flexible and predictable API with good documentation will help you save time needed for building and testing data integrity and workflows.

🥡 Takeaways:

  • Non-functional requirements impact promotions too. Plan for them upfront, to pivot faster in the future 🚀

Beyond the promo codes — how about a full-blown loyalty program?

My friend plays in the symphonic orchestra. Apart from the full-size repertoire, they often play ensembles. Although I don’t plan to do so, I end up with a few tickets throughout the year. I love the experience of a small squad playing in a quaint place.

When you look at your customer loyalty strategy, I believe the same rules apply. People will often appreciate a truly personalized deal more than a virtual reward from an earn-and-burn loyalty program. But just like you can’t ignore the sound of philharmonic, the CDP-powered loyalty scheme is becoming a must for DTC brands.

How a CDP x Promotion Engine can help you build a loyalty scheme? By:

  • Connecting promotions and revenue-management initiatives to loyalty mechanisms.
  • Introducing points-plus-cash options to facilitate access to big-ticket rewards.
  • Granting non-monetary offerings such as: exclusive events, early access, or unique discoveries.
  • Paid membership where you can offer premium rewards that are too expensive to offer more broadly. Or, keep engagement with everyday discounts.
  • Cashback programs.
  • Give customers more options to redeem points, such as donating their points to a charity.

These use cases are even more complex software-wise. The good news is that when you battle test promo codes with CDP and a Promotion Engine, you have a solid setup for testing new incentives & reward programs in the next iterations.

Originally published at

Top comments (0)