Skip to main content

benecaster_membership_tier_updated

Action Premium Since v1.0.0

Fires after a built-in membership tier is updated via the Benecaster admin. The `$previous` parameter holds the full tier row before the update — compare it with `$tier` to detect specific changes without re-querying. The hook fires for all field changes: name, slug, price, description, trial days, badge assignments, and the active toggle.

This is a Phase 2 hook, available only when the built-in Stripe membership feature is active. The `$previous` third argument was added in a later batch; existing listeners registered with two parameters continue to work.

Parameters

Name Type Default Description
$tier_id int ID of the updated tier
$tier array Full updated tier data array

Examples

Sync pricing when monthly or annual price changes

add_action( 'benecaster_membership_tier_updated', function (
    int $tier_id, array $tier, array $previous
): void {
    $monthly_changed = $tier['monthly_price'] !== $previous['monthly_price'];
    $annual_changed  = $tier['annual_price']  !== $previous['annual_price'];

    if ( $monthly_changed || $annual_changed ) {
        my_sync_tier_pricing( $tier_id, $tier );
    }
}, 10, 3 );

Notes

Pass 10, 3 as the priority and accepted-args arguments to receive the $previous parameter. Both $tier and $previous include all columns from the membership tiers table, including Stripe price and product IDs for test and live keysets.