Loyalty programs are a cornerstone of customer retention for online retailers. They encourage repeat business by rewarding customers for their continued patronage. While there are numerous plugins available for this purpose, learning how to set up a loyalty program in WooCommerce without using a plugin gives you more control and often ensures better integration with your specific needs. This guide will walk you through the process of establishing such a program, tailored specifically to WooCommerce.
Why Opt for a Custom Loyalty Program?
Opting to set up a loyalty program in WooCommerce without using a plugin can help you avoid extra costs and bloat from third-party solutions. It also allows you to tailor the program directly to the unique dynamics of your customer base and business model. This can lead to a more personalized customer experience and better overall engagement.
Step-by-Step Guide to Implementing Your WooCommerce Loyalty Program
Step 1: Plan Your Loyalty Rewards System
First, decide on the structure of your loyalty program. Will customers earn points based on dollars spent, number of orders, or specific products purchased? For example, 1 point for every $10 spent is a simple and effective system. Consider offering bonus points for high-margin items or first-time purchases.
Step 2: Add Functions to Track Points
You’ll need to add functions to your theme’s functions.php file to track customer points. This involves writing functions that update user meta with points whenever purchases are made.
/*
* Snippet: How to Set Up a Loyalty Program in WooCommerce Without Using a Plugin – 2026
* Author: John Cook
* URL: https://wcsuccessacademy.com/?p=1104
* Tested with WooCommerce 10.7.0
* "Track points"
*/
function wcsuccess_add_loyalty_points($order_id) {
$order = wc_get_order($order_id);
$user_id = $order->get_user_id();
$order_total = $order->get_total();
$points_earned = floor($order_total / 10); // 1 point for every $10 spent
if ($user_id) {
$current_points = (int) get_user_meta($user_id, 'wcsuccess_loyalty_points', true);
$new_points = $current_points + $points_earned;
update_user_meta($user_id, 'wcsuccess_loyalty_points', $new_points);
}
}
add_action('woocommerce_order_status_completed', 'wcsuccess_add_loyalty_points');Step 3: Display Loyalty Points on User Accounts
Customers will want to see their points balance. This can be displayed on the WooCommerce “My Account” page by adding another function to functions.php.
/*
* Snippet: How to Set Up a Loyalty Program in WooCommerce Without Using a Plugin – 2026
* Author: John Cook
* URL: https://wcsuccessacademy.com/?p=1104
* Tested with WooCommerce 10.7.0
* "Display points on my account page"
*/
function wcsuccess_show_loyalty_points() {
$user_id = get_current_user_id();
$points = get_user_meta($user_id, 'wcsuccess_loyalty_points', true);
echo '<p>Your Current Loyalty Points: ' . esc_html($points) . '</p>';
}
add_action('woocommerce_account_dashboard', 'wcsuccess_show_loyalty_points');Step 4: Enable Points Redemption
Allow customers to redeem points for discounts. This involves creating a simple conversion system where points can be exchanged for coupons or direct discounts at checkout.
Step 5: Adding a Form for Points Redemption
First, you need to provide a way for customers to request a coupon using their loyalty points. This can be done by adding a form to the “My Account” page in WooCommerce.
/*
* Snippet: How to Set Up a Loyalty Program in WooCommerce Without Using a Plugin – 2026
* Author: John Cook
* URL: https://wcsuccessacademy.com/?p=1104
* Tested with WooCommerce 10.7.0
* "Add form to redeem points"
*/
function wcsuccess_loyalty_points_redemption_form() {
$user_id = get_current_user_id();
$points = get_user_meta($user_id, 'wcsuccess_loyalty_points', true);
if ($points > 0) {
echo '<h3>Redeem Your Points</h3>';
echo '<form method="post">';
echo '<input type="submit" name="wcsuccess_redeem_points" value="Redeem Points for a Coupon">';
echo '</form>';
}
}
add_action('woocommerce_account_dashboard', 'wcsuccess_loyalty_points_redemption_form');
Step 6: Handling the Redemption Logic
When the form is submitted, you’ll want to convert the points into a coupon and deduct the points from the user’s total. Here’s how to handle that form submission and create a WooCommerce coupon.
/*
* Snippet: How to Set Up a Loyalty Program in WooCommerce Without Using a Plugin – 2026
* Author: John Cook
* URL: https://wcsuccessacademy.com/?p=1104
* Tested with WooCommerce 10.7.0
* "Handle redemption as coupons"
*/
function wcsuccess_handle_points_redemption() {
if (isset($_POST['wcsuccess_redeem_points'])) {
$user_id = get_current_user_id();
$points = get_user_meta($user_id, 'wcsuccess_loyalty_points', true);
// Define the conversion rate: e.g., 1 point = $1 discount
$discount_amount = $points; // This could be adjusted to your conversion rate
if ($points > 0) {
// Create a coupon
$coupon_code = 'DISCOUNT' . uniqid(); // Unique code
$amount = $discount_amount; // Amount
$discount_type = 'fixed_cart'; // Type: fixed_cart, percent, or fixed_product
$coupon = new WC_Coupon();
$coupon->set_code($coupon_code);
$coupon->set_discount_type($discount_type);
$coupon->set_amount($amount);
$coupon->set_individual_use(true);
$coupon->set_usage_limit(1);
$coupon->set_customer_email(array(wp_get_current_user()->user_email));
// Save the coupon in WooCommerce
$coupon_id = $coupon->save();
// Update user's points
update_user_meta($user_id, 'wcsuccess_loyalty_points', 0); // Reset points after redemption
// Optionally, add a notice to let the user know a coupon has been created
wc_add_notice("Your points have been redeemed for a $amount discount. Coupon code: $coupon_code", 'success');
}
}
}
add_action('template_redirect', 'wcsuccess_handle_points_redemption');
How It Works
- Form Display: The form is added to the WooCommerce account dashboard, allowing users to submit a request to redeem their points.
- Redemption Handling: When the user submits the form, the code checks the user’s points, creates a coupon equivalent to the value of the points, resets the user’s points to zero, and notifies the user of their new coupon code.
Step 7: Communicate the Program
Marketing your new loyalty program is crucial. Use email newsletters, banners on your site, and social media to inform existing and new customers about how they can benefit from the program.
Use Cases for Setting Up a Loyalty Program in WooCommerce Without Using a Plugin
- Small Business Customization: Small businesses can fine-tune loyalty rewards to match customer purchasing behaviors, such as offering double points during slow seasons or on specific days of the week to boost sales.
- Exclusive Member Rewards: Offer higher point values for VIP customers or those in a specific membership tier, enhancing the feeling of exclusivity and encouraging more purchases.
- Product-Specific Promotions: Temporarily increase points for specific products to clear out inventory or promote new items, directly influencing product visibility and sales.
Conclusion
Knowing how to set up a loyalty program in WooCommerce without using a plugin allows you to integrate deeply customized and flexible solutions into your e-commerce strategy. This approach not only saves on costs associated with premium plugins but also aligns the loyalty rewards more closely with your business goals and customer engagement strategies.
Final Thoughts
Implementing a loyalty program directly into WooCommerce without additional plugins is a proactive approach to customer retention. It empowers store owners to manage, customize, and execute a loyalty program that genuinely reflects the brand and its relationship with its customers.
I have been working with WordPress and WooCommerce since 2012 and have developed a deep knowledge of the content management system. Since 2012, I have developed several plugins and designed dozens of websites utilising different frameworks, CMS’s and programming languages. I am proficient in PHP, Python, Java, C, C++, R and JavaScript with limited experience in Go, Kotlin and Swift.
Educationally, I have a Master’s degree in cyber security a Bachelor’s (Hons, First Class) in Applied Research and a Graduate Certificate in Data Science. I’m currently undertaking PhD studies investigating IoT cybersecurity. I recently graduated with First Class Honours and Masters of Information Technology, receiving the Executive Dean’s Award for studies undertaken in the 2021 and 2022 academic years. I have worked in the information technology industry for the past 11 years primarily as a software/web developer specific to design, optimisation, network management and security. My research interests are in the areas of Internet of Things (IoT), 5G and Beyond Networks, information security for wireless networks and software development.
Stay In Touch

