Using Gravity Forms ‘gform_coupons_discount_amount’ PHP filter

The gform_coupons_discount_amount Gravity Forms PHP filter allows you to modify the coupon discount before it is applied to the form total.

Usage

add_filter('gform_coupons_discount_amount', 'your_custom_function', 10, 4);

function your_custom_function($discount, $coupon, $price, $entry) {
    // your custom code here
    return $discount;
}

Parameters

  • $discount (float) – The current discount amount.
  • $coupon (array) – Contains the coupon meta which is copied from the Coupons Feed Meta.
  • $price (float) – The form total excluding discounts.
  • $entry (Entry Object) – The current entry.

More information

See Gravity Forms Docs: gform_coupons_discount_amount

Examples

Adjust coupon discount for logged-in users

In this example, the coupon discount is increased by 5 if the user is logged in.

add_filter('gform_coupons_discount_amount', 'add_logged_in_user_bonus_discount', 10, 4);

function add_logged_in_user_bonus_discount($discount, $coupon, $price, $entry) {
    if (is_user_logged_in()) {
        $discount += 5;
    }
    return $discount;
}

Apply a different discount for a specific coupon code

In this example, a custom discount is applied if the coupon code is “SPECIAL100”.

add_filter('gform_coupons_discount_amount', 'apply_special_discount', 10, 4);

function apply_special_discount($discount, $coupon, $price, $entry) {
    if ($coupon['code'] === 'SPECIAL100') {
        $discount = $price * 0.1; // Apply a 10% discount
    }
    return $discount;
}

Limit discount amount

In this example, the maximum discount amount is limited to 50.

add_filter('gform_coupons_discount_amount', 'limit_discount_amount', 10, 4);

function limit_discount_amount($discount, $coupon, $price, $entry) {
    if ($discount > 50) {
        $discount = 50;
    }
    return $discount;
}

Apply discount only to specific products

In this example, the discount is applied only to specific products in the form.

add_filter('gform_coupons_discount_amount', 'apply_discount_to_specific_products', 10, 4);

function apply_discount_to_specific_products($discount, $coupon, $price, $entry) {
    $product_ids = array(1, 2, 3); // IDs of products you want to apply discount to
    $total_discount = 0;

    foreach ($entry as $field_id => $value) {
        if (in_array($field_id, $product_ids)) {
            $total_discount += $value;
        }
    }

    return $total_discount;
}