How to Create a Digital Loyalty Card with WordPress and WooCommerce (No Monthly Fees)
> cd .. / HUB_EDITORIALE
Software Gestionali

How to Create a Digital Loyalty Card with WordPress and WooCommerce (No Monthly Fees)

[2026-07-15] Author: Ing. Calogero Bono
> share
Zenithby Meteora Web The operating system for your business. Social, clients, bookings and invoices in one platform. Gyms, barbers, professionals. Discover Zenith Free demo · no card

Do you run an online or physical store and want to build customer loyalty without paying monthly SaaS fees? The answer is a digital loyalty card built on your own stack. At Meteora Web, we have done this dozens of times: clients who started with expensive loyalty apps and now manage points and rewards with a custom plugin costing €0 per month. This guide takes you from problem to solution, with code you can actually use.

Why a digital loyalty card beats a plastic card?

Plastic cards cost to print, distribute, and get lost. A digital card lives in the customer's phone, updates in real time, and gives you granular purchase data. We saw a clothing store with 3000 active plastic cards: 40% of points were never redeemed because customers lost the card. After switching to digital, the redemption rate rose to 85% in six months. The data is clear: a digital card multiplies retention.

Which tools to choose to create it without lifetime fees?

Here's our stance: owning your stack beats renting it. If you use WooCommerce, you already have the base. Premium plugins like “Loyalty Points” cost €100-200/year and work, but tie you to external updates. We prefer building a proprietary system with WooCommerce Points and Rewards (open source, free) or custom code. For the physical card, a simple QR code generated from the user ID, displayed in the customer profile. No monthly fee, no hostage data.

Sponsored Protocol

Display the virtual card in the customer dashboard

Add a section in WooCommerce My Account. Here's a basic snippet to show points and QR:

// functions.php of child theme or custom plugin
add_action('woocommerce_before_my_account', 'show_digital_loyalty_card');
function show_digital_loyalty_card() {
    $user_id = get_current_user_id();
    $points = get_user_meta($user_id, 'loyalty_points', true) ?: 0;
    $qr_url = 'https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=' . $user_id;
    echo '<h3>Your Digital Loyalty Card</h3>';
    echo '<p>Points accumulated: <strong>' . $points . '</strong></p>';
    echo '<img src="' . $qr_url . '" alt="loyalty QR code">';
    echo '<p>Show this QR at checkout to earn points.</p>';
}

How to integrate the loyalty card into your WooCommerce store?

Integration starts with purchase tracking. Every time an order is completed, we add points to the user. Example: points = 1% of order total:

Sponsored Protocol

add_action('woocommerce_order_status_completed', 'add_loyalty_points');
function add_loyalty_points($order_id) {
    $order = wc_get_order($order_id);
    $user_id = $order->get_user_id();
    if (!$user_id) return;
    $total = $order->get_total();
    $points_to_add = floor($total); // €1 = 1 point
    $current_points = get_user_meta($user_id, 'loyalty_points', true) ?: 0;
    update_user_meta($user_id, 'loyalty_points', $current_points + $points_to_add);
}

This is a basic example. In production you need to handle multipliers, expiry, and point redemption as discount. For discount, add a field in checkout or integrate with WooCommerce Coupons. We developed a function that auto-generates a coupon when 100 points are reached. Want it? Check our advanced guide (internal link).

Sponsored Protocol

How to manage points and expiry without headaches?

Do points expire? You decide. We recommend a 12-month validity from first accumulation, with an email notification 30 days before. Use a daily cron job:

// wp-cron daily
add_action('wp', 'loyalty_expiry_cron');
function loyalty_expiry_cron() {
    if (!wp_next_scheduled('loyalty_daily_expiry')) {
        wp_schedule_event(time(), 'daily', 'loyalty_daily_expiry');
    }
}
add_action('loyalty_daily_expiry', 'check_expiry');
function check_expiry() {
    global $wpdb;
    $users = get_users(array('meta_key' => 'loyalty_points_expiry'));
    foreach ($users as $user) {
        $expiry = get_user_meta($user->ID, 'loyalty_points_expiry', true);
        if ($expiry < time()) {
            update_user_meta($user->ID, 'loyalty_points', 0);
            delete_user_meta($user->ID, 'loyalty_points_expiry');
            wp_mail($user->user_email, 'Points expired', 'Hi, your loyalty points have expired. Earn new ones!');
        }
    }
}

Test with a manual cron before enabling. We've seen cases where WordPress cron never fires: better use a real system cron hitting an endpoint.

Sponsored Protocol

How to measure the ROI of your digital loyalty card?

Here's our accounting DNA. A loyalty program without metrics is a cost, not an investment. Track:

  • Redemption rate: points used / points issued. Below 50% means poor communication or unattractive rewards.
  • Purchase frequency of enrolled vs non-enrolled customers. Use GA4 and your CRM to compare.
  • Cost per point: discount given divided by extra margin generated. If cost exceeds extra margin, you're giving away money.

We build custom reports in the WooCommerce backend. A simple SQL to see total points accumulated last month:

SELECT SUM(CAST(meta_value AS UNSIGNED)) AS total_points
FROM wp_usermeta
WHERE meta_key = 'loyalty_points';

You don't need to be a data scientist: measure what matters.

Sponsored Protocol

What to do now

  1. Define the rules: points per euro, ratio, expiry, rewards (discount, free product, free shipping).
  2. Install a base plugin or use our snippet to start. If you lack PHP skills, contact us for a free audit of your e-commerce.
  3. Communicate the card: welcome email, homepage banner, QR in store. Tech without adoption is useless.
  4. Measure after 3 months: compare pre and post fidelity data. If no increase in purchase frequency, adjust rewards.
  5. Read the pillar guide for an overview: Digital loyalty card and points collection.

Remember: a website is measured in revenue, not compliments. Your loyalty card must drive repeat sales, not just likes. If you have doubts or want us to build a custom solution, contact us.

Try it with Zenith

Zenith Fidelity is the all-in-one platform to run your business — clients, scheduling, deadlines, invoicing and WhatsApp reminders, all from your browser. No installation required.

Discover Zenith Fidelity →
> share
Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Ingegnere informatico, fondatore di Meteora Web e Zenith OS. System administrator e progettista di piattaforme, app e CMS proprietari, con esperienza in sviluppo full-stack, marketing digitale ed ecosistema Google.
[ Read Full Dossier ]

> METEORA_WEB // DIGITAL AGENCY

We build the digital presence your business deserves.

Websites, social media, online advertising, e-commerce and high-performance hosting, engineered with method by computer engineers in Sciacca, for all of Italy.

> MW_JOURNAL

> READ_ALL()