add_filter( 'wdp_save_cart_item_keys', function ( $keys ) {
  $keys[] = 'free_gift';
  return $keys;
});

add_filter( "wdp_get_product_price", function ( $price, $product, $price_mode, $item_meta ) {
  if ( isset( $item_meta['free_gift'] ) && $item_meta['free_gift'] == 'coupon' ) {
    $price = 0;
  }
  return $price;
}, 10, 4 );