WooCommerce Loyalty Points & Rewards / Development July 17, 2026

Developer Hooks and Extension Points

Use WooCommerce Loyalty actions and filters to integrate points, levels, order skips, expiration logic, and the Loyalty bubble.

Applies to 1.2.2+ Stable Verified July 29, 2026

WooCommerce Loyalty exposes actions and filters for common extension points. Use these hooks in a small custom plugin or child-theme code only when the behavior cannot be configured from settings.

Points Event Actions

HookArgumentsWhen it runs
yowcl_loyalty_points_reward$user_id, $points, $new_points, $order_idAfter reward points are added.
woocommerce_loyalty_points_reward$user_id, $points, $new_points, $order_idCompatibility alias for reward events.
yowcl_loyalty_points_deduct$user_id, $points, $new_points, $order_idAfter points are deducted.
woocommerce_loyalty_points_deduct$user_id, $points, $new_points, $order_idCompatibility alias for deduct events.
yowcl_loyalty_level_update$user_id, $updated_level, $new_earning_pointsAfter the customer loyalty role changes.
woocommerce_loyalty_level_update$user_id, $updated_level, $new_earning_pointsCompatibility alias for level update events.

Order And Expiration Filters

HookUse
yowcl_skip_points_for_orderSkip reward logic for selected orders, integrations, or custom sources.
yowcl_points_expiration_order_statusesCustomize which order statuses count as purchases for inactivity expiration checks.
yol_points_expiration_allowed_unitsCustomize allowed relative date units for expiration settings.
yowcl_level_discount_fee_labelCustomize the cart fee label used for loyalty level discounts.
yowcl_level_discount_fee_taxableControl whether the loyalty level discount fee is taxable.
yowcl_level_discount_fee_tax_classSet the tax class for the loyalty level discount fee.

Batch And Bubble Hooks

HookUse
yowcl_points_expiration_processedReact after a points expiration log entry is processed.
yowcl_points_zero_all_user_processedReact after a fixed-date zero-all job processes a user.
yowcl_points_zero_all_completedReact after a zero-all batch completes.
yowcl_level_reset_user_processedReact after a level reset processes a user.
yowcl_level_reset_completedReact after a level reset completes.
yowcl_loyalty_info_bubble_enabledControl whether the Loyalty bubble renders.
yowcl_loyalty_info_bubble_sectionsAdjust the sections shown in the Loyalty bubble.

Example: Skip Points For Manual Orders

add_filter( 'yowcl_skip_points_for_order', function ( $skip, $order, $old_status, $new_status ) {
    if ( $order && 'manual' === $order->get_created_via() ) {
        return true;
    }

    return $skip;
}, 10, 4 );

Implementation Notes

  • Register custom code in a small plugin so it is not lost during theme changes.
  • Use the YoOhw-prefixed hook names first; compatibility aliases are available for selected events.
  • Do not directly edit user point meta unless you also understand points logs and cache invalidation.
  • Test hooks with guest orders, registered customers, refunds, and repeated status changes.

Related Guides

Continue from WooCommerce Loyalty Points & Rewards documentation to the complete product workflow.

Evaluate product scope on the money page, use the pillar Guide for decisions and trade-offs, and return here for exact configuration.

Need support?

Still stuck?

Open a support request and include this article title, your plugin version, and what you already tried.

Open Support