Members forget what their tier gets them. Showing the active benefits, the points this specific order will earn, and the distance to the next tier directly on the checkout page is one of the simplest ways to boost repeat purchase rate. The data needed for this panel already lives inside Loyalty Program for WooCommerce; one short snippet pulls it together.
What the Panel Shows
- Tier benefits. A short list of perks for the customer’s current rank.
- Projected points. An estimate of how many points this order will earn, based on the cart subtotal and the configured conversion rate.
- Next tier hint. How many more points the customer needs to reach the next rank, pulled from the plugin’s rank progress helper.
The Snippet
Edit the $benefits map to describe what each tier actually offers in your store. Use rank IDs as keys; you can find them in WordPress admin under Loyalty Program > Ranks by clicking Edit Rank and reading the modal header (for example Edit Rank (#2)).
<?php
/**
* Show membership benefits and projected points at checkout.
* Drop into wp-content/mu-plugins/ or your child theme functions.php.
*/
add_action('woocommerce_review_order_before_payment', 'wpgl_show_member_benefits');
function wpgl_show_member_benefits()
{
if (!is_user_logged_in() || !class_exists('WPGL_Ranks_Core')) {
return;
}
$user_id = get_current_user_id();
$progress = WPGL_Ranks_Core::get_rank_progress($user_id);
$current = $progress['current'] ?? null;
$next = $progress['next'] ?? null;
// Map of rank ID => benefit lines shown to the customer.
$benefits = [
2 => [ // VIP
'Extra 5% discount at checkout',
'Earn 1.5x points per dollar spent',
],
3 => [ // VVIP
'Extra 10% discount at checkout',
'Earn 2x points per dollar spent',
'Free shipping on every order',
],
];
echo '<div class="wpgl-member-benefits" style="margin: 1em 0; padding: 1em; background: #fff8e1; border-radius: 6px;">';
if ($current) {
echo '<strong>' . esc_html(sprintf(__('Your %s benefits', 'wpgens-loyalty-program'), $current->name)) . '</strong>';
if (!empty($benefits[$current->id])) {
echo '<ul style="margin: 0.5em 0 0 1.2em;">';
foreach ($benefits[$current->id] as $line) {
echo '<li>' . esc_html($line) . '</li>';
}
echo '</ul>';
}
} else {
echo '<strong>' . esc_html__('Join our membership program', 'wpgens-loyalty-program') . '</strong>';
}
// Projected points for this order
$cart_subtotal = (float) WC()->cart->get_subtotal();
$settings = function_exists('WPGL_Points_Core::get_settings') || class_exists('WPGL_Points_Core') ? WPGL_Points_Core::get_settings() : [];
$rate = $settings['conversionRate'] ?? null;
if ($rate && !empty($rate['value']) && $cart_subtotal > 0) {
$projected = (int) floor(($cart_subtotal / (float) $rate['value']) * (float) $rate['points']);
echo '<p style="margin: 0.5em 0 0 0;">' . esc_html(sprintf(
__('This order will earn approximately %d points.', 'wpgens-loyalty-program'),
$projected
)) . '</p>';
}
// Next tier hint
if ($next && !empty($progress['points_needed'])) {
echo '<p style="margin: 0.25em 0 0 0;">' . esc_html(sprintf(
__('Earn %1$d more points to unlock %2$s.', 'wpgens-loyalty-program'),
(int) $progress['points_needed'],
$next->name
)) . '</p>';
}
echo '</div>';
}
The benefit lines are deliberately plain text. This keeps them easy to localize through standard WordPress translation tools and lets you control exactly how each perk is described, without the snippet trying to second-guess what your tiers offer.
Styling
The included inline styles give the panel a warm highlight (light yellow) to draw the eye without competing with WooCommerce’s payment area. Move them into your theme stylesheet under .wpgl-member-benefits for more control, or swap the background and border-radius values to match your brand.
Pairing With the Redemption Guidance Panel
This snippet pairs naturally with the redemption-guidance panel (see the linked guide). Together they answer the three questions a member has at checkout: what do I get for being a member, how much will I earn from this purchase, and how much can I spend right now from what I have already earned?
Where to Put This Snippet
Drop the snippet into a small site-specific plugin under wp-content/mu-plugins/ so it survives theme changes, or paste it into your child theme’s functions.php.