*Developers › Filters*

# WordPress Filters Reference

Every filter in WP EasyCart, PRO and the extensions: what value it lets you change and what it passes to your code. 23 parts.

Quick links

- [How filters work](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#how-it-works)
- [Reading the list](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#reading-the-list)
- [Cart and checkout](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#cart-and-checkout)
- [Products](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#products)
- [Categories, menus and manufacturers](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#categories-menus-and-manufacturers)
- [Orders](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#orders)
- [Customers and accounts](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#customers-and-accounts)
- [Subscriptions](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#subscriptions)
- [Shipping](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#shipping)
- [Taxes and fees](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#taxes-and-fees)
- [Payments](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#payments)
- [Email and notifications](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#email-and-notifications)
- [Offers and coupons](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#offers-and-coupons)
- [Reviews](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#reviews)
- [Reports and analytics](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#reports-and-analytics)
- [Admin screens and settings](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#admin-screens-and-settings)
- [Storefront templates and design](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#storefront-templates-and-design)
- [Pickup and scheduling](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#pickup-and-scheduling)
- [Downloads and gift cards](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#downloads-and-gift-cards)
- [Integrations and extensions](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#integrations-and-extensions)
- [Import and export](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#import-and-export)
- [API and mobile app](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#api-and-mobile-app)
- [Other](https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/#other)

**Where to find it:** WP Admin › functions.php

*Before you start*

## How filters work

What one is and how to read the list.

### How filters work

Change a value before WP EasyCart uses it

**What a filter is.** Before WP EasyCart uses a value, such as a list of columns, an email subject or a label, it passes the value through any filters you added. Your function can change it and hand it back. To react to an event instead, use an action.

**Where to put your code.** In a small plugin or your child theme’s `functions.php`. Never edit the WP EasyCart files; an update would remove your change.

**A first example.**

```php
add_filter( 'wp_easycart_admin_subscriber_list_columns', 'my_columns' );
function my_columns( $columns ) { return $columns; }
```

**Always return a value.** A filter function must return the value it received, changed or not, or the setting it controls ends up empty. The first parameter in each entry is the value you receive and return; the rest are extra information. To receive extra values, add a count: `add_filter( 'hook_name', 'my_function', 10, 2 );`.

> **💡 Note:** Connecting another system, such as a warehouse, an ERP or a marketplace, rather than changing the store from inside WordPress? Use the [WP EasyCart API](https://docs.wpeasycart.com/docs/extension-guides/wp-easycart-api-extension/) and its reference at [developer.wpeasycart.com](https://developer.wpeasycart.com/).

### Reading the list

Names, tags and where hooks fire

**Names.** Names start with `wp_easycart_` or `wpeasycart_` (two shipping filters start with `ecv2_`). A name with a word in braces, such as `wpeasycart_admin_order_{type}_update`, stands for a family of hooks: replace the braces with the value described in the entry.

**Tags.** An entry with no tag is in the free WP EasyCart plugin. A *PRO* tag means it works only when WP EasyCart PRO is active. Other tags name the extension that provides it.

**Fires in.** The plugin file, and the function, where the hook is called. Use it to understand the context or to search the plugin when you need more detail. Hooks in admin screens work only in the WordPress admin.

**Areas.** The list is grouped by what the hook is about: cart, orders, products, admin screens and so on. Use your browser’s find box to look for a name.

> **💡 Note:** Looking to run code when something happens instead of changing a value? See the [WordPress Action Hooks Reference](https://docs.wpeasycart.com/docs/extension-guides/wordpress-action-hooks-reference/).

*The filters*

## By area

1145 filters, grouped by what they are about.

### Cart and checkout

Grouped by what they are about

`wp_easycart_abandoned_cart_restore_target`
Filters where an abandoned cart recovery link lands when the cart held a subscription. The default is the subscription page for the product (with its usage level).

**Parameters**
`$url` (string) The subscription page URL.
`$row` (array) The abandoned cart record.

Fires in inc/classes/core/ec_abandoned_carts.php · restore_target()

`wp_easycart_add_to_cart_link_automated`
Filters whether an ?ec_add_to_cart= or ?ec_action=addtocart request came from no shopper, in which case nothing is added to a cart.

**Parameters**
`$reason` (string) prefetch (answered with a 503), bot (sent to the product page) or ” (a shopper).
`$agent` (string) The user agent, lower case.

Fires in inc/classes/core/class-wp-easycart-add-to-cart-links.php · automated()

`wp_easycart_add_to_cart_link_max_quantity`
Filters the largest quantity an ?ec_add_to_cart= or ?ec_action=addtocart link can add. Default 20; the result is kept between 1 and 999.

**Parameters**
`$quantity` (int) The largest quantity (20).

Fires in inc/classes/core/class-wp-easycart-add-to-cart-links.php · max_quantity()

`wp_easycart_add_to_cart_optional_always_add`
Filters whether adding a product always inserts a new cart row instead of merging with a matching existing cart line.

**Parameters**
`$always_add (bool)` False by default; true forces a new cart row.
`$product_id (int)` ID of the product being added.

Fires in inc/classes/core/ec_db.php · add_to_cart()

`wp_easycart_add_to_cart_quantity`
Filters the quantity stored in the cart when a product is added.

**Parameters**
`$quantity (int)` Quantity being added.
`$product_id (int)` ID of the product being added.

Fires in inc/classes/core/ec_db.php · add_to_cart()

`wp_easycart_add_to_cart_return_url_cart`
Filters the URL the shopper is sent to after adding a product to the cart, when they are redirected to the cart page.

**Parameters**
`$url (string)` Cart page URL.
`$tempcart_id (int)` ID of the cart row that was added; 0 when not known.
`$product_id (int)` ID of the product added.

Fires in wpeasycart.php · load_ec_pre() +2 more places

`wp_easycart_add_to_cart_return_url_product`
Filters the URL the shopper is sent back to after adding a product, when they stay on the product page.

**Parameters**
`$url (string)` Return URL with the ec_store_success=addtocart and model arguments appended.
`$tempcart_id (int)` ID of the cart row that was added.
`$product_id (int)` ID of the product added.

Fires in inc/classes/cart/ec_cartpage.php · process_add_to_cart_v3()

`wp_easycart_advanced_option_items_add_to_cart`
Filters the option items of an advanced option set when reading the shopper’s selections during add to cart.

**Parameters**
`$option_items` (array) the option set’s option item objects
`$option_id` (int) the option set id

Fires in inc/classes/cart/ec_cartpage.php · get_advanced_option_vals() +1 more place

`wp_easycart_advanced_options_add_to_cart`
Filters the advanced option values collected for a product being added to the cart.

**Parameters**
`$option_vals` (array) the collected option values
`$product_id` (int) the product id
`$tempcart_id` (int) the temporary cart id

Fires in inc/classes/cart/ec_cartpage.php · get_advanced_option_vals()

`wp_easycart_allow_checkout_details`
Filters whether the checkout details step is shown. Return a falsy value to stop it displaying.

**Parameters**
`$allow` (int) 1 to allow, default 1

Fires in inc/classes/cart/ec_cartpage.php · display_checkout_details()

`wp_easycart_allow_payment`
Filters whether the payment step is shown. Return a falsy value to stop it displaying.

**Parameters**
`$allow` (int) 1 to allow, default 1

Fires in inc/classes/cart/ec_cartpage.php · display_payment() +1 more place

`wp_easycart_allow_paypal_express`
Filters whether PayPal Express and digital wallet options, such as Venmo and Pay Later, are allowed on the cart and checkout.

**Parameters**
`$allow` (bool) false by default

Fires in wpeasycart.php · wp_easycart_load_cart_js() +11 more places

`wp_easycart_cart_3dsecure_link`
Filters the URL of the 3D Secure cart page.

**Parameters**
`$url` (string) the cart page URL with ec_page=3dsecure

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_info_link`
Filters the URL of the checkout information step.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_info

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_payment_link`
Filters the URL of the checkout payment step.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_payment

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_paypal_authorized_link`
Filters the URL of the checkout PayPal authorized step.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_paypal_authorized

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_shipping_link`
Filters the URL of the checkout shipping step.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_shipping

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_submit_order_link`
Filters the URL of the checkout submit order step.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_submit_order

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_checkout_success_link`
Filters the URL of the checkout success page.

**Parameters**
`$url` (string) the cart page URL with ec_page=checkout_success

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_cookie_httponly`
Filters whether the cart cookie is sent with the HttpOnly flag.

**Parameters**
`$httponly` (bool) true by default

Fires in inc/classes/core/wpeasycart_session.php · set_cart_cookie()

`wp_easycart_cart_cookie_samesite`
Filters the SameSite attribute of the cart cookie.

**Parameters**
`$samesite` (string) Lax by default

Fires in inc/classes/core/wpeasycart_session.php · set_cart_cookie()

`wp_easycart_cart_invoice_link`
Filters the URL of the invoice page.

**Parameters**
`$url` (string) the cart page URL with ec_page=invoice

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_item_total_price`
Filters the total price of a cart item, both the base total and the currency-converted total, when the cart item loads.

**Parameters**
`$total_price` (float) the item total price
`$cartitem_id` (int) the cart item id
`$product_id` (int) the product id

Fires in inc/classes/cart/ec_cartitem.php · \__construct() +1 more place

`wp_easycart_cart_item_unit_price_discounted_display`
Filters the discounted unit price display string for a cart item.

**Parameters**
`$display` (string) formatted discounted unit price plus any extra label
`$product_id` (int) the product id

Fires in inc/classes/cart/ec_cartitem.php · get_unit_price_discounted()

`wp_easycart_cart_item_unit_price_display`
Filters the unit price shown for a line item on the admin order details screen and the account receipt.

**Parameters**
`$unit_price` (string|float) the unit price
`$product_id` (int) the product id

Fires in admin/template/orders/orders/order-item.php +9 more places

`wp_easycart_cart_line_available`
Filters whether a cart line can be bought for the delivery address; return false or a WP_Error to mark the line unavailable, with the error message shown to the shopper.

**Parameters**
`$available (bool|WP_Error)` Whether the line is available; starts as true.
`$cart_item (ec_cartitem)` The cart line being checked.
`$address (array)` Delivery address: country, state, zip, city, address1, address2, phone, name.

Fires in inc/classes/core/class-wp-easycart-variants.php · line_errors()

`wp_easycart_cart_link`
Filters the URL of the cart page returned by wpeasycart_links()->get_cart_page() when no specific cart step is requested.

**Parameters**
`$cart_page (string)` The cart page URL.

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_page_url`
Filters the cart page URL when WP EasyCart loads a page and when the account page is set up.

**Parameters**
`$cart_page (string)` The cart page URL.

Fires in wpeasycart.php · load_ec_pre() +3 more places

`wp_easycart_cart_process_affirm_link`
Filters the URL of the cart’s process Affirm step (ec_page=process_affirm).

**Parameters**
`$url (string)` The cart page URL with ec_page=process_affirm.

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_quantity_message`
Filters what the cart says about a quantity limit, such as Only 3 in stock or You can buy up to 5 of this item, when a quantity change is cut back and in the notes beside a line’s quantity box.

**Parameters**
`$text` (string) The message, plain text.
`$reason` (string) stock, max or min.
`$args` (array) The numbers behind it: stock, other (units of the product on other cart lines), max and min.

Fires in inc/classes/core/class-wp-easycart-cart-quantity.php · message()

`wp_easycart_cart_screen_totals`
Filters the discount and Estimated total rows under the subtotal on the cart screen, when the cart is drawn and again after each cart change.

**Parameters**
`$totals` (array) discount, discount_display, discount_show, estimate, estimate_display and estimate_show.
`$this` (ec_cartpage) The cart page.

Fires in inc/classes/cart/ec_cartpage.php · cart_screen_totals()

`wp_easycart_cart_state`
Filters the mini-cart state array (item count, subtotal and items as plain text and URLs) returned for the visitor’s cart.

**Parameters**
`$state (array)` Count, subtotal_display and items, plain text and URLs only.
`$cart (ec_cart|null)` The visitor’s cart, or null when the visitor has no cart session.

Fires in wpeasycart.php · wp_easycart_cart_state() +1 more place

`wp_easycart_cart_subscription_info_link`
Filters the URL of the cart’s subscription info step (ec_page=subscription_info).

**Parameters**
`$url (string)` The cart page URL with ec_page=subscription_info.

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_third_party_link`
Filters the URL of the cart’s third party payment step (ec_page=third_party).

**Parameters**
`$url (string)` The cart page URL with ec_page=third_party.

Fires in inc/classes/core/wpeasycart_links.php · get_cart_page()

`wp_easycart_cart_update_response`
Filters the cart data sent back to the browser after a cart or checkout change, such as a quantity update, a removed item, a coupon or a shipping method, so extensions can add to what the page redraws.

**Parameters**
`array(...)` (array) cart, order_totals, items_total, weight_total, has_discount, has_backorder, stripe_wallet, square_wallet and summary_lines (the one-page order summary’s lines, or false).

Fires in wpeasycart.php · ec_get_cart_data()

`wp_easycart_catalog_display`
Filters whether the store is shown as a catalog (vacation mode), in which case add to cart links open the product page instead of adding the item.

**Parameters**
`$display_as_catalog (mixed)` The Display as catalog setting; a truthy value turns the store into a catalog.

Fires in wpeasycart.php · load_ec_pre() +17 more places

`wp_easycart_checkout_account_required`
Filters whether a checkout needs an account. Default true when the cart holds a download, a purchase that opens a limited page (Limit Access), or guest checkout is off.

**Parameters**
`$required` (bool) Whether an account is required.
`$cartpage` (ec_cartpage) The checkout.

Fires in inc/classes/core/class-wp-easycart-checkout-signup.php · required()

`wp_easycart_checkout_field_folds`
Filters whether an optional address field starts folded behind its “+ Add” link on the classic checkout. Default true while the field is empty.

**Parameters**
`$fold` (bool) Whether the field is folded.
`$side` (string) billing or shipping.
`$field` (string) address2 or company_name.

Fires in inc/classes/cart/ec_cartpage.php · checkout_field_folds()

`wp_easycart_checkout_field_placement_shown` PRO
Filters where a custom checkout field’s placement is really printed for the current cart.

**Parameters**
`$where (string)` The resolved placement, or an empty string.
`$placement (string)` The placement chosen for the field.
`$cartpage (object|null)` The ec_cartpage object.

Fires in inc/classes/core/wp_easycart_checkout_fields_pro.php · placement_for()

`wp_easycart_checkout_field_types` PRO
Filters the list of checkout field types available in the checkout fields builder; rendering an added type is done through wp_easycart_checkout_field_html.

**Parameters**
`$types (array)` Field type slug => settings.

Fires in inc/classes/core/wp_easycart_checkout_fields_pro.php · types()

`wp_easycart_checkout_fields` PRO
Filters the custom checkout fields returned for the requested statuses.

**Parameters**
`$fields (array)` Field key => field definition.
`$statuses` The field statuses that were asked for.

Fires in inc/classes/core/wp_easycart_checkout_fields_pro.php · fields()

`wp_easycart_checkout_fields_licensed` PRO
Filters whether the custom checkout fields feature is licensed.

**Parameters**
`$licensed (bool)` Whether checkout fields are licensed.

Fires in inc/classes/core/wp_easycart_checkout_fields_pro.php · licensed()

`wp_easycart_checkout_phone_required`
Filters whether every order needs a phone number. Default true when Settings > Checkout both collects and requires the phone.

**Parameters**
`$required` (bool) Whether a phone is required.

Fires in inc/classes/core/class-wp-easycart-checkout-needs.php · phone_required()

`wp_easycart_checkout_policy_links`
Filters whether the foot of checkout links the store’s terms, privacy and returns pages (Settings > Checkout).

**Parameters**
`$on` (bool) The ec_option_checkout_policy_links setting.

Fires in inc/classes/core/class-wp-easycart-checkout-policies.php · footer_enabled()

`wp_easycart_checkout_policy_pages`
Filters the store’s policy pages linked at the foot of checkout.

**Parameters**
`$out` (array) terms, privacy and returns => label, url, post_id, status and source.

Fires in inc/classes/core/class-wp-easycart-checkout-policies.php · pages()

`wp_easycart_checkout_shipping_step`
Filters whether the classic checkout’s steps line names a shipping step.

**Parameters**
`$ships` (bool) Whether the order goes through the shipping step.
`$cartpage` (ec_cartpage) The checkout.

Fires in inc/classes/cart/ec_cartpage.php · checkout_shipping_step()

`wp_easycart_checkout_steps`
Filters the classic checkout’s steps line before it is printed.

**Parameters**
`$steps` (array) The steps in order: key => array( title, address ).
`$current` (string) The step on show.
`$cartpage` (ec_cartpage) The checkout.

Fires in inc/classes/cart/ec_cartpage.php · display_checkout_steps()

`wp_easycart_checkout_terms_required`
Filters whether every order needs the terms box ticked. Default from Settings > Checkout > Require customers to agree to the terms.

**Parameters**
`$required` (bool) Whether the terms must be accepted.

Fires in inc/classes/core/class-wp-easycart-checkout-needs.php · terms_required()

`wp_easycart_express_button_height`
Filters the height of the express checkout buttons in pixels. Default 48; the result is kept between 40 and 55.

**Parameters**
`$height` (int) The height (48).

Fires in inc/classes/cart/ec_cartpage.php · express_button_style()

`wp_easycart_express_button_radius`
Filters the corner radius of the express checkout buttons in pixels. Default 4, or half the height for pill-shaped PayPal buttons; the result is kept between 0 and half the height.

**Parameters**
`$radius` (int) The radius.
`$height` (int) The buttons’ height.

Fires in inc/classes/cart/ec_cartpage.php · express_button_style()

`wp_easycart_invalid_checkout_details_url`
Filters the URL a shopper is sent to when checkout details are invalid, such as an invalid shipping choice or an order error.

**Parameters**
`$url` (string) cart page URL with an ec_cart_error query argument

Fires in wpeasycart.php · ec_ajax_complete_payment_manual() +6 more places

`wp_easycart_onepage_checkout` PRO
Filters whether the one-page checkout is active.

**Parameters**
`$active` (bool) false by default

Fires in wpeasycart.php · wp_easycart_onepage_active() +3 more places

`wp_easycart_onepage_incompatible`
Filters the list of payment method names that keep a store on the classic checkout instead of the one-page checkout.

**Parameters**
`$names` (string\[\]) names of incompatible payment methods

Fires in wpeasycart.php · wp_easycart_onepage_incompatible()

`wp_easycart_onepage_summary_editable`
Filters whether shoppers can change quantities and remove items in the one-page checkout’s order summary; return false to show the lines as read-only.

**Parameters**
`$edit` (bool) The setting Items can be changed on the one-page checkout.
`$cart` (ec_cart) The cart.

Fires in wpeasycart.php · wp_easycart_summary_lines()

`wp_easycart_order_extras_placement` PRO
Filters where the PO number and gift options are asked at checkout.

**Parameters**
`$placements` (array) po and gift keys, each set to order_notes, delivery or review

Fires in inc/classes/core/wp_easycart_order_extras_pro.php · placements()

`wp_easycart_product_can_add_to_cart`
Filters whether a shopper may put a product in the cart. Every add-to-cart path asks, and checkout asks again for lines already in the cart; return true, or a WP_Error to refuse.

**Parameters**
`$answer` (true|WP_Error) The store’s answer; error codes are product_missing, product_inactive, store_restricted, product_role, login_for_pricing, catalog_mode, inquiry_mode and store_catalog.
`$row` (object|false) The product row: product_id, model_number, post_id, price, is_donation, activate_in_store, role_id, login_for_pricing, login_for_pricing_user_level, catalog_mode and inquiry_mode.
`$user` (object|null) The shopper’s ec_user.

Fires in inc/classes/core/class-wp-easycart-storefront-access.php · can_add_to_cart()

`wp_easycart_return_store_url`
Filters the URL of the return to store link in the cart.

**Parameters**
`$url` (string) The store URL, or the custom return URL from settings when set.

Fires in inc/classes/cart/ec_cartpage.php · return_to_store_page()

`wp_easycart_shipping_wait_enabled`
Filters whether the cart page and the classic checkout’s details step leave shipping out of the totals they show until the shopper chooses a rate. On with the setting Hide rates until an address is entered. What checkout charges never changes.

**Parameters**
`$on` (bool) The setting.

Fires in inc/classes/core/class-wp-easycart-shipping-wait.php · enabled()

`wp_easycart_shipping_wait_text`
Filters the words in the Shipping line before a rate is chosen.

**Parameters**
`$text` (string) The words.

Fires in inc/classes/core/class-wp-easycart-shipping-wait.php · text()

`wp_easycart_shipping_waits`
Filters whether one place leaves shipping out of its shown totals right now.

**Parameters**
`$waits` (bool) The rule.
`$place` (string) cart or checkout_info.
`$cartpage` (ec_cartpage) The cart.

Fires in inc/classes/core/class-wp-easycart-shipping-wait.php · waits()

`wp_easycart_update_item_quantity`
Filters the quantity saved when a cart item’s quantity is updated.

**Parameters**
`$quantity` (int) New quantity, never below 0.
`$tempcart_id` (int) Cart item id.
`$session_id` (string) Cart session id.
`$product_id` (int) Product id.

Fires in inc/classes/core/ec_db.php · update_cartitem()

`wpeasycart_abandoned_cart_capture_skip`
Filters whether an abandoned cart session is skipped instead of captured for reminder emails.

**Parameters**
`$skip` (bool) Default false.
`$session_id` (string) Cart session id.
`$cart_data` (object) The ec_tempcart_data row for the session.

Fires in inc/classes/core/ec_abandoned_carts.php · capture()

`wpeasycart_allowed_file_upload_types`
Filters the list of MIME types shoppers may upload as customer files.

**Parameters**
`$types (array)` Allowed MIME types, such as image/jpeg, application/pdf and zip types.

Fires in inc/classes/core/class-wp-easycart-customer-uploads.php · allowed_types()

`wpeasycart_cart_card_error`
Filters the saved card decline text before the shopper sees it on the cart page.

**Parameters**
`$card_error (string)` Card decline text stored from the payment gateway.

Fires in inc/classes/cart/ec_cartpage.php · display_cart_error()

`wpeasycart_cart_errors`
Filters the map of cart error codes to the notice text shown to the shopper.

**Parameters**
`$errors (array)` Error code => notice text, such as email_exists, payment_failed or minimum_order.

Fires in inc/classes/cart/ec_cartpage.php · cart_error_notes()

`wpeasycart_cartitem_image1`
Filters the main image URL for a cart item, in the cart and in abandoned cart emails.

**Parameters**
`$image1 (string)` Cart item image URL.
`$product_id (int)` Product id.
`$cartitem_id (int)` Cart item id, or 0 if unknown.

Fires in design/layout/base-responsive-v3/ec_abandoned_cart_email.php +2 more places

`wpeasycart_cartitem_image1_optionitem`
Filters the option item image URL for a cart item, in the cart and in abandoned cart emails.

**Parameters**
`$image1_optionitem (string)` Option item image URL or empty string.
`$product_id (int)` Product id.
`$cartitem_id (int)` Cart item id, or 0 if unknown.

Fires in design/layout/base-responsive-v3/ec_abandoned_cart_email.php +1 more place

`wpeasycart_checkout_error_entry`
Filters one checkout problem entry before it is returned to the checkout page.

**Parameters**
`$entry (array)` Problem entry with code and message keys.
`$code (string)` The problem’s code.
`$cartpage (ec_cartpage)` The checkout page object.

Fires in inc/classes/cart/ec_cartpage.php · order_error_messages()

`wpeasycart_checkout_order_errors`
Filters the list of error codes found when a shopper submits the order.

**Parameters**
`$errors (array)` Error codes; add a notice for a new code through wpeasycart_cart_errors.
`$cartpage (ec_cartpage)` The checkout page object.

Fires in inc/classes/cart/ec_cartpage.php · order_errors()

`wpeasycart_checkout_password_js_function`
Filters the JavaScript run when the shopper clicks the submit button on the checkout details form.

**Parameters**
`$js_function (string)` JavaScript for the onclick attribute; defaults to ‘return ec_validate_cart_details( );’.

Fires in design/layout/base-responsive-v3/ec_checkout_details.php

`wpeasycart_checkout_protection_client_ip`
Filters the client IP address that checkout protection uses for a request.

**Parameters**
`$ip (string)` The address chosen for the request.
`$remote (string)` The REMOTE_ADDR server value.

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · client_ip()

`wpeasycart_checkout_protection_cloudflare_ranges`
Filters the address ranges checkout protection trusts to send the CF-Connecting-IP (Cloudflare) header.

**Parameters**
`$ranges (array)` CIDR ranges of trusted proxies.

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · cloudflare_ranges()

`wpeasycart_checkout_protection_contact_email`
Filters the email address shoppers are told to contact when their payments are paused by checkout protection.

**Parameters**
`$email (string)` Contact email address.

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · paused_message()

`wpeasycart_checkout_protection_limits`
Filters the numeric limits checkout protection applies for a protection level.

**Parameters**
`$limits (array)` Limits for the level.
`$level (string)` Protection level.

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · limits()

`wpeasycart_checkout_protection_settings`
Filters the resolved checkout protection settings.

**Parameters**
`$settings (array)` Resolved checkout protection settings.

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · settings()

`wpeasycart_checkout_step_error`
Lets a plugin block a checkout step by returning an error, which sends the shopper back to a checkout page.

**Parameters**
`$error (array|null)` Null by default; return array( ‘code’ => notice code, ‘page’ => page to go back to ) to block the step.
`$step (string)` Checkout step: information, shipping or payment.
`$cartpage (ec_cartpage)` The checkout page object.

Fires in inc/classes/cart/ec_cartpage.php · checkout_step_error()

`wpeasycart_express_checkout_allowed`
Filters whether express checkout buttons may be shown.

**Parameters**
`$allowed (bool)` Whether express checkout is allowed; defaults to true.
`$context (string)` Where it is asked, such as checkout or square.
`$cartpage (ec_cartpage)` The cart page object.

Fires in design/layout/base-responsive-v3/ec_cart_information_v2.php +5 more places

`wpeasycart_inquiry_blocklist`
Filters the list of blocked terms the inquiry form guard checks messages against.

**Parameters**
`$blocklist (array)` Lowercase blocked terms.

Fires in inc/classes/core/class-wp-easycart-inquiry-guard.php · blocklist()

`wpeasycart_inquiry_client_ip`
Filters the client IP address the product inquiry form guard uses.

**Parameters**
`$ip (string)` The address chosen for the request.
`$remote (string)` The REMOTE_ADDR server value.

Fires in inc/classes/core/class-wp-easycart-inquiry-guard.php · client_ip()

`wpeasycart_inquiry_error_message`
Filters the error message shown when the inquiry form guard rejects an inquiry.

**Parameters**
`$text (string)` Message text.
`$reason (string)` Reason the inquiry was rejected.
`$settings (array)` Inquiry guard settings.

Fires in inc/classes/core/class-wp-easycart-inquiry-guard.php · message()

`wpeasycart_inquiry_guard_result`
Filters the inquiry guard result, letting a plugin accept or reject an inquiry.

**Parameters**
`$reason (string)` Rejection reason, or empty when the inquiry passed the checks.
`$context (array)` Array with product_id, name, email, message and settings.

Fires in inc/classes/core/class-wp-easycart-inquiry-guard.php · check()

`wpeasycart_inquiry_guard_settings`
Filters the product inquiry guard settings such as length, link limit and blocklist.

**Parameters**
`$settings (array)` Inquiry guard settings.

Fires in inc/classes/core/class-wp-easycart-inquiry-guard.php · settings()

`wpeasycart_minimum_order_total`
Filters the minimum order total a cart must reach before checkout.

**Parameters**
`$minimum (float|string)` Value of the ec_option_minimum_order_total setting.

Fires in wpeasycart.php · ec_ajax_square_complete_payment() +22 more places

`wpeasycart_restrict_cart_only`
Filters whether the store shows only the cart page and blocks the checkout pages.

**Parameters**
`$restrict (bool)` False by default; return true to restrict shoppers to the cart.

Fires in inc/classes/cart/ec_cartpage.php · should_display_cart() +1 more place

`wpeasycart_show_checkout_button`
Filters whether the Checkout button is shown on the cart page.

**Parameters**
`$show (bool)` Whether to show the button; defaults to true.

Fires in design/layout/base-responsive-v3/ec_cart.php +2 more places

`wpeasycart_valid_cart_errors`
Filters the list of cart error codes that are valid to show on the cart page.

**Parameters**
`$error_codes (array)` Valid error code strings, such as email_exists, login_failed and payment_failed.

Fires in wpeasycart.php · wp_easycart_dynamic_cart_display()

`wpeasycart_validate_checkout_data`
Filters whether the checkout contact and billing details are valid.

**Parameters**
`$data_validated (bool)` Result of the built-in checks.
`$user (ec_user)` The current customer object.

Fires in inc/classes/cart/ec_cartpage.php · validate_checkout_data()

`wpeasycart_validate_submit_order_data`
Filters whether the order data is valid when the shopper submits the order.

**Parameters**
`$data_validated (bool)` Result of the built-in checks; false fails the order.
`$user (ec_user)` The current customer object.

Fires in inc/classes/cart/ec_cartpage.php · order_errors() +1 more place

### Products

Grouped by what they are about

`wp_easycart_admin_ai_product_facts`
Filters the product facts Write with AI sends with its prompt in the product editor.

**Parameters**
`$facts` (array) The facts.
`$row` (object) The product row.

Fires in admin/inc/wp_easycart_admin_ai.php · product_facts()

`wp_easycart_admin_ai_ready`
Filters whether Write with AI can write: true when the site’s AI service is set up for text.

**Parameters**
`$out['ready']` (bool) The WordPress AI Client’s answer.

Fires in admin/inc/wp_easycart_admin_ai.php · state()

`wp_easycart_admin_ai_text`
Filters the text Write with AI returns for a product field. Return a string to answer without the site’s AI service; null lets WP EasyCart ask it.

**Parameters**
`null` (string|WP_Error|null) The text, or null.
`$prompt` (string) What the AI would be asked.
`$kind` (string) description, short_description, excerpt, specifications, seo_description, seo_title or seo_keywords.
`$facts` (array) The product’s facts.

Fires in admin/inc/wp_easycart_admin_ai.php · generate()

`wp_easycart_admin_free_image_slot_limit`
Filters how many product image slots the free edition allows, in the media editor and when images are saved.

**Parameters**
`$limit (int)` Number of image slots available in the free edition; defaults to 2.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · print_free_media_v2() +2 more places

`wp_easycart_admin_free_option_set_limit`
Filters how many option sets the free edition allows on a product.

**Parameters**
`$limit (int)` Maximum option sets per product in the free edition; defaults to 2.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · print_free_options_v2() +7 more places

`wp_easycart_admin_optionitem_quantity_add_click`
Filters the JavaScript function called when Add New is clicked in the product option item quantity panel; Pro replaces the upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/inc/wp_easycart_admin_products.php · ec_admin_ajax_get_optionitem_quantity_content()

`wp_easycart_admin_optionitem_quantity_delete_click`
Filters the JavaScript function called when Delete is clicked in the product option item quantity panel; Pro replaces the upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/inc/wp_easycart_admin_products.php · ec_admin_ajax_get_optionitem_quantity_content()

`wp_easycart_admin_optionitem_quantity_update_click`
Filters the JavaScript function called when Update is clicked in the product option item quantity panel; Pro replaces the upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/inc/wp_easycart_admin_products.php · ec_admin_ajax_get_optionitem_quantity_content()

`wp_easycart_admin_product_custom_price_label_change`
Filters the JavaScript onchange handler for the custom price label dropdown on the admin product pricing form; Pro replaces the upgrade prompt.

**Parameters**
`$onchange (string)` JavaScript function name; defaults to show_pro_required.

Fires in admin/inc/wp_easycart_admin_details_products.php · pricing_fields()

`wp_easycart_admin_product_custom_price_label_save`
Filters the custom price label type saved for a product; Pro returns the posted value, and the default of 0 leaves the label disabled.

**Parameters**
`$value (int)` Value to save; 0 by default.
`$enable_price_label (int)` Price label type posted from the admin form.

Fires in admin/inc/wp_easycart_admin_product_table.php · ecv2_product_save_prices() +1 more place

`wp_easycart_admin_product_details_basic_fields_list`
Filters the basic field definitions of the product editor before they are printed: the Product details and Description cards in Basics, the Price card in Pricing, and the summary column’s Page address and Manufacturer.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and required.
`$product (object)` Product being edited.

Fires in admin/inc/wp_easycart_admin_details_products.php · basic_fields()

`wp_easycart_admin_product_details_categories_fields_list`
Filters the field definitions of the product editor’s Categories field (the Organization card in the summary column).

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · categories_fields()

`wp_easycart_admin_product_details_customs_fields_list`
Filters the customs field definitions of the product editor’s Shipping section: Packs in, HS tariff code, Country of origin and Customs description.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · customs_fields()

`wp_easycart_admin_product_details_deconetwork_fields_list`
Filters the field definitions of the Deconetwork card in the product editor’s Type settings section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · deconetwork_fields()

`wp_easycart_admin_product_details_featured_products_fields_list`
Filters the field definitions of the Featured products card in the product editor’s Storefront section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · featured_products_fields()

`wp_easycart_admin_product_details_general_options_fields_list`
Filters the field definitions behind the product editor’s general option fields, such as Show on store page, Show in the specials widget, the product type switches and the purchase rules, before they are printed in the Storefront, Type settings and Search & marketing sections and the summary column.

**Parameters**
`array(...)` (array) Field definitions: name, type, label and more.
`$this->product` (object) The product being edited.

Fires in admin/inc/wp_easycart_admin_details_products.php · general_options_fields()

`wp_easycart_admin_product_details_google_merchant_fields_list` PRO
Filters the field definitions of the Google Merchant card in the product editor’s Search & marketing section (Google Shopping tab) before they are printed.

**Parameters**
`$fields` (array) field definitions for the Google Merchant section

Fires in admin/inc/wp_easycart_admin_details_products_pro.php · print_google_merchant_fields()

`wp_easycart_admin_product_details_menus_fields_list`
Filters the field definitions of the Store menus card in the product editor’s Storefront section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · menus_fields()

`wp_easycart_admin_product_details_order_completed_details_note_fields_list`
Filters the field definitions of the Order details note in the product editor’s After purchase section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · order_completed_details_note_fields()

`wp_easycart_admin_product_details_order_completed_email_note_fields_list`
Filters the field definitions of the Order email note in the product editor’s After purchase section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · order_completed_email_note_fields()

`wp_easycart_admin_product_details_order_completed_note_fields_list`
Filters the field definitions of the Order confirmation page note in the product editor’s After purchase section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · order_completed_note_fields()

`wp_easycart_admin_product_details_packaging_fields_list`
Filters the weight and size field definitions (Weight, Width, Height, Length) of the product editor’s Shipping section, under Package.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · packaging_fields()

`wp_easycart_admin_product_details_pricing_fields_list`
Filters the field definitions of the product editor’s Pricing section: the Cost and price display card, and the Volume and B2B prices card (Volume Pricing and B2B Pricing).

**Parameters**
`$fields` (array) field definitions for the pricing fields
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · pricing_fields() +1 more place

`wp_easycart_admin_product_details_quantity_fields_list`
Filters the field definitions of the Stock and order limits card in the product editor’s Inventory section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · quantity_fields()

`wp_easycart_admin_product_details_seo_fields_list`
Filters the field definitions of the Search engine listing card in the product editor’s Search & marketing section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · seo_fields()

`wp_easycart_admin_product_details_short_description_fields_list`
Filters the field definitions of the Short description card in the product editor’s Basics section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · short_description_fields()

`wp_easycart_admin_product_details_specifications_fields_list`
Filters the field definitions of the Specifications card in the product editor’s Basics section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · specifications_fields()

`wp_easycart_admin_product_details_tags_fields_list`
Filters the field definitions of the Badges and image effects card in the product editor’s Design section, such as the hover effect.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · tags_fields()

`wp_easycart_admin_product_details_user_roles`
Filters the user roles offered in the product editor’s Who can see it choice and in the products list’s role pricing options.

**Parameters**
`$user_roles` (array) role options, each an object with id and value set to the role label

Fires in admin/inc/wp_easycart_admin_details_products.php · general_options_fields() +1 more place

`wp_easycart_admin_product_details_v2_lock_map`
Filters which inputs of each product editor section are locked when another service manages the product’s fields, such as a fulfillment partner or Square.

**Parameters**
`array(...)` (array) section => managed field => input ids, or true for the whole section.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · lock_map()

`wp_easycart_admin_product_details_v2_tab_groups`
Filters the groups of the product editor’s section list: Essentials, Catalog, Advanced and Insights.

**Parameters**
`$tab_groups` (array) group slug => label

Fires in admin/template/products/products/product-details-v2.php

`wp_easycart_admin_product_details_v2_tabs`
Filters the product editor’s sections (Basics, Media, Pricing and so on), with each one’s label, icon, group and description.

**Parameters**
`$tabs` (array) tab slug => array with label, icon, group, desc
`$product` (object) the product being edited

Fires in admin/template/products/products/product-details-v2.php

`wp_easycart_admin_product_editor_prefs`
Filters the product editor choices saved for one admin user: Page or Focus view, which sections are folded, whether the EasyCart menu is folded to icons, and whether the tip was seen.

**Parameters**
`$prefs` (array) view (page or focus), collapsed (section key => bool), menu (mini or full) and tip (bool).
`$user_id` (int) The user.

Fires in admin/inc/wp_easycart_admin_products.php · wp_easycart_admin_product_editor_prefs()

`wp_easycart_admin_product_list_columns`
Filters the columns shown in the admin product list table.

**Parameters**
`$columns` (array) column definitions with name, label, format, width and visibility keys

Fires in admin/inc/wp_easycart_admin_product_table.php · setup()

`wp_easycart_admin_product_list_filters`
Filters the filter controls available above the admin product list table.

**Parameters**
`$filters` (array) filter definitions for the product list

Fires in admin/inc/wp_easycart_admin_product_table.php · setup()

`wp_easycart_admin_product_tax_facts`
Filters what the store charges in tax as the product editor’s Tax section and summary card describe it.

**Parameters**
`$facts` (array) The tax facts.
`$product` (object) The product being edited.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · tax_facts_v2()

`wp_easycart_admin_product_type_labels`
Filters the names of the product type switches, used to describe a product in the editor’s summary column, such as Subscription + Gift card, or Standard product when none is on.

**Parameters**
`array(...)` (array) Switch id => label, such as is_subscription_item => Subscription and is_download => Digital download.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · type_labels_v2()

`wp_easycart_admin_product_type_sections`
Filters the name of the product editor’s type section for each product type.

**Parameters**
`$sections` (array) Type key => rail, title and desc.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · type_sections_v2()

`wp_easycart_admin_product_types`
Filters the product types offered by the Product type choice in the product editor’s summary column and by the products list’s Product type filter. A type you add needs a checkbox with its flag as the id in the editor, and its flag must be an ec_product column for the filter to find it.

**Parameters**
`$types` (array) key => label, flag (the type’s ec_product column, empty for none), ships (1, 0 or null to leave shipping alone), pro (needs WP EasyCart PRO), help and icon (a dashicon).

Fires in admin/inc/wp_easycart_admin_product_types.php · types()

`wp_easycart_admin_v2_health_checks`
Filters the Listing health checklist in the product editor’s summary column.

**Parameters**
`$checks` (array) checks, each an array with key, label, done and tab
`$p` (object) the product

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · get_health_checks()

`wp_easycart_admin_v2_order_status_labels`
Filters the order status labels sent with the product activity data in the product editor’s Activity section.

**Parameters**
`$status_labels` (array) order status labels, empty by default

Fires in admin/inc/wp_easycart_admin_products.php · ec_admin_ajax_ecdv2_activity()

`wp_easycart_admin_v2_price_context_chips`
Filters the price context chips (such as login for pricing) shown near the price in the product editor.

**Parameters**
`$chips` (array) chips, each an array with label and tab
`$p` (object) the product

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · print_price_context()

`wp_easycart_card_savings`
Filters what a store product card says the shopper saves under a reduced price. Return null to show nothing; an answer without a positive amount and a percent is treated as nothing.

**Parameters**
`$answer` (array|null) amount, percent, offer, price and strike, or null.
`$product` (ec_product) The product.
`$card_price` (array) The card’s offer, price and strike.

Fires in wpeasycart.php · wp_easycart_card_savings()

`wp_easycart_image_download_address`
Filters the address the store downloads a product image from when it is given a web address (an AI assistant or the WP EasyCart API). Google Drive and Dropbox share links are turned into their download links first.

**Parameters**
`$fetch` (string) The address to download.
`$url` (string) The address given.

Fires in inc/classes/core/class-wp-easycart-product-writer.php · download_address()

`wp_easycart_image_download_limit` API plugin
Filters the largest product image the store copies from a web address, in the store and in the WP EasyCart API.

**Parameters**
`20 * MB_IN_BYTES` (int) Bytes. Default 20 MB; 0 means no limit.

Fires in inc/classes/core/class-wp-easycart-product-writer.php · attachment() +1 more place

`wp_easycart_login_for_pricing_text`
Filters the message shown on a product when the shopper is logged in but their account does not have access to the login-for-pricing price.

**Parameters**
`$text` (string) message text
`product id` (int) the product ID

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy.php · login_for_price() +2 more places

`wp_easycart_low_stock_threshold`
Filters the stock quantity at or below which a product or variant counts as low stock.

**Parameters**
`$threshold` (int) effective low stock threshold
`$product_id` (int) product ID, 0 when store-wide
`$oiq_id` (int) variant row ID, 0 for product-level stock
`$context` (object|array|null) the row the threshold was resolved from

Fires in inc/classes/core/ec_stock.php · wp_easycart_low_stock_threshold()

`wp_easycart_option_cart_name`
Filters the name an option prints with the customer’s choice in the cart, emails and orders.

**Parameters**
`$name` (string) The option set’s own name, else the one worked out from its label.
`$row` (object) The ec_option row.
`$label` (string) The label on the product page.

Fires in inc/classes/core/class-wp-easycart-option-names.php · raw()

`wp_easycart_option_name_prompts`
Filters the prompts taken off the start of an option label to make the option’s name.

**Parameters**
`$prompts` (string\[\]) Regular expressions without delimiters, matched case-insensitively.

Fires in inc/classes/core/class-wp-easycart-option-names.php · prompts()

`wp_easycart_prior_price`
Filters the lowest price in the 30 days before a reduction, for a product or one of its variants.

**Parameters**
`$prior` (float|null) The price, or null when unknown.
`$product_id` (int) The product id.
`$from_now` (bool) Whether it is an offer’s reduction (counted from today).
`$variant_id` (int) The variant id (0 for the product).

Fires in inc/classes/core/class-wp-easycart-price-history.php · prior_price() +1 more place

`wp_easycart_prior_price_shown`
Filters the lowest price of the last 30 days as the price note prints it.

**Parameters**
`$amount` (float) The amount shown.
`$product` (ec_product) The product.
`$price` (float) The price as recorded.

Fires in inc/classes/core/class-wp-easycart-price-history.php · shown()

`wp_easycart_prior_price_strike_before_offer`
Filters whether the struck price is the price before the offer, not the compare-at price, while an offer runs. Default on while the lowest price of the last 30 days shows.

**Parameters**
`$strike` (bool) Whether to strike the price before the offer.

Fires in inc/classes/core/class-wp-easycart-price-history.php · strike_before_offer()

`wp_easycart_pro_option_list_limit` PRO
Filters how many options the PRO product editor lists in its option pickers before showing a search box.

**Parameters**
`$limit` (int) Maximum options listed, default 200.
`$kind` The kind of option list being loaded.

Fires in admin/inc/wp_easycart_admin_products_pro.php · wp_easycart_pro_option_list()

`wp_easycart_product_breadcrumbs_schema`
Filters whether the Elementor product info widget prints breadcrumb schema markup.

**Parameters**
`$show` (bool) True when no SEO plugin is detected.
`$product` (object) The product.
`$items` (array) The breadcrumb items.

Fires in admin/elementor/modules/product-info/includes/class-wp-easycart-product-info.php · print_breadcrumb_schema()

`wp_easycart_product_builder_ai_ready`
Filters whether Write with AI on the Add product page can write. It answers after wp_easycart_admin_ai_ready.

**Parameters**
`$out['ready']` (bool) Whether the site’s AI service is set up for text.

Fires in admin/inc/wp_easycart_admin_product_builder.php · ai_state()

`wp_easycart_product_builder_ai_text`
Filters the product description Write with AI returns on the Add product page. Return a string to answer without the site’s AI service; null lets WP EasyCart ask it.

**Parameters**
`null` (string|WP_Error|null) The text, or null.
`$prompt` (string) What the AI would be asked.
`$facts` (array) What the page knows about the product.

Fires in admin/inc/wp_easycart_admin_product_builder.php · describe()

`wp_easycart_product_builder_kinds`
Filters the product kinds the Add product page offers. Keep each kind’s id: it is saved with the product.

**Parameters**
`$kinds` (array) The kinds.

Fires in admin/inc/wp_easycart_admin_product_builder.php · kinds()

`wp_easycart_product_builder_quick_min`
Filters how many active products a store needs before the Add product page shows its Quick start (copy a recent product).

**Parameters**
`self::QUICK_MIN` (int) The number of products; at least 1.

Fires in admin/inc/wp_easycart_admin_product_builder.php · quick_min()

`wp_easycart_product_builder_quick_start`
Filters what the Add product page’s Quick start shows: the newest products to copy, the usual groups and how a product was last started.

**Parameters**
`$out` (array) The Quick start data.

Fires in admin/inc/wp_easycart_admin_product_builder.php · quick()

`wp_easycart_product_builder_reviews_default`
Filters whether customer reviews start on for a new product on the Add product page, and why.

**Parameters**
`$out` (array) on, why, total and with (products with reviews).

Fires in admin/inc/wp_easycart_admin_product_builder.php · reviews_default()

`wp_easycart_product_builder_setup`
Filters how an existing product is set up when the Add product page starts a new product from it (its kind, variation sets, modifiers, categories, tax, weight, stock and more; never its name, SKU or photos).

**Parameters**
`$out` (array) The setup, as the page reads it.
`$row` (object) The product row.
`$pro` (bool) Whether WP EasyCart PRO features are on.

Fires in admin/inc/wp_easycart_admin_product_builder.php · product_setup()

`wp_easycart_product_builder_tax_codes`
Filters the tax codes the Add product page suggests and finds for a tax service such as AvaTax.

**Parameters**
`$out` (array) The codes.
`$tax['service']` (string) The tax service.
`$q` (string) The search text.
`$name` (string) The product name.

Fires in admin/inc/wp_easycart_admin_product_builder.php · tax_codes()

`wp_easycart_product_cache_viewer`
Filters the viewer details that vary the product cache key, for stores whose product queries differ per shopper.

**Parameters**
`$viewer` (array) manager, user_level and role_id.

Fires in inc/classes/core/ec_db.php · product_cache_viewer()

`wp_easycart_product_details_add_to_cart_value`
Filters the Add to Cart button label on product cards and the product buy area.

**Parameters**
`$label` (string) The button text.
`$product_id` (int) The product id.

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy-area.php · add_label() +13 more places

`wp_easycart_product_details_allow_add_to_cart`
Filters whether the add to cart form shows for a product that is out of stock.

**Parameters**
`$allow` (bool) False by default.
`$product_id` (int) The product id.

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy-area.php · render() +2 more places

`wp_easycart_product_details_full_size`
Filters the WordPress image size used for the large product image on product pages.

**Parameters**
`$size` (string) Image size name, default ‘large’.

Fires in design/layout/base-responsive-v3/ec_product.php +33 more places

`wp_easycart_product_details_image_url_type` Facebook & Instagram Tabs
Filters the URL of a product image saved as an external image URL.

**Parameters**
`$url` (string) The image URL.

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy.php · gallery_item() +28 more places

`wp_easycart_product_details_list_price_display`
Filters the HTML output of the product’s list (regular) price.

**Parameters**
`$output` (string) Price HTML.
`$list_price` (float) The list price.

Fires in inc/classes/core/ec_product.php · display_product_list_price()

`wp_easycart_product_details_popup_thumbnail_image_url_type`
Filters the URL of an external image shown in the product page popup thumbnails.

**Parameters**
`$url` (string) The image URL.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +1 more place

`wp_easycart_product_details_price_display`
Filters the HTML output of the product’s price.

**Parameters**
`$output` (string) Price HTML.
`$price` (float) The product price.

Fires in inc/classes/core/ec_product.php · display_price()

`wp_easycart_product_details_price_post_num`
Filters the price HTML after the price number has been added, before the subscription interval text.

**Parameters**
`$output` (string) Price HTML built so far.
`$product_id` (int) The product id.
`$rand_id` Random id that identifies this product display on the page.

Fires in inc/classes/core/ec_product.php · display_price()

`wp_easycart_product_details_price_pre_num`
Filters the price HTML just before the price number is added.

**Parameters**
`$output` (string) Price HTML built so far.
`$product_id` (int) The product id.
`$rand_id` Random id that identifies this product display on the page.

Fires in inc/classes/core/ec_product.php · display_price()

`wp_easycart_product_details_show_cart_area`
Filters whether the add to cart area (quantity and button) is shown on the product page or add to cart shortcode.

**Parameters**
`$show_add_to_cart_area` (bool) True by default.

Fires in design/layout/base-responsive-v3/ec_add_to_cart_shortcode.php +2 more places

`wp_easycart_product_details_show_images`
Filters whether the product image gallery is shown on the product page.

**Parameters**
`$show` (bool) True by default.

Fires in admin/elementor/modules/product-buy/widgets/class-wp-easycart-elementor-product-gallery-widget.php · render() +2 more places

`wp_easycart_product_details_thumbnail_image_url_type`
Filters the URL of an external image shown as a product page thumbnail.

**Parameters**
`$url` (string) The image URL.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +3 more places

`wp_easycart_product_details_thumbnail_large_image_url_type`
Filters the URL of an external image shown in the large popup thumbnail on the product page.

**Parameters**
`$url` (string) The image URL.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +1 more place

`wp_easycart_product_details_thumbnail_size`
Filters the WordPress image size used for product page thumbnails.

**Parameters**
`$size` (string) Image size name, default ‘medium’.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +7 more places

`wp_easycart_product_draft_days`
Filters how many days a new product nobody saved is kept. Add product opens the editor on a hidden draft; a daily task deletes drafts older than this.

**Parameters**
`self::DAYS` (int) Days, 7 by default.

Fires in inc/classes/core/class-wp-easycart-product-drafts.php · cleanup()

`wp_easycart_product_force_select_options`
Filters whether a product shows a Select Options link instead of an add to cart button in listings.

**Parameters**
`$force` (bool) False by default.
`$product_id` (int) The product id.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-card.php · action() +6 more places

`wp_easycart_product_list_price_display`
Filters the formatted list (regular) price text shown on product listings.

**Parameters**
`$list_price` (string) Formatted list price.
`$list_price_raw` The unformatted product list price.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-card.php · price_html() +14 more places

`wp_easycart_product_lock_label`
Filters the name shown for the service that manages a product, in the editor’s Managed by notices; WP EasyCart PRO names its plan groups here.

**Parameters**
`''` (string) An empty string to use the built-in name.
`$slug` (string) Who manages the product.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · label()

`wp_easycart_product_lock_sections`
Filters the product editor sections that can be locked, and which fields each locks and keeps.

**Parameters**
`$sections` (array) Section => block fields, keep fields and columns.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · sections()

`wp_easycart_product_lock_text`
Filters the wording of a managed product’s notices: the cover over a locked section, the banner, and the message when a change is refused.

**Parameters**
`$text` (string) The sentence.
`$by` (string) Who manages the product.
`'message'` (string) Where it shows: cover, banner or message.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · message() +1 more place

`wp_easycart_product_lock_url`
Filters the address of the managing service’s own settings, linked as Open in … from a managed product’s notice; WP EasyCart PRO links a plan group’s editor.

**Parameters**
`''` (string) An empty string for the built-in answer (the fulfillment provider’s dashboard, if it has one).
`(string) $slug` (string) Who manages the product.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · url()

`wp_easycart_product_locked_fields`
Filters which product fields are locked in the editor because another system manages the product.

**Parameters**
`$fields` (string\[\]) Locked field keys such as title, price, sku or stock. None by default.
`$row` (object) The product row.
`$by` (string) The managing provider slug from wp_easycart_product_managed_by.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · locked_fields()

`wp_easycart_product_managed_by`
Filters which provider manages a product, which locks its fields in the editor.

**Parameters**
`$slug` (string) Provider slug, such as square, or an empty string.
`$row` (object) The product row.

Fires in inc/classes/core/class-wp-easycart-product-lock.php · managed_by()

`wp_easycart_product_price_data`
Filters the data the product page prices its choices from, before it is printed as JavaScript.

**Parameters**
`$data` (array) The price data.
`$product` (ec_product) The product.

Fires in inc/classes/core/class-wp-easycart-product-pricing.php · data()

`wp_easycart_product_price_display` Tabs
Filters the formatted price text shown on product listings.

**Parameters**
`$display` (string) Formatted price.
`$price` The raw product price.
`$product_id` (int) The product id.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-card.php · price_html() +10 more places

`wp_easycart_product_safety_applies`
Filters whether product pages show the EU product safety details.

**Parameters**
`$applies` (bool) Whether they show.
`$setting` (string) The setting: ” (automatic), show or hide.

Fires in inc/classes/core/class-wp-easycart-product-safety.php · applies()

`wp_easycart_product_safety_details`
Filters the EU product safety details a product page shows. Nothing shows when the manufacturer, responsible person and warnings are all empty.

**Parameters**
`$out` (array) manufacturer, responsible, product and warnings.
`$product_id` (int) The product id.

Fires in inc/classes/core/class-wp-easycart-product-safety.php · details()

`wp_easycart_product_schema`
Filters the schema.org structured data built for a product.

**Parameters**
`$data` (array) Structured data for the product.
`$product` (object) The product.

Fires in inc/classes/core/class-wp-easycart-product-schema.php · build()

`wp_easycart_product_schema_enabled`
Filters whether product schema markup is output, either sitewide or for a single product.

**Parameters**
`$on` (bool) Value of the store’s product schema setting.
`$product` (object|null) The product, when checking one product.

Fires in inc/classes/core/class-wp-easycart-product-schema.php · enabled()

`wp_easycart_product_schema_variant_limit`
Filters the maximum number of variants included in a product’s schema markup.

**Parameters**
`$limit` (int) Variant limit, default VARIANT_LIMIT.
`$product` (object) The product.

Fires in inc/classes/core/class-wp-easycart-product-schema.php · variants()

`wp_easycart_product_schema_variant_property`
Filters the schema.org property name used to describe a variant option set.

**Parameters**
`$found` (string) The property matched from the option set name, or an empty string.
`$set` The option set being described.

Fires in inc/classes/core/class-wp-easycart-product-schema.php · variant_property()

`wp_easycart_product_show_add_to_cart_button`
Filters whether the add to cart button shows for a product in listings and quick view.

**Parameters**
`$show` (bool) True by default.
`$product` (object) The product.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-card.php · action() +10 more places

`wp_easycart_show_card_savings`
Filters whether store product cards print “You save” under a reduced price. Default the store’s setting.

**Parameters**
`$on` (bool) The store’s choice.
`$product` (ec_product|null) The product the card is for (null asks for the store’s choice).

Fires in wpeasycart.php · wp_easycart_card_savings_enabled()

`wp_easycart_show_cpt_in_menu`
Filters the show_in_menu setting when the store item post type is registered, so the post type can appear in the admin menu.

**Parameters**
`$show_in_menu` (bool|string) Default false.

Fires in wpeasycart.php · ec_create_post_type_menu()

`wp_easycart_show_prior_price`
Filters whether struck prices show the lowest price of the last 30 days. Default the store’s setting.

**Parameters**
`$enabled` (bool) Whether the note shows.

Fires in inc/classes/core/class-wp-easycart-price-history.php · enabled()

`wp_easycart_show_product_not_found`
Filters whether the product not found notice is shown; by default only store managers and the Elementor editor see it.

**Parameters**
`$show` (bool) True for administrators, store managers and the Elementor editor.

Fires in wpeasycart.php · wp_easycart_print_product_not_found()

`wp_easycart_stock_notify_batch_size` PRO
Filters how many back-in-stock subscribers are notified per batch for a product.

**Parameters**
`$batch_size` (int) Subscribers per batch, default 100.
`$product_id` (int) Product id.

Fires in admin/inc/wp_easycart_admin_products_pro.php · wp_easycart_pro_stock_notify_batch()

`wp_easycart_stock_notify_subscriber_page` PRO
Filters how many back-in-stock subscribers are listed per page on a product.

**Parameters**
`$per_page` (int) Rows per page.
`$product_id` (int) Product id.

Fires in admin/inc/wp_easycart_admin_products_pro.php · print_notify_subscriber_table()

`wp_easycart_swatch_image_url`
Filters the image address an option swatch shows.

**Parameters**
`$found` (string) The address chosen.
`$url` (string) The address saved on the choice.
`$px` (int) The swatch size in pixels.

Fires in inc/classes/core/ec_optionitem.php · swatch_image_url()

`wp_easycart_tabs_block_types` Tabs
Filters the content block types the tab designer offers and the product page draws; add a wp_easycart_tabs_block object under the key its type() returns, or unset one. A saved block whose type is gone draws nothing.

**Parameters**
`self::$types` (array) Type key => wp_easycart_tabs_block object; the 36 block types that ship with Tabs by default. An entry whose key does not match its type() is dropped.

Fires in includes/blocks/class-wp-easycart-tabs-blocks.php · types()

`wp_easycart_tabs_can_manage` Tabs
Filters whether the store may edit product tabs.

**Parameters**
`$can` (bool) True with an active Premium license.

Fires in includes/class-wp-easycart-tabs.php · can_manage()

`wp_easycart_tabs_content` Tabs
Filters the content of a product tab before it is shown on the storefront.

**Parameters**
`$content` (string) Tab content.
`$item` (array) The tab.

Fires in includes/class-wp-easycart-tabs-layout.php · raw_html()

`wp_easycart_tabs_conversion_map` Tabs
Filters how an older Text, FAQ or Downloads tab becomes a block when it is opened in or saved from the tab designer: which block each tab type turns into and which of that block’s fields take its content.

**Parameters**
`$map` (array) Old tab type (text, faq, downloads) => block (the block type), keys (old field => block field) and data (fixed values for the new block). By default each becomes a Text, FAQ or Downloads block.

Fires in admin/class-wp-easycart-tabs-designer.php · conversion_map()

`wp_easycart_tabs_pair_card` Tabs
Filters one product card in a Pairs well with block before it is drawn; return a card without a url, or a non-array, to leave that product out.

**Parameters**
`$card` (array) Keys name and url (plain text), image and price (HTML, already escaped).
`$row` (object) The ec_product row of the paired product.

Fires in includes/blocks/types/class-wp-easycart-tabs-block-pairs.php · cards()

`wp_easycart_tabs_product_values` Tabs
Filters the product values that {placeholders} in tab blocks are filled with, such as {sku} and {weight}; add a key to make a new placeholder (lowercase letters only).

**Parameters**
`$out` (array) Key => text: sku, name, brand, price, weight, width, length, height, size, stock and gtin, read from the product; empty when the product is not found.
`$product_id` (int) The product id.

Fires in includes/blocks/class-wp-easycart-tabs-blocks.php · values_for()

`wp_easycart_tabs_repeats_batch` Tabs
Filters how many products one step of a Repeated tabs merge handles; the value is kept between 1 and 500.

**Parameters**
`self::BATCH` (int) Products per step, default 100.

Fires in includes/class-wp-easycart-tabs-repeats.php · batch_size()

`wp_easycart_tabs_repeats_list_limit` Tabs
Filters the most products a shared tab made by Repeated tabs can list as its chosen products; a version on more products than this must be shown on every product instead.

**Parameters**
`self::LIST_MAX` (int) Most products, default 5000 (the shared tab’s list column holds about 9,000 ids).

Fires in includes/class-wp-easycart-tabs-repeats.php · list_limit()

`wp_easycart_tabs_repeats_scan_max` Tabs
Filters the most copies of one tab name a Repeated tabs review reads to list its versions; past it the review says only the first copies were read, and a merge still covers every product.

**Parameters**
`self::SCAN_MAX` (int) Most rows read, default 50000.

Fires in includes/class-wp-easycart-tabs-repeats.php · scan_max()

`wp_easycart_tabs_starters` Tabs
Filters the starting points offered for a new shared tab in the Start from list under Extensions › Tabs, such as Shipping & returns, Size guide and FAQ; add, change or remove one by id.

**Parameters**
`$list` (array) Id => either title, icon, template, tab and optionally only (a tab of an industry template by template id and tab index, optionally limited to some block types), or title, icon, summary and blocks (its own blocks).

Fires in includes/class-wp-easycart-tabs-templates.php · starter_list()

`wp_easycart_tabs_templates` Tabs
Filters the industry templates offered by Start from a template in the tab designer, whose tabs are also starting points for shared tabs; add one with its own id, change one or unset one. Blank always stays last.

**Parameters**
`self::files()` (array) Id => id, name, icon, blurb, category, style and tabs; each tab has title, icon, summary, count and blocks, each block type and data. By default the fourteen industry templates and Blank.

Fires in includes/class-wp-easycart-tabs-templates.php · templates()

`wp_easycart_unit_price_bases`
Filters the bases a unit price can be shown per.

**Parameters**
`$bases` (array) Key => array( quantity, unit token ).

Fires in inc/classes/core/class-wp-easycart-unit-price.php · bases()

`wp_easycart_unit_price_default_base`
Filters the base a unit price is shown per when the product leaves it on automatic. An unknown base is treated as none.

**Parameters**
`$base` (string) The base key.
`$unit` (string) The unit token.

Fires in inc/classes/core/class-wp-easycart-unit-price.php · default_base()

`wp_easycart_unit_price_text`
Filters the unit price shown beside a product’s price, such as “€13.27 / kg”. An empty answer shows nothing.

**Parameters**
`$text` (string) The unit price text.
`$product` (object) The product.
`$amount` (float) The unit price.
`$setup` (array) measure, unit, base, quantity and base_unit.

Fires in inc/classes/core/class-wp-easycart-unit-price.php · note_html()

`wp_easycart_unit_price_units`
Filters the units a product’s contents can be given in.

**Parameters**
`$units` (array) Token => array( dimension, size in g, ml, cm, m² or item, label ).

Fires in inc/classes/core/class-wp-easycart-unit-price.php · units()

`wp_easycart_unlisted_sql`
Filters the SQL that store product lists, live search and the Elementor product listing widgets add to leave out products that sell another way: by default a WP EasyCart PRO plan group’s products, which sell from its pricing table while their own pages still work.

**Parameters**
`$sql` (string) AND alias.plan_tier_id = 0 by default; return SQL starting with AND, or an empty string to leave nothing out.
`$alias` (string) The ec_product table’s alias in the query.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · wp_easycart_unlisted_sql()

`wp_easycart_update_stock_quantity` PRO
Filters the stock quantity change applied to a product when its stock is updated or restocked.

**Parameters**
`$quantity` Quantity to apply.
`$product_id` (int) Product id.

Fires in inc/classes/core/ec_db.php · update_product_stock() +1 more place

`wp_easycart_variant_matrix_limit` PRO
Filters the maximum number of variants a single product may have.

**Parameters**
`$limit` (int) Default 20000.

Fires in inc/classes/core/class-wp-easycart-variants.php · limit() +1 more place

`wp_easycart_variant_rebuild_limit`
Filters how many products have their variants rebuilt per run after an option set changes.

**Parameters**
`$limit` (int) Default 200.
`$option_ids` (int\[\]) The option sets that changed.

Fires in inc/classes/core/class-wp-easycart-variants.php · rebuild_for_options()

`wpeasycart_basic_optionitem`
Filters an option item row loaded from the database before it is cached.

**Parameters**
`$optionitem (object)` Option item database row (ec_optionitem), or null if not found.

Fires in inc/classes/core/ec_options.php · get_optionitem()

`wpeasycart_basic_optionitems`
Filters the list of option item rows loaded for an option set before they are cached.

**Parameters**
`$optionitems (array)` Option item database rows for the option set, ordered by optionitem_order.

Fires in inc/classes/core/ec_options.php · get_optionitems() +1 more place

`wpeasycart_db_get_all_advanced_optionitems_results`
Filters the advanced option item rows loaded from the database before they are cached.

**Parameters**
`$optionitems (array)` Advanced option item database rows.

Fires in inc/classes/core/ec_db.php · get_all_advanced_optionitems() +1 more place

`wpeasycart_description_content_initally_active`
Filters whether the description tab panel starts hidden on the product details page; a value containing display:none hides it, an empty string shows it.

**Parameters**
`$active (string)` Empty string by default, which shows the description panel.
`$product_id (int)` Product id.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +1 more place

`wpeasycart_description_initally_active`
Filters the CSS class that marks the description tab active on the product details page.

**Parameters**
`$class (string)` Active class name; defaults to ‘ec_active’.
`$product_id (int)` Product id.

Fires in admin/elementor/modules/product-info/widgets/class-wp-easycart-elementor-product-info-tabs-widget.php · render() +2 more places

`wpeasycart_search_terms`
Filters the list of database columns searched by the store product search.

**Parameters**
`$search_terms (array)` Column names searched, such as product.title.

Fires in inc/classes/core/ec_product_filter.php · get_search_where() +1 more place

### Categories, menus and manufacturers

Grouped by what they are about

`wp_easycart_category_ideas`
Filters the smart category ideas offered for rule-based categories. The list is cut to the most it shows and kept for ten minutes.

**Parameters**
`$ideas` (array) Each: id, name, why, icon, rules, count, sample, needs and season.

Fires in admin/inc/wp_easycart_admin_category_ideas.php · ideas()

`wp_easycart_category_ideas_gift_season`
Filters whether the holiday gift guide category idea is in season.

**Parameters**
`$season` (bool) True from November 1 to December 24.

Fires in admin/inc/wp_easycart_admin_category_ideas.php · gift_season()

`wp_easycart_smart_categories_enabled` PRO
Filters whether smart categories are enabled.

**Parameters**
`$enabled` (bool) Default is whether the store is licensed for them.

Fires in inc/classes/core/ec_smart_categories.php · is_enabled()

`wp_easycart_smart_categories_flush_cache` PRO
Filters whether product and category caches are flushed after smart categories sync; return false to handle invalidation yourself.

**Parameters**
`$flush` (bool) Default true.

Fires in inc/classes/core/ec_smart_categories.php · flush_caches()

`wp_easycart_smart_categories_licensed` PRO
Filters whether the store’s license allows smart categories.

**Parameters**
`$licensed` (bool) Whether the license is active.

Fires in inc/classes/core/ec_smart_categories.php · licensed()

### Orders

Grouped by what they are about

`wp_easycart_admin_duplicate_order_original`
Filters the new order row before it is inserted when an admin duplicates an existing order; kept for backward compatibility.

**Parameters**
`$new (array)` Column values for the duplicate order row about to be inserted.

Fires in admin/inc/wp_easycart_admin_order_table.php · ecv2_order_duplicate_create()

`wp_easycart_admin_order_address_editor`
Filters the data the order screen’s address editor uses, before it is printed as JSON on the page.

**Parameters**
`$data` (array) layouts, nozip, regions (ISO code => list of \[ code, name \]), region and postal words (by ISO code), and choose.

Fires in admin/template/orders/orders/order-edit-address.php

`wp_easycart_admin_order_details_add_new_line_action`
Filters the JavaScript function name called when the button to add a new line item is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_billing_edit_action`
Filters the JavaScript function name called when the button to edit the billing address is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_delete_line_action`
Filters the JavaScript function name called when the button to delete an order line item is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-item.php

`wp_easycart_admin_order_details_edit_line_action`
Filters the JavaScript function name called when the button to edit an order line item is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-item.php

`wp_easycart_admin_order_details_order_bottom_edit_action`
Filters the JavaScript function name called when the button to edit the order details section is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_order_date_edit_action`
Filters the JavaScript function name called when the button to edit the order date is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_order_edit_action`
Filters the JavaScript function name called when the button to edit the customer details is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_refund_action`
Filters the JavaScript function name called when the refund button is clicked on the admin order details payment card; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_shipping_edit_action`
Filters the JavaScript function name called when the button to edit the shipping address is clicked on the admin order details screen; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_details_totals_edit_action`
Filters the JavaScript function name called when the button to edit order totals is clicked on the admin order details payment card; Pro replaces the default upgrade prompt.

**Parameters**
`$action (string)` Name of the JavaScript function to call; defaults to show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_fields_card_always`
Filters whether the custom checkout fields card is shown on the admin order screen even when the order has no field values.

**Parameters**
`$show (bool)` False by default; true shows the card when empty.
`$order (object)` Order row.

Fires in inc/classes/core/class-wp-easycart-order-fields.php · admin_card()

`wp_easycart_admin_order_gift_editable`
Filters whether the gift order card on the admin order screen shows an Edit button.

**Parameters**
`$editable (bool)` False by default; true shows the Edit button.
`$order_id (int)` ID of the order.

Fires in inc/classes/core/class-wp-easycart-order-gift.php · admin_card_html()

`wp_easycart_admin_order_giftcard_refunds`
Filters whether the order screen’s Refund button also shows for an order with no money left to refund but gift card balance that can still go back onto its card. WP EasyCart PRO returns true.

**Parameters**
`false` (bool) Offer refunds to the gift card, false by default.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_admin_order_history_entry` PRO
Filters how a custom order history log entry is displayed on the admin order timeline; return an array to supply the entry, or null to leave it unhandled.

**Parameters**
`$entry (array|null)` Entry data supplied by an extension; null by default.
`$order_log_key (string)` Log key identifying the type of history entry.
`$meta (array)` Metadata saved with the history entry.
`$item (object)` The order log row.

Fires in admin/inc/wp_easycart_admin_orders_pro.php · extension_history_entry()

`wp_easycart_admin_order_records_deposits`
Filters whether the admin order screen can record a deposit or payment taken outside the store. WP EasyCart PRO answers true for its Record payment; otherwise the button shows locked.

**Parameters**
`false` (bool) Whether payments can be recorded.
`$order` (object) The order row.

Fires in admin/inc/wp_easycart_admin_order_screen.php · records_part() +1 more place

`wp_easycart_admin_order_timeline_labels` PRO
Filters the labels used for order timeline events in the admin fulfillment cell.

**Parameters**
`$labels (array)` Order log key => label.
`$order_id (int)` ID of the order.

Fires in admin/inc/wp_easycart_admin_orders_pro_v2.php

`wp_easycart_admin_orders_details_basic_fields_list`
Filters the list of basic field definitions on the admin order details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and required.

Fires in admin/inc/wp_easycart_admin_details_orders.php · basic_fields()

`wp_easycart_admin_orders_details_shipment_fields_list`
Filters the list of shipment field definitions on the admin order details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and required.

Fires in admin/inc/wp_easycart_admin_details_orders.php · shipment_fields()

`wp_easycart_business_details_lines`
Filters the business details lines printed on receipts and invoices.

**Parameters**
`$lines` (array) The lines.

Fires in inc/classes/core/class-wp-easycart-business.php · lines()

`wp_easycart_buyer_note_blocked_shortcodes`
Filters the shortcodes that never run inside a product’s notes for buyers (store pages such as the account, cart and store; storefront shortcodes too in an email).

**Parameters**
`$tags` (string\[\]) Shortcode names.
`$context` (string) confirmation, email or account.

Fires in inc/classes/core/class-wp-easycart-buyer-notes.php · blocked()

`wp_easycart_buyer_note_stand_in`
Filters what a blocked shortcode shows inside a note for buyers, such as the link to My Account that stands in for \[ec_account\]. An empty string leaves it out.

**Parameters**
`$html` (string) The HTML.
`$tag` (string) The shortcode name.
`$context` (string) confirmation, email or account.

Fires in inc/classes/core/class-wp-easycart-buyer-notes.php · stand_in_html()

`wp_easycart_cancel_restock`
Filters whether a cancelled order’s stock goes back into inventory; return false to leave it out. Also asked with order id 0 to word the Cancel this order? confirmation.

**Parameters**
`$on` (bool) The Put stock back when an order is cancelled setting (Settings › Products › Inventory), on by default.
`(int) $order_id` (int) The order id, or 0 when asked for the store as a whole.

Fires in inc/classes/core/class-wp-easycart-order-returns.php · restock_on_cancel()

`wp_easycart_document_builtins`
Filters the built-in document profiles for a document type.

**Parameters**
`$builtins (array)` Built-in profile definitions.
`$type (string)` The document type.

Fires in inc/classes/core/class-wp-easycart-documents.php · builtins()

`wp_easycart_document_fields`
Filters the fields a document type can show or hide.

**Parameters**
`$fields (array)` Field key => settings such as group, label and default.
`$type (string)` The document type.

Fires in inc/classes/core/class-wp-easycart-documents.php · fields()

`wp_easycart_document_order_profile`
Filters which document profile is used for an order when none is specified; PRO uses it for rules and gift orders.

**Parameters**
`$value (string)` Profile id; empty by default.
`$type (string)` The document type.
`$order_id (int)` The order id.

Fires in inc/classes/core/class-wp-easycart-documents.php · resolve()

`wp_easycart_document_profile`
Filters the field settings of a document profile.

**Parameters**
`$values (array)` Field key => on/off value for the profile.
`$type (string)` The document type.
`$id (string)` The profile id.

Fires in inc/classes/core/class-wp-easycart-documents.php · profile()

`wp_easycart_document_render_{type}`
Filters the HTML rendered for a document type that renders through its own sender, such as the receipt and shipped emails. {type} is the document type.

**Parameters**
`$value (string)` Rendered HTML; empty by default.
`$order_id (int)` The order id.
`$fields (array)` The resolved document fields.
`$args (array)` Render arguments.

Fires in inc/classes/core/class-wp-easycart-documents.php · render()

`wp_easycart_document_rule_match` PRO
Filters the document rule matched for an order (PRO), letting code replace or clear the matched rule.

**Parameters**
`$found (array|null)` The matched rule, or null.
`$order_id (int)` The order id.

Fires in inc/classes/core/wp_easycart_document_rules_pro.php · match()

`wp_easycart_document_types`
Filters the list of document types shown in Settings > Documents.

**Parameters**
`$types (array)` Document type => settings.

Fires in inc/classes/core/class-wp-easycart-documents.php · types()

`wp_easycart_documents_pro`
Filters whether the store gets more than one profile per document (WP EasyCart PRO, licensed).

**Parameters**
`$value (bool)` Whether PRO document profiles are enabled; false by default.

Fires in inc/classes/core/class-wp-easycart-documents.php · pro_enabled()

`wp_easycart_documents_pro_licensed` PRO
Filters whether the PRO documents feature is licensed.

**Parameters**
`$licensed (bool)` Whether the WP EasyCart license is valid.

Fires in inc/classes/core/wp_easycart_documents_pro.php · licensed()

`wp_easycart_ecv2_create_label_action`
Runs on the order details Fulfill panel with a placeholder value; the return value is not used, so it only gives listeners a hook point.

**Parameters**
`$action (string)` The string show_pro_required.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_ecv2_format_phone`
Filters a phone number’s display text and tel: link on the order details screen.

**Parameters**
`$phone (array)` display (formatted text) and href (tel: link).
`$raw (string)` The phone number as stored.
`$country (string)` The country used to format it.

Fires in admin/inc/wp_easycart_admin_details_orders.php · wp_easycart_format_phone()

`wp_easycart_ecv2_order_details_payment_fields_list`
Filters the fields in the order details payment area (gift card and coupon used).

**Parameters**
`$fields (array)` List of field definitions with name, type, label, required, validation_type and value.

Fires in admin/inc/wp_easycart_admin_details_orders.php · payment_fields()

`wp_easycart_ecv2_order_duplicate_payload`
Filters the data sent to the Duplicate order dialog when an order is chosen for duplication.

**Parameters**
`$payload (array)` Order id, date, status, customer, ship to, items, currency sample, totals, shipping and customer notes flag.
`$order (object)` The original order.

Fires in admin/inc/wp_easycart_admin_order_table.php · ecv2_order_duplicate_get()

`wp_easycart_ecv2_order_duplicate_row`
Filters the new order row before a duplicated order is inserted into the database.

**Parameters**
`$new (array)` The new order row values.
`$original (object)` The original order.
`$_POST (array)` The submitted form data.

Fires in admin/inc/wp_easycart_admin_order_table.php · ecv2_order_duplicate_create()

`wp_easycart_ecv2_order_filter_callback_where`
Filters the SQL WHERE clause for a custom order list filter that WP EasyCart does not handle itself.

**Parameters**
`$value (string)` SQL condition; empty by default.
`$filter_index (int)` Index of the filter.
`$value (string)` The chosen filter value.
`$this` The order table object.

Fires in admin/inc/wp_easycart_admin_order_table.php · get_filter_callback_where()

`wp_easycart_ecv2_order_flags`
Filters the flags (warnings and notices) shown on an order’s details screen.

**Parameters**
`$flags (array)` Each flag with kind, title and text.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_order_screen.php · flags()

`wp_easycart_ecv2_order_fulfillment_state`
Filters the fulfillment state of an order shown on the order details screen.

**Parameters**
`$state (string)` The fulfillment state.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_order_screen.php · fulfillment()

`wp_easycart_ecv2_order_health_filter_where`
Filters the SQL WHERE clause for an order list health filter that WP EasyCart does not handle itself.

**Parameters**
`$value (string)` SQL condition; empty by default.
`$filter_key (string)` The health filter key.
`$this` The order table object.

Fires in admin/inc/wp_easycart_admin_order_table.php · get_health_filter_where()

`wp_easycart_ecv2_order_health_stats`
Filters the health stats tiles shown above the orders list.

**Parameters**
`$health_stats (array)` List of stats with label, value, filter_value, color and group.
`$this->health_data (array)` The counts the stats were built from.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_ecv2_order_insight_chips` PRO
Filters the insight chips shown in the header of an order’s details screen (PRO).

**Parameters**
`$insights (array)` List of chips with icon and label.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · print_header_chips()

`wp_easycart_ecv2_order_next_steps`
Filters the possible next steps for an order; the step with the lowest priority number is shown as the next step.

**Parameters**
`$steps (array)` Each step with key, priority (10 review payment, 20 refund due, 30 send invoice, 40 collect a balance, 45 mark picked up, 50 fulfill), label, onclick and icon.
`$order (object)` The order row.
`$context (array)` fulfillment, payment, local_pickup, store_open and flags.

Fires in admin/inc/wp_easycart_admin_order_screen.php · next_step()

`wp_easycart_ecv2_order_pdf_download_available` PRO
Filters whether a PDF receipt or invoice can be downloaded for an order (PRO).

**Parameters**
`$enabled (bool)` Whether the PDF download is available.

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · pdf_download_available()

`wp_easycart_ecv2_order_quick_edit_payload`
Filters the data returned to the orders list quick edit form.

**Parameters**
`$payload (array)` Quick edit values such as carrier, tracking and edit_url.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_order_table.php · ecv2_order_quick_edit_get()

`wp_easycart_ecv2_order_row_menu_actions`
Filters the actions in each row’s menu in the orders list.

**Parameters**
`$row_actions (array)` List of actions with label, name, icon, href or action, and optional danger and confirm settings.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_ecv2_order_saved_views`
Filters the saved views shown as filter pills above the orders list (PRO).

**Parameters**
`$value (array)` List of saved views, each with id, label and params; empty by default.

Fires in admin/inc/wp_easycart_admin_order_table.php · print_saved_views_bar()

`wp_easycart_ecv2_order_spreadsheet_columns`
Filters the columns of the orders list spreadsheet view (PRO).

**Parameters**
`$value (array)` Spreadsheet columns; empty in the free plugin.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_ecv2_order_steps`
Filters the progress steps shown for an order on the order details screen.

**Parameters**
`$steps (array)` The order’s steps, each with key, label, sub and state.
`$order (object)` The order row.
`$ctx (array)` Context about the order’s payment, fulfillment and pickup.

Fires in admin/inc/wp_easycart_admin_order_screen.php · steps() +3 more places

`wp_easycart_ecv2_order_view_modes`
Filters the view modes available in the orders list; PRO adds spreadsheet.

**Parameters**
`$modes (array)` View mode slugs; table and card by default.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_order_details_discount_display`
Filters whether the order discount total row is shown on the order confirmation page, the order’s page in My Account, the printed receipt and invoices.

**Parameters**
`$show` (bool) true by default
`$order` the order

Fires in design/layout/base-responsive-v3/ec_account_order_details.php +4 more places

`wp_easycart_order_details_promo_code_display`
Filters whether the promo code row is shown on the order confirmation page and the order’s page in My Account.

**Parameters**
`$show` (bool) true by default
`$order` the order

Fires in design/layout/base-responsive-v3/ec_account_order_details.php +1 more place

`wp_easycart_order_details_show_discount_total`
Filters whether the line total discount is shown for order lines on the printed receipt.

**Parameters**
`$show` (bool) true by default

Fires in design/layout/base-responsive-v3/ec_account_print_receipt.php +4 more places

`wp_easycart_order_details_show_discount_unit`
Filters whether the per-unit discount is shown for order lines on the printed receipt.

**Parameters**
`$show` (bool) true by default

Fires in design/layout/base-responsive-v3/ec_account_print_receipt.php +4 more places

`wp_easycart_order_device`
Filters the device type recorded on an order when it is inserted.

**Parameters**
`$device` (string) device
`$order_id` (int) the order ID
`$kind` (string) checkout, staff or renewal

Fires in inc/classes/core/class-wp-easycart-order-ledger.php · order_inserted()

`wp_easycart_order_display_grand_total` PRO
Filters the grand total shown on order invoices and order displays.

**Parameters**
`$grand_total` (float) the order grand total
`$order` the order

Fires in design/layout/base-responsive-v3/ec_invoice_email.php +4 more places

`wp_easycart_order_display_sub_total` PRO
Filters the sub total shown on order invoices and order displays, after discounts are subtracted per settings.

**Parameters**
`$sub_total` (float) the sub total to display
`$order_sub_total` (float) the order’s stored sub total
`$order_items` the order line items

Fires in design/layout/base-responsive-v3/ec_invoice_pdf.php +3 more places

`wp_easycart_order_field_rows`
Filters the rows of checkout field answers shown for an order.

**Parameters**
`$rows` (array\[\]) the field rows
`$order_id` (int) the order ID
`$surface` (string) where the rows are shown
`$source` (int|object) what was asked for

Fires in inc/classes/core/class-wp-easycart-order-fields.php · rows()

`wp_easycart_order_fulfillment_state`
Filters the fulfillment state calculated for an order, letting fulfillment extensions add their own part.

**Parameters**
`$out` (array) the fulfillment state
`$order_id` (int) the order ID

Fires in inc/classes/core/class-wp-easycart-fulfillment.php · state()

`wp_easycart_order_line_fulfillment_data`
Filters the fulfillment data stamped on an order line when it is inserted: variant ID, fulfillment provider and unit cost.

**Parameters**
`$data` (array) optionitemquantity_id, fulfillment_provider and unit_cost (float or null)
`$line` (object) the line as inserted
`$hint` (object|null) the cart line, when there is one

Fires in inc/classes/core/class-wp-easycart-fulfillment.php · stamp_line()

`wp_easycart_order_package_actions`
Filters the action buttons shown on a package row on the admin order screen.

**Parameters**
`$actions` (array) key => array with label, onclick or url or attrs, primary and target
`$package` (object) the package; shipment_id is 0 while the order’s packages are not saved yet
`$order` (object) the order row

Fires in admin/inc/wp_easycart_admin_packages.php · package_row_html()

`wp_easycart_order_pay_links`
Filters the list of extra payment links shown on the order pay page.

**Parameters**
`$links` (array) Links to show, empty by default.
`$order` (object) The order being paid.

Fires in design/layout/base-responsive-v3/ec_order_pay.php

`wp_easycart_order_shipped_status`
Filters the order status id the admin order screen applies when you fulfill an order (Mark as shipped).

**Parameters**
`$status_id` (int) Order status id, default 2.

Fires in admin/inc/wp_easycart_admin_order_screen.php · shipped_status_id()

`wp_easycart_order_status_defaults`
Filters the built-in order status names and their labels.

**Parameters**
`$names` (array) Status id => array( English name => label ).

Fires in inc/classes/core/class-wp-easycart-order-statuses.php · defaults()

`wp_easycart_pdf_document_filename` PRO
Filters the file name of a generated PDF document such as a packing slip or invoice.

**Parameters**
`$name` (string) File name, such as packing-slip-1042.pdf.
`$type` (string) Document type.
`$order_id` (int) The order id.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · document_filename()

`wp_easycart_pdf_document_html` PRO
Filters the HTML of a PDF document before it is turned into a PDF.

**Parameters**
`$html` (string) Document HTML.
`$type` (string) Document type.
`$order_id` (int) The order id.
`$args` (array) Document arguments.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · render_document_html()

`wp_easycart_pdf_receipt_available` PRO
Filters whether the PDF receipt feature is available on this store.

**Parameters**
`$available` (bool) True when the store has a valid license.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · is_available()

`wp_easycart_pdf_receipt_dompdf_options` PRO
Filters the dompdf options used to render a PDF receipt.

**Parameters**
`$settings` (array) dompdf option setter method name => value.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · render_pdf()

`wp_easycart_pdf_receipt_filename` PRO
Filters the file name of the PDF receipt.

**Parameters**
`$name` (string) File name built from the pattern, with order id and date.
`$order_id` (int) The order id.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · filename()

`wp_easycart_pdf_receipt_header_html` PRO
Filters the header HTML block (business details, order number and date) at the top of the PDF receipt or invoice.

**Parameters**
`$head` (string) Header HTML.
`$order` (object) The order.

Fires in design/layout/base-responsive-v3/ec_invoice_pdf.php +1 more place

`wp_easycart_pdf_receipt_html` PRO
Filters the full HTML of the PDF receipt before it is rendered to PDF.

**Parameters**
`$html` (string) Receipt HTML.
`$order_id` (int) The order id.
`$order` (object) The order.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · render_document_html() +1 more place

`wp_easycart_pdf_receipt_image_src` PRO
Filters the local file path or URL used for each image in the PDF receipt; return an empty string to drop the image.

**Parameters**
`$resolved` (string) The resolved image source.
`$src` (string) The original image src in the HTML.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · localize_images()

`wp_easycart_pdf_receipt_min_memory` PRO
Filters the minimum memory limit required before a PDF receipt is generated; return 0 to skip the check.

**Parameters**
`$floor` (int) Minimum memory in bytes, default MIN_MEMORY.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · memory_error()

`wp_easycart_pdf_receipt_normalized_html` PRO
Filters the PDF receipt HTML after its layout has been normalized for the PDF engine.

**Parameters**
`$html` (string) Normalized HTML.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · normalize_layout()

`wp_easycart_pdf_receipt_paper` PRO
Filters the paper size of the PDF receipt.

**Parameters**
`$paper` (string) letter or a4, chosen from the site locale by default.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · paper_size()

`wp_easycart_pdf_receipt_template` PRO
Filters the template file path used to build the PDF receipt.

**Parameters**
`$path` (string) Absolute path to the template file.

Fires in inc/classes/core/wp_easycart_pdf_receipt.php · template_path()

`wp_easycart_pdf_receipt_title` PRO
Filters the heading text (Receipt or Invoice) shown on the PDF receipt.

**Parameters**
`$title` (string) The heading text.
`$order` (object) The order.

Fires in design/layout/base-responsive-v3/ec_invoice_pdf.php +1 more place

`wp_easycart_show_payment_pending_notice`
Filters whether an order that is not approved yet says its payment is still being processed, on the receipt email, the order confirmation page and the order’s page in My Account.

**Parameters**
`$show` (bool) The Payment pending notice setting.
`$order` (object|null) The order.

Fires in wpeasycart.php · wp_easycart_show_payment_pending_notice()

`wp_easycart_store_note`
Filters a store-wide note for buyers as saved (Settings > Documents > Notes for buyers), before it is checked for content.

**Parameters**
`$note` (string) The note’s HTML.
`$place` (string) confirmation, email or account.

Fires in inc/classes/core/class-wp-easycart-store-notes.php · note()

`wp_easycart_store_note_applies`
Filters whether a store-wide note for buyers shows for an order, after its Show on choice is applied.

**Parameters**
`$show` (bool) Whether it shows.
`$order_id` (int) The order id.
`$place` (string) confirmation, email or account.
`$when` (string) all, downloads, members or ships.

Fires in inc/classes/core/class-wp-easycart-store-notes.php · applies()

`wp_easycart_store_note_html`
Filters the finished HTML of a store-wide note for buyers for one order.

**Parameters**
`$html` (string) The note.
`$order_id` (int) The order id.
`$place` (string) confirmation, email or account.

Fires in inc/classes/core/class-wp-easycart-store-notes.php · html()

`wp_easycart_success_page_facts`
Filters the order details listed on the order confirmation page, such as the date, payment, shipping method and email.

**Parameters**
`$facts` (array\[\]) Each: key (date, payment, shipping, email, coupon, giftcard, vat_number or notes), label and value as plain text.
`$order` (ec_orderdisplay) The order.

Fires in inc/classes/core/class-wp-easycart-order-confirmation.php · facts()

`wp_easycart_success_page_lines`
Filters the items listed on the order confirmation page.

**Parameters**
`$lines` (array\[\]) Each line: id, title, sku, options, quantity, total and image.
`$order` (ec_orderdisplay) The order.

Fires in inc/classes/core/class-wp-easycart-order-confirmation.php · lines()

`wp_easycart_success_page_summary`
Filters whether the order confirmation page shows the order’s items, totals, details and addresses under the thank-you card; the Elementor Order Confirmation widget returns false because it draws its own.

**Parameters**
`true` (bool) Show it, true by default.
`$order` (ec_orderdisplay) The order.

Fires in inc/classes/core/class-wp-easycart-order-confirmation.php · enabled()

`wp_easycart_success_page_totals`
Filters the totals rows on the order confirmation page, from Subtotal to Order Total.

**Parameters**
`$rows` (array\[\]) Each row: key (subtotal, tip, shipping, tax, offer, discount, duty, vat, gst, pst, hst, fee, refund or total), label and amount as plain text.
`$order` (ec_orderdisplay) The order.

Fires in inc/classes/core/class-wp-easycart-order-confirmation.php · totals()

`wp_easycart_withdrawal_applies`
Filters whether the EU withdrawal button applies to an order at all; whether its period is still open is then worked out line by line. Not asked while the button is off.

**Parameters**
`$applies` (bool) True unless the order is a draft, an unpaid or failed attempt, refunded or cancelled, a subscription renewal, or (with Offer it on set to Orders to the EU and the EEA) billed and shipped outside those countries. An order with no country gets it.
`$order` (object) The ec_order row.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · applies()

`wp_easycart_withdrawal_countries`
Filters the countries whose orders get the EU withdrawal button when Offer it on is Orders to the EU and the EEA. The same list decides whether the store itself is in the EU, which switches the button on when the setting is first created.

**Parameters**
`$list` (string\[\]) ISO country codes, by default the 27 EU countries (Greece as GR and EL) plus Iceland, Liechtenstein and Norway.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · eu_countries()

`wp_easycart_withdrawal_enabled`
Filters whether the EU withdrawal button is on. Asked only once the database update that adds withdrawal statements has run; before that the button is off.

**Parameters**
`$on` (bool) The Withdrawal button setting under Settings › Checkout › Withdrawal button (EU). Its first value is on for a store in the EU or the EEA and off for other stores.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · enabled()

`wp_easycart_withdrawal_line_exempt`
Filters whether an order line has no right of withdrawal (made to order, perishable, sealed hygiene goods and so on); return true to leave it out of the withdrawal form.

**Parameters**
`$exempt` (bool) The product’s No right of withdrawal switch in Product Behaviors, false by default.
`$row` (object) The order line: ec_orderdetail columns plus no_withdrawal.
`$order` (object) The ec_order row.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · window()

`wp_easycart_withdrawal_order_dates`
Filters when an order was placed, shipped and delivered, the dates its EU withdrawal period counts from.

**Parameters**
`$dates` (array) Keys ordered, shipped and delivered (Unix times, 0 when not known) and all_shipped (bool: every outgoing package has left).
`$order` (object) The ec_order row.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · order_dates()

`wp_easycart_withdrawal_settings`
Filters the EU withdrawal button’s settings. A days value below 14 is raised back to 14.

**Parameters**
`$settings` (array) Keys scope (eu or all), days (14 to 365), start (delivered, shipped or ordered: when the days start for items that ship), allowance (days allowed for delivery after shipping when no delivery is recorded, 0 to 60) and footer (bool: the button at the foot of every page).

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · settings()

`wp_easycart_withdrawal_window`
Filters an order’s EU withdrawal period line by line, which the withdrawal form, the buttons, the emails and each saved statement read.

**Parameters**
`$window` (array) Keys order_id, lines (each with id, product_id, title, options, quantity, available, withdrawn, ships, start, deadline, exempt and state: open, exempt, withdrawn, refunded or closed), open (any line open), deadline (the latest open line’s, 0 while one has not started), pending, withdrawn (a statement covers the whole order) and dates.
`$order` (object) The ec_order row.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · window()

### Customers and accounts

Grouped by what they are about

`wp_easycart_account_activate_account_link`
Filters the URL of the account page’s activate_account screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=activate_account query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_billing_information_link`
Filters the URL of the account page’s billing_information screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=billing_information query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_dashboard_link`
Filters the URL of the account page’s dashboard screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=dashboard query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_downloads_link`
Filters the URL of the account page’s Downloads screen returned by the account links helper.

**Parameters**
`$url` (string) Account page URL with the ec_page=downloads query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_forgot_password_link`
Filters the URL of the account page’s forgot_password screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=forgot_password query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_link`
Filters the base account page URL returned by the account links helper when no specific account screen is requested.

**Parameters**
`$url (string)` Account page URL.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_list_per_page`
Filters how many items a page of a My Account list shows. Default 10; the result is kept between 1 and 100.

**Parameters**
`$per_page` (int) Items per page (10).
`$name` (string) The list: orders or downloads.

Fires in inc/classes/core/class-wp-easycart-account-lists.php · per_page()

`wp_easycart_account_login_link`
Filters the URL of the account page’s login screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=login query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_logout_link`
Filters the URL of the account page’s logout screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=logout query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_logout_redirect_url`
Filters the URL the shopper is redirected to after logging out of their account.

**Parameters**
`$url (string)` Redirect URL; defaults to the account login page.

Fires in inc/classes/account/ec_accountpage.php · process_logout()

`wp_easycart_account_modern_layout`
Filters whether the My Account pages use the current layout: one account menu beside every signed-in page, breadcrumbs and the orders as cards. Return false to keep the older markup.

**Parameters**
`$modern` (bool) True, except inside the Elementor account widgets.
`$this` (ec_accountpage) The account page.

Fires in admin/elementor/modules/account/includes/class-wp-easycart-elementor-account-page.php · account_modern() +1 more place

`wp_easycart_account_order_details_link`
Filters the URL of the account page’s order_details screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=order_details query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_order_tone`
Filters the colour of an order’s status badge in My Account.

**Parameters**
`$tone` (string) waiting, paid, done, refunded or closed, worked out from the order status.
`$this` (ec_orderdisplay) The order.

Fires in inc/classes/account/ec_orderdisplay.php · account_tone()

`wp_easycart_account_orders_link`
Filters the URL of the account page’s orders screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=orders query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_page_id`
Filters the ID of the page used as the account page, letting multilingual or custom setups substitute another page.

**Parameters**
`$page_id` Account page ID from the ec_option_accountpage setting.

Fires in wpeasycart.php · load_ec_pre() +31 more places

`wp_easycart_account_page_url`
Filters the account page URL used by the Elementor account widgets and other account templates.

**Parameters**
`$account_page (string)` Account page URL.

Fires in admin/elementor/wp-easycart-elementor-account-billing-widget.php +7 more places

`wp_easycart_account_password_link`
Filters the URL of the account page’s password screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=password query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_payment_methods_enabled`
Filters whether My Account can have a Payment methods page. Default true when the store has Stripe subscriptions shown in My Account.

**Parameters**
`$enabled` (bool) Whether the page is available.

Fires in inc/classes/core/class-wp-easycart-payment-methods.php · enabled()

`wp_easycart_account_payment_methods_link`
Filters the URL of the account page’s payment_methods screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=payment_methods query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_payment_methods_listed`
Filters whether My Account lists the Payment methods page for a customer. Default true when the store has Stripe subscriptions and this customer has one.

**Parameters**
`$listed` (bool) Whether the page is listed.
`$user` (ec_user) The customer.

Fires in inc/classes/core/class-wp-easycart-payment-methods.php · listed()

`wp_easycart_account_payment_methods_view`
Filters the data a customer’s Payment methods page is drawn from, before it is cached for the request.

**Parameters**
`$view` (array) The page data.
`$user` (ec_user) The customer.

Fires in inc/classes/core/class-wp-easycart-payment-methods.php · view()

`wp_easycart_account_personal_information_link`
Filters the URL of the account page’s personal_information screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=personal_information query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_print_receipt_link`
Filters the URL of the account page’s print_receipt screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=print_receipt query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_register_link`
Filters the URL of the account page’s register screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=register query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_reset_password_link`
Filters the URL of the account page’s reset_password screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=reset_password query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_shipping_information_link`
Filters the URL of the account page’s shipping_information screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=shipping_information query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_subscription_details_link`
Filters the URL of the account page’s subscription_details screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=subscription_details query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_account_subscriptions_link`
Filters the URL of the account page’s subscriptions screen returned by the account links helper.

**Parameters**
`$url (string)` Account page URL with the ec_page=subscriptions query argument appended.

Fires in inc/classes/core/wpeasycart_links.php · get_account_page()

`wp_easycart_address_label_keys`
Filters which address label phrases each country uses for its region and postcode fields.

**Parameters**
`$keys` (array) ISO country code => array( region key, postal key ).

Fires in inc/classes/core/class-wp-easycart-regions.php · label_keys()

`wp_easycart_address_layouts`
Filters the city, region and postcode layout of addresses by country, written with the tokens %C, %S, %Z and %n.

**Parameters**
`$layouts` (array) ISO country code => layout.

Fires in inc/classes/core/class-wp-easycart-address.php · layouts()

`wp_easycart_address_lines`
Filters the lines of a formatted address before they are returned.

**Parameters**
`$lines` (array) The address lines.
`$parts` (array) The address parts.
`$args` (array) The arguments the address was rendered with.

Fires in inc/classes/core/class-wp-easycart-address.php · render()

`wp_easycart_address_no_postcode`
Filters the countries that have no postcodes; address forms leave the postcode out for them.

**Parameters**
`$none` (array) ISO country codes.

Fires in inc/classes/core/class-wp-easycart-address.php · no_postcode()

`wp_easycart_admin_role_remote_panels`
Filters the list of remote admin panels that can be granted to a user role.

**Parameters**
`$base` (array) panel slug => translated panel label

Fires in admin/inc/wp_easycart_admin_user_role_table.php · panels()

`wp_easycart_admin_subscriber_list_columns`
Filters the columns shown in the admin subscriber list table.

**Parameters**
`$columns` (array) column definitions with name, label, format, select, orderby and responsive-hide keys

Fires in admin/inc/wp_easycart_admin_subscriber_table.php · setup()

`wp_easycart_admin_user_activity_detail_bits` PRO
Filters the list of detail snippets shown next to an entry in the admin customer activity timeline.

**Parameters**
`$bits` (array) escaped HTML detail strings
`$row` (object) the activity row
`$meta` (array) the activity’s metadata

Fires in admin/inc/wp_easycart_admin_user_activity_pro_v2.php · render_detail()

`wp_easycart_admin_user_bulk_edit_data`
Filters the data written to each customer when a bulk edit is applied in the admin user list.

**Parameters**
`$data` (array) column => value to update
`$_POST` (array) the submitted bulk edit request

Fires in admin/inc/wp_easycart_admin_user_table.php · ecv2_user_bulk_edit()

`wp_easycart_admin_user_bulk_edit_handled`
Lets an extension report the customer accounts it changed itself during a bulk edit on the Customers list, outside the ec_user columns (such as WP EasyCart PRO’s Add Tag). Those accounts count as updated and get wpeasycart_admin_user_updated, so an edit with only such changes is no longer refused with No changes selected.

**Parameters**
`array()` (int\[\]) Ids of the accounts you changed, empty by default; ids outside the selection are dropped.
`$ids` (int\[\]) The selected account ids.
`$_POST` (array) The bulk edit request.

Fires in admin/inc/wp_easycart_admin_user_table.php · ecv2_user_bulk_edit()

`wp_easycart_admin_user_cell_content`
Filters the HTML for a custom cell in the admin user list. Return a non-empty string to replace the default cell output.

**Parameters**
`$html` (string) custom cell HTML, empty by default
`$result` (object) the user row
`$col` (array) the column definition
`$table` (object) the user table instance

Fires in admin/inc/wp_easycart_admin_user_table.php · print_cell_content()

`wp_easycart_admin_user_details_v2_delete_warning`
Filters an extra warning shown before a customer is deleted on the version 2 customer details screen.

**Parameters**
`$delete_warning` (string) warning text, empty by default
`$user` (object) the customer being edited

Fires in admin/template/users/users/user-details-v2.php

`wp_easycart_admin_user_details_v2_tab_groups`
Filters the tab groups (Profile, Commerce, Insights and so on) on the version 2 customer details screen.

**Parameters**
`$tab_groups` (array) group slug => label

Fires in admin/template/users/users/user-details-v2.php

`wp_easycart_admin_user_details_v2_tabs`
Filters the tabs on the version 2 customer details screen, including each tab’s label, icon, group and description.

**Parameters**
`$tabs` (array) tab slug => array with label, icon, group, desc
`$user` (object) the customer being edited

Fires in admin/template/users/users/user-details-v2.php

`wp_easycart_admin_user_filter_callback_where`
Filters the SQL WHERE fragment for a callback-based filter in the admin user list, such as a spend range or last-order recency.

**Parameters**
`$where` (string) SQL fragment, empty by default
`$callback_key` (string) the filter’s callback key
`$value` (mixed) the selected filter value
`$filter` (array) the filter definition

Fires in admin/inc/wp_easycart_admin_user_table.php · get_filter_callback_where()

`wp_easycart_admin_user_health_filter_where`
Filters the SQL WHERE fragment for a health-strip filter in the admin user list, such as customers with orders or VIPs.

**Parameters**
`$where` (string) SQL fragment, empty by default
`$filter_key` (string) the selected health filter key

Fires in admin/inc/wp_easycart_admin_user_table.php · get_health_filter_where()

`wp_easycart_admin_user_identity_flags`
Filters the small identity flags (icons with titles) shown beside a customer in the admin user list.

**Parameters**
`$flags` (array) flags, each an array with icon, title and cls
`$result` (object) the user row

Fires in admin/inc/wp_easycart_admin_user_table.php · print_user_flags()

`wp_easycart_admin_user_inline_fields`
Filters the list of customer fields that can be edited inline in the admin user list.

**Parameters**
`$allowed_fields` (array) editable field names, first_name and last_name by default

Fires in admin/inc/wp_easycart_admin_user_table.php · ecv2_user_inline_update()

`wp_easycart_admin_user_list_bulk_edit_fields`
Filters the fields offered in the admin user list bulk edit panel.

**Parameters**
`$fields` (array) bulk edit field definitions with name, label, type and options

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_columns`
Filters the columns of the admin user list table.

**Parameters**
`$columns` (array) column definitions
`$pro_gate` whether Pro features are available, as set by the user table

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_filters`
Filters the filter controls available above the admin user list table.

**Parameters**
`$filters` (array) filter definitions
`$pro_gate` whether Pro features are available, as set by the user table

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_health_stats`
Filters the health statistics strip shown above the admin user list.

**Parameters**
`$health_stats` (array) stat definitions with label, value, filter_value, color and group
`$health_data` (array) the computed health counts
`$pro_gate` whether Pro features are available, as set by the user table

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_row_menu`
Filters the row action menu items in the admin user list.

**Parameters**
`$actions` (array) menu items with label, name, icon and action or href
`$pro_gate` whether Pro features are available, as set by the user table

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_search_columns`
Filters the database columns searched by the admin user list search box.

**Parameters**
`$columns` (array) column names such as ec_user.email

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_list_spreadsheet_columns`
Filters the columns of the spreadsheet view of the admin user list.

**Parameters**
`$columns` (array) column definitions with name, label, format and ss_editable

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_user_overview_carts` PRO
Filters the abandoned carts data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$abandoned_carts` the abandoned carts data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_carts_link` PRO
Filters the admin link to the abandoned carts screen pre-filtered to a customer’s email.

**Parameters**
`$url` (string) relative admin URL with the ec_email query argument
`$email` (string) the customer’s email

Fires in admin/inc/wp_easycart_admin_user_pro.php · carts_link()

`wp_easycart_admin_user_overview_download_nonce_action` PRO
Filters the nonce action used when creating download links in the customer overview.

**Parameters**
`$nonce_action` (string) nonce action, default ‘wp-easycart-action-edit’

Fires in admin/inc/wp_easycart_admin_user_pro.php · download_link()

`wp_easycart_admin_user_overview_downloads` PRO
Filters the downloads data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$downloads` the downloads data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_file`
Filters the path of the template file used to print the admin customer overview.

**Parameters**
`$file` (string) path to user-overview.php
`$details` (object) the customer details screen object

Fires in admin/inc/wp_easycart_admin_details_user.php · print_customer_overview()

`wp_easycart_admin_user_overview_giftcard_nonce_action` PRO
Filters the nonce action used when creating gift card links in the customer overview.

**Parameters**
`$nonce_action` (string) nonce action, default ‘wp-easycart-action-edit’

Fires in admin/inc/wp_easycart_admin_user_pro.php · giftcard_link()

`wp_easycart_admin_user_overview_giftcards` PRO
Filters the gift cards data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$giftcards` the gift cards data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_notes` PRO
Filters the notes feed data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$notes_feed` the notes feed data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_order_items` PRO
Filters the order line items data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$order_items` the order line items data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_orders` PRO
Filters the orders data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$orders` the orders data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_orders_per_page` PRO
Filters how many orders are shown per page in the customer overview (default 20).

**Parameters**
`$per_page` (int) orders per page, default 20
`$user` (object|null) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · get_orders_per_page()

`wp_easycart_admin_user_overview_stats` PRO
Filters the order statistics data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$order_stats` the order statistics data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_subscription_link` PRO
Filters the admin link to a subscription from the customer overview.

**Parameters**
`$url` (string) relative admin URL for editing the subscription
`$subscription_id` (int) the subscription id

Fires in admin/inc/wp_easycart_admin_user_pro.php · subscription_link()

`wp_easycart_admin_user_overview_subscriptions` PRO
Filters the subscriptions data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$subscriptions` the subscriptions data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_admin_user_overview_top_products` PRO
Filters the top purchased products data loaded for the customer overview on the admin customer details screen.

**Parameters**
`$top_products` the top purchased products data, as loaded for the overview
`$user` (object) the customer

Fires in admin/inc/wp_easycart_admin_user_pro.php · load_customer_overview()

`wp_easycart_elementor_account_menu_items`
Filters the links shown in the Elementor account menu widget.

**Parameters**
`$items (array)` List of menu items, each with text and url.
`$settings (array)` The widget settings.
`$views (array)` The account views available.

Fires in admin/elementor/modules/account/widgets/class-wp-easycart-elementor-account-widget.php · menu_links()

`wp_easycart_elementor_form_subscribe`
Filters whether an Elementor Pro form submission also subscribes the visitor to the store’s email list; return false to skip.

**Parameters**
`$subscribe (bool)` Whether to subscribe; true by default.
`$email (string)` The submitted email address.
`$record (object)` Elementor Pro’s form record.

Fires in admin/elementor/modules/dynamic/pro/class-wp-easycart-elementor-dynamic-form-action.php · run()

`wp_easycart_email_lookup_limits`
Filters how many emails the storefront may say have an account or not, by session, IP address and site-wide surge.

**Parameters**
`$limits` (array) session_hour (6), ip_hour (12), ip_day (40), check_session (2), check_ip (3), surge_hour (150) and surge_ip_hour (3).

Fires in inc/classes/core/class-wp-easycart-email-lookups.php · limits()

`wp_easycart_max_filesize_upload_limit`
Filters the maximum size in bytes allowed for customer file uploads.

**Parameters**
`$max` (int) maximum upload size in bytes, capped by PHP’s upload limits

Fires in inc/classes/core/class-wp-easycart-customer-uploads.php · max_size()

`wp_easycart_membership_product_ids`
Filters which products’ purchase opens a membership for the products a \[ec_membership\] shortcode or a page’s Limit Access box names. WP EasyCart PRO adds a plan’s other billing period and, when its plan group allows, the higher tiers.

**Parameters**
`$ids` (int\[\]) The product ids asked for.
`$user_id` (int) The ec_user id.

Fires in inc/classes/core/class-wp-easycart-storefront-access.php · has_membership()

`wp_easycart_minimum_password_length`
Filters the minimum password length required when a shopper resets their password.

**Parameters**
`$min_length` (int) minimum length, default 6

Fires in inc/classes/account/ec_accountpage.php · process_reset_password() +2 more places

`wp_easycart_order_lookup_view`
Filters what the guest order lookup form shows, the form where a shopper without an account enters an order number and email to be sent the order’s link (\[ec_order_lookup\], the account page and the withdrawal page).

**Parameters**
`$lookup` (array) heading, embedded, values (order_ref, email), errors, sent, check and action (the form address).

Fires in inc/classes/core/class-wp-easycart-order-lookup.php · render()

`wp_easycart_page_access_customer_pages`
Filters the limited pages a customer can open, as listed in My Account.

**Parameters**
`$out` (array) Post id => title and url.
`$user_id` (int) The ec_user id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · pages_for()

`wp_easycart_page_access_decision`
Filters what a visitor gets on a limited post.

**Parameters**
`$decision` (array) allowed and state.
`$post_id` (int) The post id.
`$rule` (array) The post’s rule.

Fires in inc/classes/core/class-wp-easycart-page-access.php · decide()

`wp_easycart_page_access_exempt`
Filters whether a post can never be limited by Limit Access.

**Parameters**
`$exempt` (bool) Whether the post is exempt.
`$post_id` (int) The post id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · exempt()

`wp_easycart_page_access_message_html`
Filters the members-only view shown on the account page for a limited post.

**Parameters**
`$out` (string) The HTML.
`$post_id` (int) The limited post id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · message_html()

`wp_easycart_page_access_post_types`
Filters the post types that show WP EasyCart Limit Access.

**Parameters**
`$types` (string\[\]) Post types.

Fires in inc/classes/core/class-wp-easycart-page-access.php · post_types()

`wp_easycart_page_access_rule`
Filters a post’s Limit Access rule. The result is merged over the default rule.

**Parameters**
`$rule` (array) The rule.
`$post_id` (int) The post id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · rule()

`wp_easycart_page_access_staff`
Filters whether the current user counts as staff for a limited page; staff see it and are never sent away.

**Parameters**
`$staff` (bool) Whether the user is staff.
`$post_id` (int) The post id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · is_staff()

`wp_easycart_password_reset_token_lifetime`
Filters how long a customer’s password reset link stays valid, in seconds.

**Parameters**
`$lifetime` (int) Lifetime in seconds, default HOUR_IN_SECONDS.

Fires in wpeasycart.php · wp_easycart_generate_password_reset_token()

`wp_easycart_recaptcha_ready`
Filters whether reCAPTCHA is shown and checked; return false to leave it off. By default it needs the switch on, both keys saved and a passed key test, and on checkout forms the Also protect checkout switch too.

**Parameters**
`(bool) $ready` (bool) Whether reCAPTCHA can run, worked out as above.
`(string) $place` (string) cart for the checkout forms, or empty for the account and other storefront forms.

Fires in wpeasycart.php · wp_easycart_recaptcha_ready()

`wp_easycart_region_required`
Filters whether a country’s region must be chosen at checkout and in My Account.

**Parameters**
`$required` (bool) Whether the region is required.
`$iso2` (string) The country code.

Fires in inc/classes/core/class-wp-easycart-regions.php · required()

`wp_easycart_restrict_access_without_redirect`
Lets a page’s WP EasyCart Limit Access box lock the page even when none of its redirect addresses is set; return true to apply the limits anyway (signed-out visitors go to the account sign-in page, visitors without access to the store page).

**Parameters**
`false` (bool) Apply the limits with no redirect address, false by default.
`get_the_ID()` (int) The page id.

Fires in inc/classes/core/class-wp-easycart-page-access.php · legacy()

`wp_easycart_store_is_restricted`
Filters whether the store is restricted for the current visitor because their customer role is not among the allowed roles.

**Parameters**
`$restricted` (bool) True when the visitor’s role is not among the chosen ones.
`$level` (string) The visitor’s EasyCart user level, empty when signed out.

Fires in wpeasycart.php · wp_easycart_store_is_restricted() +1 more place

`wp_easycart_subscriber_ip`
Filters the IP address recorded with a newsletter sign-up consent.

**Parameters**
`$ip` (string) IP address.
`$source` (string) Sign-up source slug.
`$email` (string) Email address being signed up.

Fires in inc/classes/core/class-wp-easycart-subscribers.php · consent()

`wp_easycart_subscriber_source`
Filters the source slug recorded for a newsletter sign-up, such as checkout, account, register, newsletter, admin or other.

**Parameters**
`$source` (string) Source slug.

Fires in inc/classes/core/class-wp-easycart-subscribers.php · source()

`wp_easycart_subscriber_source_labels`
Filters the display names for newsletter sign-up sources; an extension can add its own slug.

**Parameters**
`$labels` (array) Source slug => label.

Fires in inc/classes/core/class-wp-easycart-subscribers.php · source_labels()

`wp_easycart_subscription_set_password_html`
Filters the set a password card shown after a purchase created the account (a subscription, or an order that needs an account).

**Parameters**
`$html` (string) The markup.
`$user_id` (int) The account id.

Fires in inc/classes/core/class-wp-easycart-subscription-signup.php · card_html()

`wp_easycart_sync_wordpress_users`
Filters whether the older WordPress User Sync plugin copies accounts itself.

**Parameters**
`$legacy` (bool) Default false.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · legacy()

`wp_easycart_use_wordpress_user`
Filters whether the WordPress login decides who the store customer is.

**Parameters**
`$use_wordpress_user` (bool) Default false.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · wp_mode() +2 more places

`wp_easycart_user_activity_enabled`
Filters whether customer activity logging is enabled.

**Parameters**
`$enabled` (bool) Default from the user activity setting.

Fires in inc/classes/core/ec_user_activity.php · is_enabled()

`wp_easycart_user_activity_retention_days`
Filters how many days customer activity is kept before it is purged; 0 keeps it forever.

**Parameters**
`$days` (int) Retention days, default from the setting (365).

Fires in inc/classes/core/ec_user_activity.php · run_retention_purge()

`wp_easycart_user_activity_should_log`
Filters whether a customer activity entry is recorded.

**Parameters**
`$should_log` (bool) Default true.
`$user_id` (int) Customer user id.
`$type` (string) Activity type.
`$args` (array) Activity details.

Fires in inc/classes/core/ec_user_activity.php · log()

`wp_easycart_user_activity_store_ip`
Filters whether the visitor’s IP address is stored with customer activity; return false to store none.

**Parameters**
`$store_ip` (bool) Default true.

Fires in inc/classes/core/ec_user_activity.php · capture_ip()

`wp_easycart_user_activity_types`
Filters the known customer activity types, letting extensions register their own.

**Parameters**
`$types` (array) Activity type slug => array( label, icon ).

Fires in inc/classes/core/ec_user_activity.php · get_types()

`wp_easycart_user_has_membership`
Filters whether a store account holds a membership for any of the given products, the answer the \[ec_membership\] and \[ec_membership_alt\] shortcodes and the Limit Access page lock use. Asked only for a signed-in account and at least one product.

**Parameters**
`$has_membership` (bool) The store’s answer: a subscription in a member status or an installment plan paid in full, or, for any other product, a paid order holding it.
`$user_id` (int) The ec_user id.
`$ids` (int\[\]) The product ids, after wp_easycart_membership_product_ids.

Fires in inc/classes/core/class-wp-easycart-storefront-access.php · has_membership()

`wp_easycart_wordpress_user_create_store_account`
Filters whether a store account is created for a WordPress user who has none.

**Parameters**
`$create` (bool) Default true.
`$wp_user` (WP_User) The WordPress user.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · resolve_store_account()

`wp_easycart_wordpress_user_store_account`
Filters the existing store account matched by email to a WordPress user.

**Parameters**
`$store_user_id` (int) Store account id with the same email.
`$wp_user` (WP_User) The WordPress user.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · resolve_store_account()

`wpeasycart_account_email_change_error`
Filters the reason a customer may not change their account email; an empty string allows the change.

**Parameters**
`$error` (string) Empty or a short reason code.
`$store_user_id` (int) Store account id.
`$new_email` (string) New email.
`$old_email` (string) Current email.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · email_change_error()

`wpeasycart_account_email_exists`
Filters whether a store account already uses an email address.

**Parameters**
`$exists` (bool) True when a store account has the email.
`$email` (string) The email address.

Fires in inc/classes/core/class-wp-easycart-wordpress-users.php · email_taken()

`wpeasycart_account_error`
Filters the error message text shown on the account page for an account error code.

**Parameters**
`$error_text` (string) Error message text.
`$error_code` (string) The account_error code from the URL.

Fires in admin/elementor/wp-easycart-elementor-account-dashboard-messages-widget.php +2 more places

`wpeasycart_account_success`
Filters the success message text shown on the account page for an account success code.

**Parameters**
`$success_text` (string) Success message text.
`$success_code` (string) The account_success code.

Fires in admin/elementor/wp-easycart-elementor-account-dashboard-messages-widget.php +2 more places

`wpeasycart_custom_verify_new_password`
Lets a plugin reject a new account password (on reset and on change) by returning true.

**Parameters**
`$is_invalid (bool)` False by default; return true to reject the password.
`$new_password (string)` The new password as entered, unsanitized.

Fires in inc/classes/account/ec_accountpage.php · process_reset_password() +2 more places

`wpeasycart_forgot_password_link`
Filters the forgot password link HTML shown on the account login page.

**Parameters**
`$link_html (string)` HTML anchor to the forgot password page.

Fires in admin/elementor/wp-easycart-elementor-account-dashboard-messages-widget.php +2 more places

`wpeasycart_password_hash` Enable WP Users Zapier
Filters the password hash saved for a store customer.

**Parameters**
`$hash (string)` Hash created by wp_easycart_hash_password.
`$password (string)` The plain password the hash is made from.

Fires in wpeasycart.php · ec_ajax_subscription_create_account() +21 more places

`wpeasycart_password_needs_rehash`
Filters whether a stored password hash should be rehashed with the current algorithm.

**Parameters**
`$needs (bool)` Whether the hash needs a rehash.
`$stored_hash (string)` The stored hash.

Fires in wpeasycart.php · wp_easycart_password_needs_rehash()

`wpeasycart_password_verify`
Filters whether a password entered by a customer matches the stored hash.

**Parameters**
`$verified (bool)` Whether the password verified.
`$raw_password (string)` Password as entered.
`$stored_hash (string)` Stored hash.
`$user (object)` The customer record.

Fires in wpeasycart.php · wp_easycart_verify_password()

`wpeasycart_register_js_function`
Filters the JavaScript run when the shopper clicks the register button on the account registration form.

**Parameters**
`$js_function (string)` JavaScript for the onclick attribute; defaults to ‘return ec_account_register_button_click2( );’.

Fires in admin/elementor/wp-easycart-elementor-account-register-widget.php +1 more place

`wpeasycart_show_account_page`
Filters whether the account page is displayed.

**Parameters**
`$show (bool)` Whether to show the page; defaults to true.

Fires in inc/classes/account/ec_accountpage.php · display_account_page()

`wpeasycart_update_password_js_function`
Filters the JavaScript run when the customer clicks the save button on the change password form.

**Parameters**
`$js_function (string)` JavaScript for the onclick attribute; defaults to ‘return ec_account_password_button_click( );’.

Fires in admin/elementor/wp-easycart-elementor-account-password-widget.php +1 more place

### Subscriptions

Grouped by what they are about

`wp_easycart_admin_customer_info_fields_list` PRO
Filters the list of customer information fields shown on the admin subscription details screen.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and value.

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · customer_info_fields()

`wp_easycart_admin_paypal_info_fields_list` PRO
Filters the list of PayPal information fields shown on the admin subscription details screen.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and required.

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · paypal_info_fields()

`wp_easycart_admin_product_details_subscription_fields_list`
Filters the field definitions of the Subscription card in the product editor’s Type settings section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · subscription_fields()

`wp_easycart_admin_product_info_fields_list` PRO
Filters the field definitions in the product info section of the admin subscription details screen.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · product_info_fields()

`wp_easycart_admin_stripe_info_fields_list` PRO
Filters the field definitions in the Stripe info section of the admin subscription details screen.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · stripe_info_fields()

`wp_easycart_admin_subscription_plans_details_basic_fields_list` PRO
Filters the field definitions in the basic section of the admin subscription plan details screen.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys

Fires in admin/inc/wp_easycart_admin_details_subscription_plans.php · basic_fields()

`wp_easycart_admin_subscription_terms_fields_list` PRO
Filters the field definitions in the terms section (payment interval and related) of the admin subscription details screen.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · subscription_terms_fields()

`wp_easycart_admin_subscriptions_details_basic_fields_list` PRO
Filters the field definitions in the basic section of the admin subscription details screen.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys

Fires in admin/inc/wp_easycart_admin_details_subscriptions.php · basic_fields()

`wp_easycart_plan_group_product_title` PRO
Filters the title WP EasyCart PRO gives a plan group tier’s product for one billing period when the group is saved; it is the product title shown at checkout, on receipts and in My Account.

**Parameters**
`$title` (string) The tier name and Monthly or Yearly, joined by a dash, by default.
`$tier_name` (string) The tier’s name.
`$interval` (string) M1 (monthly) or Y1 (yearly).

Fires in inc/classes/core/wp_easycart_plan_groups_pro.php · product_title()

`wp_easycart_plan_table` PRO
Filters the finished HTML of a plan group’s pricing table drawn by WP EasyCart PRO, in either the cards or the compare-table layout.

**Parameters**
`$out` (string) The table HTML.
`$group` (object) The plan group: its plan row, settings and tiers, each with its products by billing period.
`$atts` (array) Keys id, interval, layout and head from the shortcode or widget.

Fires in inc/classes/core/wp_easycart_plan_groups_pro.php · table_html()

`wp_easycart_plan_table_html`
Filters the HTML of the \[ec_plan_table\] shortcode, which the Elementor Pricing Table widget also uses; WP EasyCart PRO draws the plan group’s pricing table here. Left empty, store managers see a note and visitors see nothing.

**Parameters**
`$html` (string) Empty by default; return the table HTML.
`$atts` (array) Keys id (the plan group), interval (m or y, the period the table opens on), layout (cards or table) and head (0 hides the group’s heading and intro).

Fires in wpeasycart.php · load_ec_plan_table()

`wp_easycart_stripe_subscription_billing_cycle_anchor` PRO
Filters the billing cycle anchor sent to Stripe when a subscription is created; a truthy value is used as the anchor.

**Parameters**
`$billing_cycle_anchor` (int|false) Anchor timestamp, default false.
`$product` (object) The subscription product.
`$subscription_options` (array) Chosen subscription options.
`$user` (object) The customer.

Fires in inc/classes/gateway/ec_stripe_connect.php · get_insert_subscription_data() +1 more place

`wp_easycart_stripe_subscription_insert_data` PRO
Filters the data sent to Stripe when a subscription is created.

**Parameters**
`$gateway_data` (array) Stripe subscription request data.
`$product` (object) The subscription product.
`$user` (object) The customer.
`$subscription_options` (array) Chosen subscription options.

Fires in inc/classes/gateway/ec_stripe_connect.php · get_insert_subscription_data() +1 more place

`wp_easycart_stripe_subscription_local_status`
Filters the store’s status for a Stripe subscription as the webhook records it.

**Parameters**
`$local` (string) Active, Failed, Canceled, canceling or paused.
`$subscription` (object) The Stripe subscription.

Fires in wpeasycart.php · wp_easycart_stripe_subscription_local_status()

`wp_easycart_stripe_subscription_status_map`
Filters the map from Stripe subscription statuses to WP EasyCart subscription statuses used when a Stripe webhook syncs a subscription.

**Parameters**
`$status_map` (array) Stripe status => WP EasyCart status, such as past_due => Failed.

Fires in wpeasycart.php · wp_easycart_stripe_subscription_local_status()

`wp_easycart_stripe_subscription_trial_end` PRO
Filters the trial end sent to Stripe when a subscription is created.

**Parameters**
`$trial_end` Trial end value for the new subscription.
`$product` (object) The subscription product.
`$subscription_options` (array) Chosen subscription options.
`$user` (object) The customer.

Fires in inc/classes/gateway/ec_stripe_connect.php · get_insert_subscription_data() +1 more place

`wp_easycart_stripe_subscription_update_data` PRO
Filters the data sent to Stripe when a subscription is updated.

**Parameters**
`$gateway_data` (array) Stripe subscription update data.
`$product` (object) The subscription product.
`$user` (object) The customer.
`$subscription_item_id` Stripe subscription item id.

Fires in inc/classes/gateway/ec_stripe_connect.php · get_update_subscription_data() +1 more place

`wp_easycart_stripe_subscriptions_log` PRO
Filters whether Stripe subscription API requests and errors are logged to the response log.

**Parameters**
`$log` (bool) Default true.

Fires in inc/classes/core/ec_stripe_subscriptions.php · log()

`wp_easycart_stripe_subscriptions_request_args` PRO
Filters the HTTP request arguments for Stripe subscription API calls.

**Parameters**
`$args` (array) wp_remote_request arguments, including headers, timeout and method.
`$method` (string) HTTP method.
`$url` (string) Request URL.

Fires in inc/classes/core/ec_stripe_subscriptions.php · request()

`wp_easycart_subscription_card_label`
Filters the name My Account gives a card brand or payment method.

**Parameters**
`$label` (string) The name.
`$key` (string) The brand key.

Fires in inc/classes/core/class-wp-easycart-subscription-cards.php · brand_label()

`wp_easycart_subscription_change_gateway`
Filters the Stripe gateway object that subscription plan changes and price moves send their Stripe requests through. Return an object with api() and get_subscription() methods, or false to turn the plan change engine off so a change applies at once through the older path.

**Parameters**
`$stripe` (object|false) The store’s ec_stripe (WP EasyCart PRO) or ec_stripe_connect gateway, or false when the store does not take payments through Stripe.

Fires in inc/classes/core/class-wp-easycart-subscription-changes.php · stripe()

`wp_easycart_subscription_change_rule`
Filters when a subscription plan change applies and what it charges; WP EasyCart PRO answers for plan groups. During a free trial a change still applies now and charges nothing, unless the rule sets trial to end.

**Parameters**
`$rule` (array) Keys when (now, renewal or none), charge (now, next or none), trial (keep or end), interval (same, longer or shorter) and direction (up, down or same). By default when is now, or none for a plan the plan list does not allow, and charge is now for another billing period, else next when the product prorates, else none.
`$from` (array) The subscription now: subscription_id, product_id, period, length, price, quantity and trial.
`$to` (array) The plan asked for: product_id, period, length, price, prorate and plan_id.
`$allowed` (bool) Whether the plan list allows the move (its price order and the Customers can also move to a lower-priced product setting).

Fires in inc/classes/core/class-wp-easycart-subscription-changes.php · rule()

`wp_easycart_subscription_choices_in_summary`
Filters whether the subscription page shows its choices (billing, the usage level) in the order summary; false shows them at the top of the page.

**Parameters**
`$inside` (bool) Whether the choices go in the summary.

Fires in inc/classes/core/class-wp-easycart-subscription-choices.php · in_summary()

`wp_easycart_subscription_customer_can`
Filters whether a customer may perform an action on a subscription, such as changing the plan.

**Parameters**
`$allowed` (bool) Whether the action is allowed.
`$action` (string) The action being checked.
`$subscription` (object) The subscription object.

Fires in inc/classes/core/ec_subscription.php · customer_can()

`wp_easycart_subscription_grand_total_label`
Filters the grand total label on the subscription cart page.

**Parameters**
`$label` (string) Label text, default the cart grand total text.
`$product` (object) The subscription product.

Fires in design/layout/base-responsive-v3/ec_cart_subscription.php +1 more place

`wp_easycart_subscription_level_label`
Filters a usage level as customers read it, such as “25,000 subscribers”.

**Parameters**
`$text` (string) The label.
`$level` (array|float) The level, or a number of units.
`$levels` (array) The product’s levels.

Fires in inc/classes/core/class-wp-easycart-subscription-levels.php · label()

`wp_easycart_subscription_level_title`
Filters a subscription’s title with its usage level. Default the title and the level joined by ” · “.

**Parameters**
`$titled` (string) The title with the level.
`$title` (string) The product’s title.
`$label` (string) The level.

Fires in inc/classes/core/class-wp-easycart-subscription-levels.php · title()

`wp_easycart_subscription_levels`
Filters a product’s usage levels. The result is cleaned and cached per product.

**Parameters**
`$levels` (array|null) The stored levels, or null for none.
`$product_id` (int) The product id.

Fires in inc/classes/core/class-wp-easycart-subscription-levels.php · of()

`wp_easycart_subscription_member_statuses`
Filters the subscription statuses that still count as holding the product, read by memberships, the already-subscribed check and the subscription page’s reminder of what a customer already has.

**Parameters**
`$statuses` (string\[\]) Active, trialing and canceling (cancelled at the end of the paid period) by default; an empty list falls back to Active.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · wp_easycart_subscription_member_statuses()

`wp_easycart_subscription_modifiers_display_list`
Filters the subscription advanced option rows displayed in the subscription cart totals.

**Parameters**
`$options` (array) Advanced options with labels.
`$product` (object) The subscription product.

Fires in design/layout/base-responsive-v3/ec_cart_subscription.php

`wp_easycart_subscription_modifiers_pre_db_insert`
Filters the subscription advanced options just before they are saved with the subscription order.

**Parameters**
`$advanced_options` (array) Selected advanced options from the cart data.
`$product` (object) The subscription product.

Fires in inc/classes/core/ec_db.php · insert_subscription_order()

`wp_easycart_subscription_options_guard`
Filters the result of checking the checkout session’s option choices for a subscription product, after choices that do not belong to it are taken out. A status of choose shows a notice linking to the product page instead of the subscription form, and stops the checkout.

**Parameters**
`$answer` (array) Keys status (ok or choose), changed (the session was changed), removed (what was taken out: other, basic, variant, advanced) and missing (option set ids still to choose).
`$product` (object) The subscription product.

Fires in inc/classes/core/class-wp-easycart-subscription-options.php · guard()

`wp_easycart_subscription_page_existing`
Lets an extension send a signed-in customer to change a subscription they already have instead of buying this product; return its subscription id to show a notice with a Change my plan link to My Account in place of the subscription form. WP EasyCart PRO answers for plan groups.

**Parameters**
`$subscription_id` (int) 0 by default (buy as usual).
`$product` (array|object) The product row.
`$user_id` (int) The ec_user id.

Fires in inc/classes/core/class-wp-easycart-subscription-changes.php · existing_for()

`wp_easycart_subscription_page_owned`
Filters the subscriptions a signed-in customer already has that the subscription page reminds them of above the form, when the product can be bought more than once; WP EasyCart PRO adds the plan group’s other plans.

**Parameters**
`$rows` (object\[\]) Each with subscription_id, product_id and title, newest first; by default the customer’s subscriptions to this product in a member status.
`$product` (array|object) The product row.
`$user_id` (int) The ec_user id.

Fires in inc/classes/core/class-wp-easycart-subscription-changes.php · owned_for()

`wp_easycart_subscription_password_after_purchase`
Filters whether a new customer goes straight to billing and payment, with the account made when they pay and the password chosen after (on the subscription page, and on a checkout that needs an account). Default from Settings > Checkout > Checkout form > New customers choose a password after paying.

**Parameters**
`$after` (bool) Whether the password is chosen after paying.

Fires in inc/classes/core/class-wp-easycart-subscription-signup.php · after_purchase()

`wp_easycart_subscription_payments_per_page`
Filters how many past payments a subscription’s page in My Account shows at a time before Load more. Default 10; never below 1.

**Parameters**
`$per_page` (int) Payments per page (10).
`$subscription` (object) The subscription shown (the account page’s subscription).

Fires in design/layout/base-responsive-v3/ec_account_subscription_details.php

`wp_easycart_subscription_plan_choices`
Filters the plans My Account’s Change plan panel offers a subscription, in the order shown; WP EasyCart PRO orders a plan group’s plans by tier, then monthly before yearly.

**Parameters**
`$choices` (array\[\]) Each with product_id, current, allowed, row (the plan’s product row), when (current, now or renewal) and note (plain text saying when it starts).
`$this` (ec_subscription) The subscription.

Fires in inc/classes/core/ec_subscription.php · get_plan_rows()

`wp_easycart_subscription_price_formatting`
Filters the recurring billing text appended to a subscription product’s price.

**Parameters**
`$ret_string` (string) Billing text, such as the interval and duration.
`$model_number` (string) Product model number.
`$product_id` (int) Product id.

Fires in inc/classes/core/ec_product.php · display_price() +3 more places

`wp_easycart_subscription_price_notice_days`
Filters the days of notice a subscriber gets before a price move takes them to the new price; the result is kept between 7 and 90.

**Parameters**
`$days` (int) The days asked for: 30 by default, or the Notice chosen on the Price changes card of WP EasyCart PRO’s plan group editor.

Fires in inc/classes/core/class-wp-easycart-subscription-changes.php · notice_days()

`wp_easycart_subscription_prices_gateway`
Filters the Stripe gateway class used for subscription prices and the store’s plan changes.

**Parameters**
`$gateway` (ec_stripe|ec_stripe_connect|false) The store’s Stripe class.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · gateway()

`wp_easycart_subscription_purchase_details`
Filters the purchase details gathered for a subscription, such as quantity, signup fee and options.

**Parameters**
`$details` (array) Purchase details.
`$subscription_id` Subscription id.
`$current_product_id` (int) Id of the product currently being viewed or managed.

Fires in inc/classes/core/ec_subscription.php · get_purchase_details_for()

`wp_easycart_subscription_quantity_allowed`
Filters whether a subscription product is sold by quantity.

**Parameters**
`$allowed` (bool) Whether it is sold by quantity.
`$product` (object|array|int) The product.

Fires in inc/classes/core/class-wp-easycart-subscription-levels.php · wp_easycart_subscription_quantity_allowed()

`wp_easycart_subscription_renewal_consent`
Filters whether the subscription page asks for a separate yes to automatic renewals (Settings > Checkout, A separate yes to subscription renewals).

**Parameters**
`$on` (bool) The setting’s answer.
`$value` (string) 1, 0 or auto.

Fires in inc/classes/core/class-wp-easycart-renewal-consent.php · enabled()

`wp_easycart_subscription_renewal_consent_text`
Filters the words of the renewal box on the subscription page, such as I agree that my plan renews automatically until I cancel.

**Parameters**
`$text` (string) The words.
`$product` (ec_product) The product.
`$plan` (array) The page’s figures.

Fires in inc/classes/core/class-wp-easycart-renewal-consent.php · text()

`wp_easycart_subscription_renewal_note`
Filters the note under the subscription page’s total that says the discount code stops before the subscription does and what it renews at; only asked when there is such a note. Return an empty string to hide it.

**Parameters**
`$text` (string) The note in plain text: the first-payment or first-months wording, with the renewal price filled in.
`$product` (object) The ec_product.
`$plan['coupon']` (array) The code on the checkout: row, stripe, code, amount_off, duration (once, repeating or forever) and months.
`$args` (array) What the page passed: code, quantity, option_total, shipping_total and taxed.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · wp_easycart_subscription_renewal_note()

`wp_easycart_subscription_shared_stripe_product`
Lets a subscription product share a Stripe product with other products when it has no usable Stripe product of its own; return that Stripe product’s id and the product’s price is made under it. WP EasyCart PRO uses it so a plan group tier’s monthly and yearly products share one Stripe product.

**Parameters**
`$stripe_product_id` (string) Empty by default (the product gets its own); a Stripe product id for the Stripe mode in use.
`$row` (object) The product row.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · ensure()

`wp_easycart_subscription_short_checkout`
Filters whether the subscription page asks only for the name, country, state and postcode when the subscription ships nothing. Default from Settings > Checkout > Checkout form > Short subscription checkout.

**Parameters**
`$enabled` (bool) Whether the short checkout is on.

Fires in inc/classes/core/class-wp-easycart-subscription-short.php · enabled()

`wp_easycart_subscription_short_checkout_applies`
Filters whether a subscription’s page uses the short form. Default true when the setting is on, nothing ships and no tax service needs the full address.

**Parameters**
`$applies` (bool) Whether the short form applies.
`$product` (ec_product) The subscription product.

Fires in inc/classes/core/class-wp-easycart-subscription-short.php · applies()

`wp_easycart_subscription_short_tax_service`
Filters the tax service that keeps subscriptions on the full billing address because it needs the street. Return ” to use the short form with a service that rates by postcode.

**Parameters**
`$id` (string) taxcloud, taxjar, another service id, or ”.

Fires in inc/classes/core/class-wp-easycart-subscription-short.php · tax_service()

`wp_easycart_subscription_stripe_product_name`
Filters the name kept on a subscription product’s Stripe product when its Stripe price is synced after a save; WP EasyCart PRO uses the plan group tier’s name.

**Parameters**
`$title` (string) The product title.
`$row` (object) The product row.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · sync()

`wp_easycart_subscription_stripe_sets_default`
Filters whether a subscription product’s Stripe price becomes its Stripe product’s default price when the product is synced after a save; a Stripe product with no default price gets it anyway. WP EasyCart PRO returns false for a plan group tier’s yearly product, so the monthly price stays the default.

**Parameters**
`$sets_default` (bool) True by default.
`$row` (object) The product row.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · sync()

`wp_easycart_subscription_summary_choices`
Filters the choices listed under the item in the subscription page’s summary. Default an empty array; lines without options are dropped.

**Parameters**
`$lines` (array) The choice lines.
`$product` (ec_product) The subscription product.

Fires in inc/classes/core/class-wp-easycart-subscription-choices.php · lines()

`wp_easycart_subscription_summary_title`
Filters the subscription item’s title in the summary while its choices show under it. An empty answer keeps the original title.

**Parameters**
`$title` (string) The product’s title (with its level).
`$product` (ec_product) The subscription product.

Fires in inc/classes/core/class-wp-easycart-subscription-choices.php · title()

`wp_easycart_subscription_tax_rates_pre_insert`
Filters the tax rates applied to a subscription when it is created through Stripe at checkout.

**Parameters**
`$tax_rates` (array) Stripe tax rates.
`$product` (object) The subscription product.
`$is_vat` (bool) True when the product has a VAT rate.
`$tax_ratio` (float) Order tax total divided by the taxable product amount.
`$sub_total` Order sub total.
`$shipping_total` Shipping total.

Fires in inc/classes/cart/ec_cartpage.php · submit_stripe_quick_subscription()

`wp_easycart_subscription_trial_text`
Filters the free trial line on the subscription page, which says when the trial ends and what the first payment is then; only asked for a product with a free trial.

**Parameters**
`$text` (string) The line in plain text, by default Your free trial ends on \[date\]. Your first payment of \[price\] is taken then., with the date and price filled in.
`$product` (object) The ec_product.
`$plan` (array) How the code on the checkout applies: amount (the renewal), first (the first charge), charges, months, coupon and args.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · wp_easycart_subscription_trial_text()

`wp_easycart_subscriptions_status`
Filters the subscription gateway status; array values are merged over the status, letting an add-on report the gateway as ready.

**Parameters**
`$status` (array) Subscription gateway status.

Fires in inc/classes/core/class-wp-easycart-subscription-gateway.php · status()

`wpeasycart_subscription_checkout_errors`
Lets a plugin add checkout error codes for a subscription purchase.

**Parameters**
`$codes (array)` Error codes; empty by default. Add text through wpeasycart_cart_errors.
`$product (ec_product)` The subscription product.
`$quantity (int)` Quantity.
`$cartpage (ec_cartpage)` The checkout page object.

Fires in inc/classes/cart/ec_cartpage.php · subscription_errors()

`wpeasycart_subscription_coupon`
Lets a plugin supply its own coupon for a subscription product; return a coupon object to use it instead of the built-in coupon lookup.

**Parameters**
`$coupon (object|false)` False by default, or a legacy-shaped coupon object.
`$promocode_id (string)` The coupon code.
`$product_id (int)` The subscription product id.

Fires in inc/classes/core/ec_coupons.php · subscription_coupon()

`wpeasycart_subscription_js_function`
Filters the JavaScript run when the shopper clicks the submit button on the subscription checkout form.

**Parameters**
`$js_function (string)` JavaScript for the onclick attribute; defaults to ‘return ec_validate_submit_subscription();’.

Fires in design/layout/base-responsive-v3/ec_cart_subscription.php

### Shipping

Grouped by what they are about

`ecv2_shipping_carrier_status`
Filters the connection status shown for a shipping carrier in the admin shipping settings; Pro answers with its connection checks.

**Parameters**
`$status (string)` Status: connected, error, incomplete, disabled, or empty string for no answer.
`$carrier (string)` Carrier being checked.

Fires in admin/template/settings/shipping-settings.php · ecv2_shipping_carrier_status()

`ecv2_shipping_carrier_status_detail`
Filters the status and note shown for a shipping carrier in the admin shipping settings, optionally re-checking the connection.

**Parameters**
`$detail (array)` Array with a status key (connected, error, incomplete, disabled) and a note key.
`$carrier (string)` Carrier being checked.
`$refresh (bool)` True to re-probe the carrier connection, such as after saving.

Fires in admin/template/settings/shipping-settings.php · ecv2_shipping_carrier_status_detail()

`wp_easycart_admin_product_details_shipping_fields_list`
Filters the shipping field definitions of the product editor: Ships to the customer, Charges and Where it goes in the Shipping section, and the Backorders card in Inventory.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · shipping_fields()

`wp_easycart_allow_shipping_method`
Filters whether the shipping method step is shown. Return a falsy value to stop it displaying.

**Parameters**
`$allow` (int) 1 to allow, default 1

Fires in inc/classes/cart/ec_cartpage.php · display_shipping_method()

`wp_easycart_carriers`
Filters the shipping carriers the order screens offer (Ship form, Fulfill window, Ship popover, Quick edit and Add tracking) and the tracking page each one links a tracking number to. Add, change or remove a carrier by key; an entry without a name is dropped.

**Parameters**
`$catalog` (array) Key => name, aliases, countries (ISO codes it ships from, empty for worldwide), track (tracking page with %s for the number), label_url, label_sub, keywords (| separated, matched to the order’s shipping method), mark, bg and fg (the carrier tile).

Fires in inc/classes/core/class-wp-easycart-carriers.php · catalog()

`wp_easycart_default_product_weight`
Filters the weight a product without one counts as when packages are worked out.

**Parameters**
`$weight` (float) In the store’s weight unit; 0 counts nothing.

Fires in inc/classes/core/class-wp-easycart-packages.php · default_weight()

`wp_easycart_ecv2_extensions_url`
Filters the URL of the extensions page linked from the order Fulfill window when no label service is set up.

**Parameters**
`$url (string)` Extensions page URL.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_ecv2_label_carriers`
Filters the carriers offered when making a shipping label from an order.

**Parameters**
`$defs (array)` Carrier key => label, sub, url, configured and keywords (| separated, matched against the order’s carrier and shipping method).
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_order_screen.php · label_carriers()

`wp_easycart_ecv2_label_services`
Filters label services an extension draws itself in the order Fulfill window; a row keyed shippo, stamps or shipstation replaces the built-in link.

**Parameters**
`$value (array)` Service slug => name, sub, logo, color, cta, onclick or url, and integrated; empty by default.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_order_screen.php · label_services()

`wp_easycart_ecv2_order_carriers` PRO
Filters the carrier names suggested when adding tracking to an order, in the orders list and fulfill popover.

**Parameters**
`$carriers` (array) Carrier names: the carriers of the store’s country and those on recent orders first.

Fires in admin/inc/wp_easycart_admin_order_table.php · ecv2_order_carrier_suggestions() +2 more places

`wp_easycart_ecv2_shipstation_active`
Filters whether ShipStation is treated as active on the order Fulfill window.

**Parameters**
`$active (bool)` True when the ShipStation extension class exists.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_ecv2_stamps_active`
Filters whether Stamps.com is treated as active on the order Fulfill window.

**Parameters**
`$active (bool)` True when the Stamps.com extension class exists.

Fires in admin/template/orders/orders/order-details.php

`wp_easycart_ecv2_tracking_url_map` PRO
Filters the map of carrier names to tracking URL patterns used to link a tracking number; %s is replaced with the tracking number.

**Parameters**
`$map (array)` Lower case carrier name => tracking URL with %s placeholder.

Fires in inc/classes/core/class-wp-easycart-carriers.php · tracking_map() +2 more places

`wp_easycart_elementor_free_shipping_threshold` PRO
Filters the free shipping threshold shown by the Elementor checkout widget (PRO).

**Parameters**
`$lowest (float)` The lowest free shipping threshold found across the store’s shipping settings.

Fires in admin/elementor/checkout/wp_easycart_elementor_checkout_pro.php · store_threshold()

`wp_easycart_express_shipping_price_display`
Filters the express shipping price number shown next to the express shipping checkbox in the cart.

**Parameters**
`$express_price` (float) express shipping surcharge before currency formatting

Fires in inc/classes/core/ec_shipping.php · get_single_shipping_price_content()

`wp_easycart_live_rate_pre`
Filters HTML output before the list of live shipping rates on the cart shipping step.

**Parameters**
`$html` (string) HTML to print before the rates, empty by default

Fires in inc/classes/core/ec_shipping.php · get_live_based_shipping_options()

`wp_easycart_live_shipping_free_rate`
Filters the amount used when a live shipping service returns a free rate.

**Parameters**
`$rate` (float) rate used for a free live rate, 0 or the cart handling fee

Fires in inc/classes/core/ec_shipping.php · get_shipping_rate_data() +6 more places

`wp_easycart_method_rate_pre`
Filters HTML output before the list of method-based shipping rates on the cart shipping step.

**Parameters**
`$html` (string) HTML to print before the rates, empty by default

Fires in inc/classes/core/ec_shipping.php · get_method_based_shipping_options()

`wp_easycart_optimalship_rate` OptimalShip
Filters the shipping rate a shopper pays for an OptimalShip quote.

**Parameters**
`$rate` (float) what the shopper pays
`$quote` (array) the OptimalShip quote
`$request` (array) the cart data sent

Fires in includes/class-wp-easycart-optimalship-rates.php · rate()

`wp_easycart_optimalship_request` OptimalShip
Filters the query parameters sent to the OptimalShip API for a rate quote.

**Parameters**
`$params` (array) query parameters
`$args` (array) the quote arguments

Fires in includes/class-wp-easycart-optimalship-api.php · params()

`wp_easycart_order_delivery_tracked`
Filters whether an order has a tracked delivery, meaning a label extension or fulfillment partner recorded a package on its way.

**Parameters**
`$tracked` (bool) true when a package on its way was recorded
`order id` (int) the order ID

Fires in inc/classes/core/class-wp-easycart-shipments.php · delivery_tracked()

`wp_easycart_order_signature`
Filters the delivery signature requirement for an order’s shipment.

**Parameters**
`$signature` (string) Empty string, standard or adult.
`$order_id` (int) The order id.

Fires in inc/classes/core/class-wp-easycart-shipments.php · wp_easycart_order_signature()

`wp_easycart_package_carrier_templates`
Filters the carrier boxes a shipping label extension can buy labels for, offered under Settings, Shipping, Boxes.

**Parameters**
`$templates` (array) Box code => label, such as ‘USPS_MediumFlatRateBox1’ => ‘USPS Medium Flat Rate Box’.

Fires in inc/classes/core/class-wp-easycart-packages.php · carrier_templates()

`wp_easycart_package_lines`
Filters the order line rows used when packing an order into boxes.

**Parameters**
`$out` (array) Line rows.
`$order_id` (int) The order id.

Fires in inc/classes/core/class-wp-easycart-packages.php · lines()

`wp_easycart_packed_packages`
Filters the packages produced after order lines are packed into boxes.

**Parameters**
`$packages` (array) The packed packages.
`$lines` (array) The order lines that were packed.

Fires in inc/classes/core/class-wp-easycart-packages.php · pack()

`wp_easycart_region_optional_countries`
Filters the countries where choosing a region is optional while the store has not decided under Settings > Countries & Regions. Default GB, DE and NZ.

**Parameters**
`$countries` (array) ISO 3166-1 alpha-2 codes.

Fires in inc/classes/core/class-wp-easycart-regions.php · optional_by_default()

`wp_easycart_royalmail_currency_ok` PRO
Filters whether the store’s currency suits Royal Mail rates, which are priced in pounds; Royal Mail is not quoted while this is false. Return true for a store that converts its prices.

**Parameters**
`$ok` (bool) True when the store’s base currency is GBP.
`$currency` (string) The store’s base currency code.

Fires in inc/classes/shipping/ec_royalmail.php · currency_ok()

`wp_easycart_royalmail_keys` PRO
Filters the public keys that may sign the Royal Mail price file PRO fetches from WP EasyCart Connect; a file signed with a key not in the list, or whose signature does not verify, is not used.

**Parameters**
`self::KEYS` (array) Key id => base64 Ed25519 public key; rm1 by default.

Fires in inc/classes/shipping/ec_royalmail.php · open_envelope()

`wp_easycart_royalmail_prices_url` PRO
Filters the address PRO fetches the newest signed Royal Mail price data from, once a day while Royal Mail is on.

**Parameters**
`self::FEED_URL` (string) The feed address, https://connect.wpeasycart.com/rates/v1/royalmail.json by default.

Fires in inc/classes/shipping/ec_royalmail.php · refresh()

`wp_easycart_royalmail_rate` PRO
Filters one Royal Mail service’s price for the cart’s parcels before it is offered at checkout or shown by Try a parcel in the Royal Mail settings. VAT removal, the collection charge and the service’s own price settings (markup, fixed price, free over) are already applied.

**Parameters**
`$price` (float) The price, rounded to 2 decimals.
`$service` (string) The service key, such as tracked_48 or intl_standard.
`$parcels` (array) The parcels, each with g (grams), dims (cm, largest first; empty when not measured) and floor (smallest format allowed).
`$request` (array) The live rate request, with the destination country and the subtotal.

Fires in inc/classes/shipping/ec_royalmail.php · price_all()

`wp_easycart_royalmail_today` PRO
Filters today’s date in the UK, which picks the Royal Mail price version in effect and the next one waiting for its date.

**Parameters**
`$today` (string) Today as Y-m-d in Europe/London.

Fires in inc/classes/shipping/ec_royalmail.php · today()

`wp_easycart_setup_shipping_paths`
Filters the ways to ship the Shipping settings page offers for the store’s country.

**Parameters**
`$ways` (array) The ways.
`$cc` (string) The store’s country code.

Fires in admin/inc/setup/wp_easycart_admin_setup_shipping.php · ways()

`wp_easycart_setup_shipping_steps`
Filters the set-up steps on the Shipping settings page for the chosen way to ship.

**Parameters**
`$steps` (array) Each: key, state (done, todo, warn or optional), title, text and html (escaped).
`$way` (string) The way key.

Fires in admin/inc/setup/wp_easycart_admin_setup_shipping.php · steps()

`wp_easycart_shipping_get_rate_data`
Filters the shipping rates offered to the shopper, as a list of rate rows.

**Parameters**
`$rates` (array) Shipping rate rows, each with an id and amount.

Fires in inc/classes/core/ec_shipping.php · get_shipping_rate_data() +1 more place

`wp_easycart_shipping_has_custom_shipping_options`
Filters whether the store reports having shipping options when custom shipping options are being printed.

**Parameters**
`$has_options` (bool) Default true.

Fires in inc/classes/core/ec_shipping.php · has_shipping_option()

`wp_easycart_shipping_is_live_based`
Filters whether a shipping method row is treated as live-rate based (carrier rates fetched in real time).

**Parameters**
`$is_live_based` (bool) True when the row uses UPS, USPS, FedEx, Australia Post, DHL or Canada Post.

Fires in inc/classes/core/ec_shipping.php · is_live_based()

`wp_easycart_shipping_live_type`
Filters the live shipping carrier type slug for a shipping method row.

**Parameters**
`$live_type` (string) Carrier slug such as ups, dhl or canadapost, or none.

Fires in inc/classes/core/ec_shipping.php · get_live_type()

`wp_easycart_shipping_method` PRO
Filters the store’s shipping calculation method, such as price or weight.

**Parameters**
`$shipping_method` (string) The shipping method saved in the settings.

Fires in admin/inc/setup/wp_easycart_admin_setup_shipping.php · state() +7 more places

`wp_easycart_shipping_price_display`
Filters the price shown next to a shipping option on the cart shipping step.

**Parameters**
`$price` Shipping price (with handling for Fraktjakt options).
`$method_id` Id of the shipping option or method.

Fires in inc/classes/core/ec_shipping.php · get_fraktjakt_based_shipping_options() +17 more places

`wp_easycart_shipping_rate_carriers`
Filters the list of carriers offered on the admin shipping rates screen.

**Parameters**
`$carriers` (array) Carrier definitions with mark and colors.

Fires in admin/inc/wp_easycart_admin_shipping_rates_v2.php · carriers()

`wp_easycart_shipping_receipt_max_bytes`
Filters the largest shipping receipt photo accepted, in bytes. Default 5242880 (5 MB).

**Parameters**
`$max` (int) The size limit in bytes.

Fires in inc/classes/core/class-wp-easycart-shipping-receipts.php · save_photo()

`wp_easycart_shipping_receipts_dir`
Filters the private folder shipping receipt photos are kept in. Default the data folder’s receipts folder, else wp-content/uploads/wp-easycart-receipts.

**Parameters**
`$dir` (string) Absolute folder path.

Fires in inc/classes/core/class-wp-easycart-shipping-receipts.php · dir()

`wp_easycart_shipping_should_print_custom_options`
Filters whether custom shipping options are printed instead of the built-in shipping options.

**Parameters**
`$should_print` (bool) Default false; return true to use custom options.

Fires in inc/classes/core/ec_shipping.php · print_store_shipping_options() +1 more place

`wp_easycart_shipping_tabs`
Filters the tabs across the shipping settings pages (Shipping, Rates, Carriers & labels).

**Parameters**
`$tabs` (array) Key => array( label, url ).

Fires in admin/inc/setup/wp_easycart_admin_setup_shipping.php · tabs_html()

`wp_easycart_shipping_zone_rule`
Filters whether a shopper in one of your shipping zones sees only that zone’s prices or also the prices for everywhere else (Settings > Rates).

**Parameters**
`$rule` (string) only or both.

Fires in inc/classes/core/class-wp-easycart-shipping-test.php · zone_rule()

`wp_easycart_shippo_oauth_available` Shippo
Filters whether the Connect with Shippo button is offered.

**Parameters**
`$available` (bool) True when the WP_EASYCART_SHIPPO_OAUTH constant is set and true.

Fires in includes/class-wp-easycart-shippo-oauth.php · available()

`wp_easycart_shippo_order_payload` Shippo
Filters the order data sent to Shippo when an order is created there.

**Parameters**
`$payload` (array) Shippo order payload.
`$order` (object) The ec_order row.
`$lines` (array) ec_orderdetail rows the store ships, excluding fulfillment partner lines.

Fires in includes/class-wp-easycart-shippo-orders.php · payload()

`wp_easycart_shippo_shipment_payload` Shippo
Filters the shipment data sent to Shippo when rates or a label are requested.

**Parameters**
`$payload` (array) Shippo shipment payload.
`$order` (object) The order row.
`$args` (array) Package choices.

Fires in includes/class-wp-easycart-shippo-labels.php · shipment_payload()

`wp_easycart_stamps_can_connect` Stamps.com
Filters whether the Stamps.com connect button is available.

**Parameters**
`$available` (bool) Whether the connection service reports it is available for the current environment.

Fires in includes/class-wp-easycart-stamps-auth.php · can_connect()

`wp_easycart_stamps_insurance` Stamps.com
Filters who insures packages on Stamps.com labels: ParcelGuard when the Stamps.com account offers it, else the carrier’s own cover. While ParcelGuard’s terms are not accepted (terms false), an insured label cannot be bought.

**Parameters**
`$state` (array) Keys provider (parcel_guard, carrier or stamps_com) and terms (true, false, or null while unknown).
`$account` (array|null) The Stamps.com account, or null when it is not connected or not known.

Fires in includes/class-wp-easycart-stamps-labels.php · insurance_state()

`wp_easycart_stamps_service_url` Stamps.com
Filters the base URL of the WP EasyCart connection service for Stamps.com.

**Parameters**
`$url` (string) Base URL, default https://connect.wpeasycart.com/stamps/.

Fires in includes/class-wp-easycart-stamps-auth.php · service_url()

`wp_easycart_stamps_shipment` Stamps.com
Filters the shipment fields sent to Stamps.com when rates or a label are requested.

**Parameters**
`$payload` (array) Stamps.com SERA rate or label fields.
`$order` (object) The order row.
`$args` (array) Package choices.

Fires in includes/class-wp-easycart-stamps-labels.php · shipment()

`wp_easycart_store_country`
Filters the country the store ships from, which lists that country’s carriers first on the order screens and helps suggest a carrier from an order’s shipping method. It also decides whether the setup wizard leads with Royal Mail (GB) and whether the EU withdrawal button starts switched on.

**Parameters**
`$country` (string) Two-letter ISO code, or ”: the checkout’s default country, else the Stripe business country, else the region of the site language (en_GB gives GB).

Fires in inc/classes/core/class-wp-easycart-carriers.php · store_country()

`wp_easycart_trigger_rate`
Filters the price of a shipping rate as it is charged: a price, weight, quantity or percentage based tier, or a method or live rate; WP EasyCart PRO’s Offers take shipping discounts off here.

**Parameters**
`$rate` The rate’s price.
`$type` (string) The tier type (price, weight, quantity or percentage), or a method or live rate’s id.

Fires in inc/classes/core/ec_shipping.php · get_price_based_shipping_options() +8 more places

`wp_easycart_ups_relay_url` PRO
Filters the WP EasyCart Connect address PRO uses to link a UPS account (Link your UPS account) and renew its tokens, for both the /ups-v3/ relay and the older /ups/ one.

**Parameters**
`self::BASE` (string) https://connect.wpeasycart.com by default; a trailing slash is removed.

Fires in inc/classes/shipping/wp_easycart_ups_relay.php · base()

`wp_easycart_usps_min_box` PRO
Filters the minimum box size added as padding to USPS rate requests.

**Parameters**
`$pad` (array) Keys length, width and height, default 0 each.

Fires in inc/classes/shipping/ec_usps_v3.php · box_padding()

`wp_easycart_weight_unit_extensions`
Filters the label and rate extensions checked on the store details settings for versions too old to read ounces and grams. By default it lists Shippo, ShipStation, Stamps.com and OptimalShip, each with the first version that reads them.

**Parameters**
`$needs` (array) Version constant => array( name, minimum version ).

Fires in admin/template/settings/initial-setup.php · ecv2_store_details_weight_unit_extensions()

`wpeasycart_dhl_destination_city` PRO
Filters the destination city sent to DHL when requesting live shipping rates.

**Parameters**
`$city (string)` Destination city; falls back to the postcode when the city is empty.
`$zip (string)` Destination postcode.
`$country (string)` Destination country code.

Fires in inc/classes/shipping/ec_dhl.php · destination_city()

`wpeasycart_dhl_rate_request` PRO
Filters the request body sent to DHL when requesting a live shipping rate.

**Parameters**
`$body (array)` The DHL rates request body.

Fires in inc/classes/shipping/ec_dhl.php · rest_rate_body()

`wpeasycart_fedex_cart_item_list` PRO
Filters the list of cart items used to build a FedEx rate request.

**Parameters**
`$cart (array)` Cart item objects.

Fires in inc/classes/shipping/ec_fedex.php · get_rate_data() +2 more places

`wpeasycart_live_based_codes` PRO
Filters the live shipping rate rows that extensions add to the available shipping methods.

**Parameters**
`$live_based (array)` Live rate rows; empty by default in the label lookup.

Fires in inc/classes/core/ec_db.php · live_rate_label() +2 more places

`wpeasycart_live_rate_cache_days` PRO
Filters how many days saved live shipping rates are kept before they are purged.

**Parameters**
`$days (int)` Number of days; defaults to 18.

Fires in inc/classes/shipping/ec_live_shipping.php · purge_saved_rates()

`wpeasycart_live_rate_providers` PRO
Lets an extension register its own live shipping rate providers.

**Parameters**
`$providers (array)` Provider slug => array with ready flag and callable quote; empty by default.

Fires in inc/classes/shipping/ec_live_shipping.php · providers()

`wpeasycart_live_shipping_carrier_ready` PRO
Filters whether a live shipping carrier is treated as set up and ready to quote.

**Parameters**
`$ready (bool)` Whether the carrier is ready.
`$carrier (string)` Carrier key.

Fires in inc/classes/shipping/ec_live_shipping.php · carrier_is_set_up()

`wpeasycart_live_shipping_carrier_units` PRO
Filters the weight and size units a live rate carrier reads.

**Parameters**
`$reads` (array|null) weight (lb or kg) and dim (in or cm), or null for a carrier WP EasyCart does not know (it gets the store’s units).
`$carrier` (string) The carrier.

Fires in inc/classes/shipping/wp_easycart_carrier_units.php · reads()

`wpeasycart_live_shipping_countries_without_postcode` PRO
Filters the list of country codes that do not use postcodes for live shipping quotes.

**Parameters**
`$countries (array)` Two-letter country codes.

Fires in inc/classes/shipping/ec_live_shipping.php · countries_without_postcode()

`wpeasycart_live_shipping_failure_pause` PRO
Filters how many seconds a live shipping carrier is paused after a request failure.

**Parameters**
`$seconds (int)` Pause length; 0 or less disables the pause.
`$carrier (string)` Carrier key.
`$reason (string)` Reason logged with the gateway log.

Fires in inc/classes/shipping/ec_carrier_http.php · pause()

`wpeasycart_live_shipping_parallel_requests` PRO
Filters whether live shipping carrier requests may be sent in parallel.

**Parameters**
`$parallel (bool)` Whether parallel requests are allowed; defaults to true.

Fires in inc/classes/shipping/ec_carrier_http.php · run()

`wpeasycart_live_shipping_rate_reuse_seconds` PRO
Filters how long a saved live shipping quote may be reused for an identical cart and destination.

**Parameters**
`$seconds (int)` Seconds; defaults to 30 minutes.

Fires in inc/classes/shipping/ec_live_shipping.php · reuse_seconds()

`wpeasycart_live_shipping_rate_signature` PRO
Filters the data used to build the signature that tells whether saved live shipping rates are still valid for a cart.

**Parameters**
`$signature_data (array)` Data hashed for the signature: carriers, providers, rows and config.
`$cart (array)` Cart items.

Fires in inc/classes/shipping/ec_live_shipping.php · update_shipping_rates()

`wpeasycart_live_shipping_rates` PRO
Filters the live shipping rates so an extension can add or change rates for a package.

**Parameters**
`$rates (array)` Rates found so far.
`$destination_zip (string)` Destination postcode.
`$destination_country (string)` Destination country code.
`$weight (float)` Package weight.
`$length (float)` Package length.
`$width (float)` Package width.
`$height (float)` Package height.
`$declared_value (float)` Declared value.
`$items (array)` Cart items in the package.

Fires in inc/classes/shipping/ec_live_shipping.php · extension_rates()

`wpeasycart_live_shipping_request` PRO
Filters the HTTP request spec used for a live shipping carrier call before it is sent.

**Parameters**
`$spec (array)` Request spec such as url, body, timeout and options.

Fires in inc/classes/shipping/ec_carrier_http.php · normalize()

`wpeasycart_live_shipping_unit_factors` PRO
Filters what a weight and a size in the store’s units are multiplied by before they are sent to a live rate carrier. Default 1.0 each (sent as entered); a value that is not above zero falls back to 1.0.

**Parameters**
`$factors` (array) weight and dim.
`$carrier` (string) The carrier.
`$store` (array) The store’s units.
`$reads` (array|null) The units the carrier reads.

Fires in inc/classes/shipping/wp_easycart_carrier_units.php · factors()

`wpeasycart_method_based_shipping`
Filters the method-based shipping rate rows available at checkout.

**Parameters**
`$method_based (array)` Method-based shipping rate rows.

Fires in inc/classes/core/ec_shipping.php · \__construct()

`wpeasycart_shipping_class_keeps_extension_rate`
Filters whether an extension’s live shipping rate is kept when shipping class rates apply.

**Parameters**
`$keep (bool)` True by default.
`$live_based (array)` The rate’s row.
`$cart (array)` Cart items.

Fires in inc/classes/core/ec_shipping.php · keeps_extension_rate()

`wpeasycart_shipping_method_name`
Filters the label of the shipping method the shopper chose.

**Parameters**
`$name (string|null)` The rate’s label, or null when none was found.
`$ship_id (string)` The chosen method’s id.

Fires in inc/classes/core/ec_db.php · get_shipping_method_name()

### Taxes and fees

Grouped by what they are about

`wp_easycart_admin_fee_ideas` PRO
Filters the ready-made ideas the New flex-fee window offers, such as a wholesale discount for a customer role (WP EasyCart PRO).

**Parameters**
`$ideas` (array) Each: key, label, text, set (the fee values it fills in) and focus.

Fires in admin/inc/wp_easycart_admin_fee_table.php · ideas()

`wp_easycart_admin_fee_payment_types` PRO
Filters the payment types a fee can be limited to in the admin fee settings.

**Parameters**
`$types (array)` Payment type value => label, for example card, affirm and klarna.

Fires in admin/inc/wp_easycart_admin_fee_table.php · payment_types()

`wp_easycart_admin_product_details_tax_fields_list`
Filters the field definitions of the Tax card in the product editor’s Pricing section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · tax_fields_list()

`wp_easycart_alt_tax_calculate`
Filters the alternative tax calculation results so a custom tax provider can supply its own totals.

**Parameters**
`$alt_tax_list` (object) tax results with tax_total, tax_rate, duty_total, taxable_subtotal, vatable_total and related values
`$cart_subtotal` (float) the cart subtotal
`$cart` (object) the cart
`$shipping_total` (float) the shipping total
`$tax_settings` (object) the store’s tax settings

Fires in inc/classes/core/ec_tax.php · calculate_alt_tax()

`wp_easycart_avatax_address_lookups_per_hour` AvaTax
Filters the store-wide limit of AvaTax address lookups allowed per hour (default 600).

**Parameters**
`$limit` (int) lookups per hour, default 600

Fires in includes/class-wp-easycart-avatax-address.php · within_limit()

`wp_easycart_avatax_exemption_certificate` AvaTax
Filters the certificate (Avalara’s CertificateModel) sent to Avalara for a checkout exemption claim, just before it is created there.

**Parameters**
`$model` (array) The certificate model.
`$claim` (object) The exemption claim.

Fires in includes/class-wp-easycart-avatax-exemptions.php · send_to_avalara()

`wp_easycart_avatax_exemption_max_bytes` AvaTax
Filters the largest exemption certificate file accepted, in bytes. Default 5242880 (5 MB); the result is never below 102400.

**Parameters**
`$bytes` (int) The size limit in bytes.

Fires in includes/class-wp-easycart-avatax-exemptions.php · max_bytes()

`wp_easycart_avatax_exemption_reasons` AvaTax
Filters the exemption reasons the checkout offers, in the store’s order.

**Parameters**
`$out` (array) Reason code => shopper-facing name.

Fires in includes/class-wp-easycart-avatax-exemptions.php · reasons()

`wp_easycart_avatax_shipped_statuses` AvaTax
Filters the order status ids that AvaTax treats as shipped.

**Parameters**
`$list` (array) status ids, 2 and 18 plus the delivered status when set

Fires in includes/class-wp-easycart-avatax-orders.php · shipped_statuses()

`wp_easycart_canada_tax_label`
Filters the label shown for a Canadian tax type such as GST or PST.

**Parameters**
`$label` (string) the tax label, from the language setting or a default
`$type` (string) the tax type
`$state` (string) the province or state

Fires in wpeasycart.php · wp_easycart_canada_tax_label()

`wp_easycart_cart_taxfree` AvaTax
Filters whether the cart is treated as tax free when the tax calculator is created.

**Parameters**
`$taxfree (bool)` Whether the cart is tax free.

Fires in inc/classes/core/ec_tax.php · \__construct() +1 more place

`wp_easycart_enable_alt_tax`
Filters whether the alternate tax calculation method is used instead of the standard one when the tax object is built.

**Parameters**
`$enabled` (bool) false by default; return true to use calculate_alt_tax()

Fires in inc/classes/core/ec_tax.php · \__construct()

`wp_easycart_eu_vat_rates`
Filters the EU standard VAT rates WP EasyCart fills in.

**Parameters**
`$rates` (array) ISO country code => percent.

Fires in inc/classes/core/class-wp-easycart-vat.php · eu()

`wp_easycart_fee_payment_type`
Filters the payment type used to decide whether a fee rule that is limited to payment types applies to the cart.

**Parameters**
`$type` (string) payment type
`$method` (string) the cart session’s payment method

Fires in inc/classes/core/ec_tax.php · fee_type_for()

`wp_easycart_hmrc_relay_url`
Filters the address of the HMRC relay used to check UK VAT numbers. Default https://connect.wpeasycart.com/hmrc-v1/api.php.

**Parameters**
`$url` (string) The relay address.

Fires in inc/classes/core/class-wp-easycart-vat.php · hmrc_check()

`wp_easycart_is_duty_enabled`
Filters whether duty is enabled for the current cart.

**Parameters**
`$is_duty_enabled` (bool) true when duty is enabled and the duty country matches

Fires in inc/classes/core/ec_tax.php · is_duty_enabled()

`wp_easycart_is_tax_enabled`
Filters whether tax is treated as enabled, which controls whether the Tax row shows.

**Parameters**
`$is_tax_enabled` (bool) true when any tax method (state, country, all, TaxCloud, TaxJar or a tax service) is on

Fires in inc/classes/core/ec_tax.php · is_tax_enabled()

`wp_easycart_is_vat_enabled`
Filters whether VAT is treated as enabled.

**Parameters**
`$is_vat_enabled` (bool) true when VAT is enabled in settings

Fires in inc/classes/core/ec_tax.php · is_vat_enabled()

`wp_easycart_order_pay_fees`
Filters the Flex-Fees an order’s pay link adds for a way to pay.

**Parameters**
`$fees` (array) The fees, each with label, rate and amount.
`$order` (object) The order.
`$fee_type` (string) The payment type (card, third_party, klarna and so on).

Fires in inc/classes/core/class-wp-easycart-order-pay.php · fees()

`wp_easycart_product_details_price_no_vat_display`
Filters the HTML for a product’s price display when prices are shown excluding VAT.

**Parameters**
`$output` (string) Price HTML.
`$price` The price without VAT.
`$list_price` The list price without VAT.
`$tax_price` The price with tax.
`$tax_list_price` The list price with tax.

Fires in inc/classes/core/ec_product.php · display_product_pricing_no_vat()

`wp_easycart_product_details_price_vat_display`
Filters the HTML for a product’s price display when prices are shown including VAT.

**Parameters**
`$output` (string) Price HTML.
`$price` The price.
`$list_price` The list price.
`$tax_price` The price with tax.
`$tax_list_price` The list price with tax.

Fires in inc/classes/core/ec_product.php · display_product_pricing_vat()

`wp_easycart_product_details_vat_rate`
Filters the VAT rate used to display prices on the product page.

**Parameters**
`$vat_rate` The VAT rate for the product.
`$product` (object) The product.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +1 more place

`wp_easycart_quebec_compound_qst`
Filters whether Quebec’s QST is compounded on top of GST for shipping to QC.

**Parameters**
`$compound` (bool) False by default.

Fires in inc/classes/core/ec_tax.php · quebec_compounds_qst()

`wp_easycart_setup_tax_steps`
Filters the set-up steps on the Taxes settings page for the chosen way to charge tax.

**Parameters**
`$steps` (array) Each: key, state (done, todo, warn or optional), title, text and html (escaped).
`$way` (string) The way key.

Fires in admin/inc/setup/wp_easycart_admin_setup_tax.php · steps()

`wp_easycart_setup_tax_ways`
Filters the ways to charge tax the Taxes settings page offers for the store’s country.

**Parameters**
`$ways` (array) The ways.
`$cc` (string) The store’s country code.
`$system` (string) us, canada, vat or ”.

Fires in admin/inc/setup/wp_easycart_admin_setup_tax.php · ways()

`wp_easycart_tax_class_rate`
Filters a tax class’s rate for a country. Null or ” means the standard rate.

**Parameters**
`$rate` (float|null) Percent, or null for the standard rate.
`$class` (string) The tax class.
`$country` (string) ISO country code.

Fires in inc/classes/core/class-wp-easycart-tax-classes.php · rate()

`wp_easycart_tax_classes`
Filters the tax classes besides the standard rate. A class with an ec_option_tax_class_<key>_rate option charges that rate.

**Parameters**
`$classes` (array) Key => label.

Fires in inc/classes/core/class-wp-easycart-tax-classes.php · classes()

`wp_easycart_tax_providers`
Filters the list of registered tax providers, letting an add-on register its own.

**Parameters**
`$providers` (array) Provider id => wp_easycart_tax_provider object, starts empty.

Fires in inc/classes/core/class-wp-easycart-tax-providers.php · all()

`wp_easycart_tax_setup_changes`
Filters what applying the recommended tax settings would change.

**Parameters**
`$out` (array) Changes, each with key, label, from, to and why.
`$rec` (array) The recommendation.
`$now` (array) The settings now.

Fires in inc/classes/core/class-wp-easycart-tax-setup.php · changes()

`wp_easycart_tax_setup_recommendation`
Filters the recommended tax settings for a store in a country.

**Parameters**
`$rec` (array) The recommendation (settings holds the values applying it writes).
`$cc` (string) ISO country code.
`$choices` (array) The store’s choices.

Fires in inc/classes/core/class-wp-easycart-tax-setup.php · recommend()

`wp_easycart_tax_setup_us_states`
Filters the US state rates and shipping rules the tax recommendation uses.

**Parameters**
`$states` (array) State code => array( rate, ship 1 or 0, check 1 or 0 ).

Fires in inc/classes/core/class-wp-easycart-tax-setup.php · us_states()

`wp_easycart_tax_setup_vat_countries`
Filters the VAT and GST countries the tax recommendation covers.

**Parameters**
`$countries` (array) Country code => array( rate, area, threshold ).

Fires in inc/classes/core/class-wp-easycart-tax-setup.php · vat_countries()

`wp_easycart_tax_shipping_country`
Filters the shipping country used to calculate taxes.

**Parameters**
`$shipping_country` (string) Uppercase shipping country code.

Fires in inc/classes/core/ec_tax.php · \__construct()

`wp_easycart_tax_shipping_state`
Filters the shipping state used to calculate taxes.

**Parameters**
`$shipping_state` (string) Uppercase shipping state code.

Fires in inc/classes/core/ec_tax.php · \__construct()

`wp_easycart_tax_test_quote`
Filters the quote a tax service gives for the sample cart for one of the tax test addresses on the Taxes settings page (also used by the AI assistant’s tax tools). Return a quote or WP_Error to answer for a service; null lets WP EasyCart ask it.

**Parameters**
`null` (wp_easycart_tax_quote|WP_Error|null) The quote, or null.
`$service['id']` (string) The service id, such as taxcloud or taxjar.
`$request` (wp_easycart_tax_request) The sample sent to the address.

Fires in inc/classes/core/class-wp-easycart-tax-test.php · ask()

`wp_easycart_tax_total`
Filters the sales tax total calculated for the cart.

**Parameters**
`$tax_total` (float) State, country and all-region tax added together.
`$taxable_subtotal` Taxable subtotal.
`$tax_context` Tax calculation context.
`$tax` (object) The ec_tax object.

Fires in inc/classes/core/ec_tax.php · calculate_taxes()

`wp_easycart_vat_business_rate`
Filters whether the business VAT rate applies to a VAT number.

**Parameters**
`$applies` (bool) Whether it applies.
`$number` (string) The VAT number.
`$country` (string) The delivery country.
`$billing_country` (string) The billing country.

Fires in inc/classes/core/class-wp-easycart-vat.php · business_rate_applies()

`wp_easycart_vat_name`
Filters what the store’s value added tax is called. Any value other than VAT or GST falls back to VAT.

**Parameters**
`$name` (string) VAT or GST.

Fires in inc/classes/core/class-wp-easycart-vat.php · name()

`wp_easycart_vat_number_status`
Filters a VAT number check so it can be answered without asking VIES, for example from another service. Default null, which runs the normal check; return valid, invalid or unknown to answer it.

**Parameters**
`$status` (string|null) Null to run the normal check.
`$number` (string) The VAT number.

Fires in inc/classes/core/class-wp-easycart-vat.php · number_status()

`wp_easycart_vat_reverse_charge`
Filters whether an order’s documents say “Reverse charge”.

**Parameters**
`$applies` (bool) Whether it applies.
`$order` (object) The order.

Fires in inc/classes/core/class-wp-easycart-vat.php · reverse_charge_text()

`wp_easycart_vat_unverified_business_rate`
Filters whether a VAT number VIES could not check (it did not answer) still gets the business rate. Default false, so the business pays VAT and claims it back.

**Parameters**
`$allow` (bool) Whether to allow the business rate (false).
`$number` (string) The VAT number.

Fires in inc/classes/core/class-wp-easycart-vat.php · business_rate_applies()

`wpeasycart_format_vat_rate`
Filters the formatted VAT rate text shown at checkout.

**Parameters**
`$formatted (string)` Formatted rate in parentheses, such as (20%).
`$vat_rate (float)` The VAT rate.

Fires in inc/classes/cart/ec_cartpage.php · get_vat_rate_formatted()

### Payments

Grouped by what they are about

`wp_easycart_admin_payment_file`
Filters the path of the settings template file loaded for a payment gateway in the admin payment settings.

**Parameters**
`$file (string)` Path to the gateway settings template.
`$key (string)` Gateway key.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · form_file()

`wp_easycart_admin_third_party_gateways`
Filters the third-party payment gateways the admin recognizes, adding to the keys found in the gateway registry.

**Parameters**
`$third_party_gateways` (array) legacy third-party gateway list, keyed by gateway key

Fires in admin/inc/wp_easycart_admin_payments.php · known_third_party_keys()

`wp_easycart_authorize_accept_js_allow_legacy_fallback` PRO
Filters whether Authorize.net falls back to posting the raw card number when Accept.js did not run (default false).

**Parameters**
`$allow` (bool) false by default

Fires in inc/classes/gateway/ec_authorize.php · process_accept_js()

`wp_easycart_authorize_accept_js_enabled` PRO
Filters whether Authorize.net Accept.js tokenization is enabled.

**Parameters**
`$enabled` (bool) true when Pro is active, Authorize.net is the process method and the login id and client key are set

Fires in inc/classes/gateway/ec_authorize.php · accept_js_enabled()

`wp_easycart_authorize_accept_js_load` PRO
Filters whether the Authorize.net Accept.js script is loaded on the current page.

**Parameters**
`$load` (bool) true on the checkout payment step, or on account pages other than the account page itself

Fires in inc/classes/gateway/ec_authorize.php · wp_easycart_authorize_accept_js_enqueue()

`wp_easycart_authorize_accept_js_transaction_request` PRO
Filters the Authorize.net transaction request array sent with an Accept.js payment.

**Parameters**
`$transaction` (array) the transactionRequest data
`$order_id` (int) the order id

Fires in inc/classes/gateway/ec_authorize.php · get_accept_js_request()

`wp_easycart_bank_details_lines`
Filters the bank details lines a shopper sees.

**Parameters**
`$lines` (array) Lines, each array( label, value ).
`$order_id` (int|string) The order number, or ”.
`$saved` (array) The saved scheme and fields.

Fires in inc/classes/core/class-wp-easycart-bank-details.php · lines()

`wp_easycart_card_payment_types`
Filters the payment types that count as a card payment for flex fees.

**Parameters**
`$types` (array) payment types, default card, apple_pay, google_pay and link

Fires in inc/classes/core/ec_tax.php · card_payment_types()

`wp_easycart_checkout_payment_method_allowed`
Filters whether a payment method can pay this checkout; return false to take a method away for this cart. It decides the payment choices, the method the checkout starts on, and Bill later (Pay by bank transfer).

**Parameters**
`true` (bool) Allowed, true by default.
`(string) $method` (string) credit_card, manual_bill, third_party or affirm.
`$this` (ec_cartpage) The checkout.

Fires in inc/classes/cart/ec_cartpage.php · payment_method_allowed()

`wp_easycart_checkout_tokenized_card`
Filters the card a gateway tokenized in the browser for this payment. Default an empty array; an answer without a bin and last4 is ignored.

**Parameters**
`$card` (array) Empty, or bin, last4, exp_month, exp_year and brand.
`$gateway` (string) The gateway (ec_option_payment_process_method).

Fires in inc/classes/core/class-wp-easycart-checkout-guard.php · tokenized_card()

`wp_easycart_ecv2_gateway_link` PRO
Filters the link to a payment in the payment gateway’s own dashboard, shown on the order details payment panel.

**Parameters**
`$deep_link (string)` Gateway dashboard URL for the transaction.
`$gateway (string)` The order’s payment gateway.
`$order (object)` The order.

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · print_payment_panel()

`wp_easycart_ecv2_order_is_test_payment` PRO
Filters whether an order’s payment was made in the gateway’s test mode (PRO).

**Parameters**
`$is_test (bool)` Whether the payment looks like a test payment.
`$order (object)` The order row.

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · order_is_test_payment()

`wp_easycart_gateway_webhook_log_size`
Filters how many notifications a gateway’s webhook log keeps. The same list is checked to ignore an event that was already handled, and no more than 10 rejected requests are kept whatever the size.

**Parameters**
`50` (int) Entries kept, default 50; at least 1 is always kept. For Square, wp_easycart_square_webhook_log_size runs on the result.
`$gateway` (string) Gateway key, square or paypal.

Fires in wpeasycart.php · wp_easycart_gateway_webhook_log()

`wp_easycart_hook_url`
Filters the address a payment gateway sends its notifications to (?wpeasycarthook=paypal-webhook, stripe-webhook and so on), as shown in the gateway settings and sent to the gateway. A site installed in a folder gets a slash before the query, because gateways do not follow the redirect.

**Parameters**
`$url` (string) The notification address: the site address, then ?wpeasycarthook= and the hook.
`$hook` (string) The hook: paypal-webhook, stripe-webhook, redsys-webhook or sagepay-webhook.

Fires in wpeasycart.php · wp_easycart_hook_url()

`wp_easycart_intuit_service_url` PRO
Filters the base URL of the WP EasyCart connection service for Intuit Payments.

**Parameters**
`$url` (string) The base URL, default https://connect.wpeasycart.com/intuit-v2/

Fires in inc/classes/gateway/wp_easycart_intuit_connection.php · service_url()

`wp_easycart_is_stripe_sandbox` PRO
Filters whether Stripe should run in sandbox mode, which decides whether sandbox or live Stripe product IDs are read and saved.

**Parameters**
`$is_sandbox` (bool) false by default

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · is_sandbox() +2 more places

`wp_easycart_manual_payment_allowed`
Filters whether the shopper can choose Bill later (Pay by bank transfer), after the store’s Bill later roles are checked.

**Parameters**
`$allowed` (bool) True when the shopper’s role is one Bill later is offered to.
`$role` (string) The shopper’s role, guest when not signed in or the account is pending.
`array_values( $roles )` (array) The roles chosen in the setting; empty means everyone.

Fires in inc/classes/cart/ec_cartpage.php · use_manual_payment()

`wp_easycart_nmi_allow_card_form_fallback` PRO
Filters whether NMI may charge a typed card number when the secure card fields did not run (for example a blocked script or JavaScript off). Default false, so the payment fails instead.

**Parameters**
`$allow` (bool) Whether to fall back to the typed card (false).

Fires in inc/classes/gateway/ec_nmi.php · process_token()

`wp_easycart_nmi_collect_js_enabled` PRO
Filters whether NMI’s secure card fields (Collect.js) are used. Default true when NMI is the gateway and both the security key and the tokenization key are saved.

**Parameters**
`$enabled` (bool) Whether the secure fields are on.

Fires in inc/classes/gateway/ec_nmi.php · collect_js_enabled()

`wp_easycart_nmi_field_css` PRO
Filters the styles passed to NMI’s secure card fields on the checkout page.

**Parameters**
`$css` (array) field (font-size 16px, color #222222, line-height 42px, height 42px, padding 0 12px), invalid (color #b91c1c) and focus (color #111111).

Fires in inc/classes/gateway/ec_nmi.php · wp_easycart_nmi_enqueue()

`wp_easycart_nmi_gateway_host` PRO
Filters the NMI gateway’s host name. Default the saved gateway host, else secure.networkmerchants.com.

**Parameters**
`$host` (string) The host name.

Fires in inc/classes/gateway/ec_nmi.php · host()

`wp_easycart_nmi_gateway_url` PRO
Filters the NMI gateway’s base address. Default https:// followed by the gateway host.

**Parameters**
`$url` (string) The base address.

Fires in inc/classes/gateway/ec_nmi.php · base_url()

`wp_easycart_nmi_load` PRO
Filters whether NMI’s secure card field scripts load on the current storefront page. Default true on the checkout payment step; with the one-page checkout, true on any page except the account page.

**Parameters**
`$load` (bool) Whether to load the scripts.

Fires in inc/classes/gateway/ec_nmi.php · wp_easycart_nmi_enqueue()

`wp_easycart_nmi_payer_auth_amount_units` PRO
Filters the units the amount is passed in for NMI Payer Authentication (3-D Secure) in the checkout script. Default major.

**Parameters**
`$units` (string) The amount units (major).

Fires in inc/classes/gateway/ec_nmi.php · wp_easycart_nmi_enqueue()

`wp_easycart_nmi_payer_auth_enabled` PRO
Filters whether typed cards are checked with NMI Payer Authentication (3-D Secure) before they are charged. Default true when the secure fields are on, the Payer Authentication setting is on and a checkout key is saved.

**Parameters**
`$enabled` (bool) Whether Payer Authentication is on.

Fires in inc/classes/gateway/ec_nmi.php · payer_auth_enabled()

`wp_easycart_nmi_sale_request` PRO
Filters the fields of the NMI sale request for a tokenized card payment, just before it is sent.

**Parameters**
`$data` (array) The request fields.
`$order_id` (int) The order id.
`$type` (string) The card type posted with the token (for example inline).

Fires in inc/classes/gateway/ec_nmi.php · get_token_data()

`wp_easycart_order_pay_methods`
Filters the payment methods a customer can use on an order pay link.

**Parameters**
`$out` (array) Enabled method slugs, such as paypal and manual.

Fires in inc/classes/core/class-wp-easycart-order-pay.php · methods()

`wp_easycart_payfast_itn_source_ok` PRO
Filters whether a PayFast ITN came from PayFast’s servers. Default null, which makes WP EasyCart check the address against PayFast’s hosts by DNS.

**Parameters**
`$from_payfast` (bool|null) Null to run the check.
`$remote` (string) The address the ITN came from.

Fires in inc/classes/gateway/wp_easycart_third_party_notify_pro.php · payfast_itn()

`wp_easycart_payment_gateway_catalog`
Filters the catalog of payment gateways listed on the Payments settings screen.

**Parameters**
`$catalog` (array) Gateway key => gateway definition.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · catalog()

`wp_easycart_payment_gateway_countries`
Filters the countries each gateway takes payments for stores in. A gateway with no countries is available everywhere.

**Parameters**
`$map` (array) Gateway key => ISO country codes.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · gateway_countries()

`wp_easycart_payment_gateway_form`
Filters the settings drawer form definition for a payment gateway; return an array with sections and a save callback to supply one.

**Parameters**
`$form` (array|null) Form definition, null by default.
`$key` (string) Gateway key.
`$gw` (array) The gateway definition.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · form()

`wp_easycart_payment_gateway_status`
Filters the connection and readiness status calculated for a payment gateway on the Payments screen.

**Parameters**
`$s` (array) Status flags such as connected, live_ready, test_ready and locked.
`$gw` (array) The gateway definition.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · status()

`wp_easycart_payment_local_gateways`
Filters the gateways stores in a country choose most, after Stripe, Square, PayPal and Amazon Pay.

**Parameters**
`$keys` (array) Gateway keys.
`$country` (string) ISO country code or ”.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · local_favorites()

`wp_easycart_payment_older_gateways`
Filters the gateways listed under Older gateways in Add or change a gateway on the Payments screen, a group that stays closed until the merchant opens it or searches. Those gateways stay fully usable, and one already in use shows as usual.

**Parameters**
`array(...)` (string\[\]) Gateway keys, such as stripe, paypal_pro, sagepay, realex and custom.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · older()

`wp_easycart_payment_partner_gateways`
Filters the partner gateways recommended for a gateway role on the Payments screen.

**Parameters**
`$list` (array) Gateway key => benefit text.
`$role` (string) The gateway role, such as third_party.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · partners()

`wp_easycart_payment_recommended_gateways`
Filters the gateways tagged Recommended on the Payments screen and listed first, in this order, under Add or change a gateway; keys missing from the gateway catalog are dropped.

**Parameters**
`array(...)` (string\[\]) Gateway keys, default stripe_connect, square, paypal, amazonpay and authorize.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · recommended()

`wp_easycart_payment_retired_gateways`
Filters the gateways that no longer take payments.

**Parameters**
`$retired` (array) Gateway key => why it is retired.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · retired_gateways()

`wp_easycart_payment_test_modes`
Filters the names of payment methods running in test mode, shown in Diagnostics.

**Parameters**
`$names` (string\[\]) Gateway names.

Fires in admin/inc/wp_easycart_admin_store_status.php · ec_payment_test_modes() +1 more place

`wp_easycart_paynow_za_vendor_key` PRO
Filters the Netcash Pay Now software vendor key sent with a payment (m2). Default Netcash’s default key.

**Parameters**
`$key` (string) The vendor key.

Fires in inc/classes/gateway/ec_sagepay_paynow_za.php · fields()

`wp_easycart_paypal_connect_url`
Filters the base address of WP EasyCart Connect for PayPal, used for every relay call a store connected through the WP EasyCart PayPal app makes and for the Connect PayPal onboarding link.

**Parameters**
`self::BASE` (string) https://connect.wpeasycart.com by default; a trailing slash is removed.

Fires in inc/classes/gateway/class-wp-easycart-paypal-connect.php · base()

`wp_easycart_paypal_connect_version`
Filters which version of WP EasyCart Connect’s PayPal relay the store calls; return v2 to go back to the older /paypal-v2/ scripts, which are called unsigned.

**Parameters**
`'v3'` (string) v3 by default; any value other than v2 means v3.

Fires in inc/classes/gateway/class-wp-easycart-paypal-connect.php · version()

`wp_easycart_paypal_ipn_verify_url`
Filters where PayPal Standard IPNs are confirmed (cmd=_notify-validate). Default PayPal’s IPN check for the store’s live or sandbox mode.

**Parameters**
`$url` (string) The verification URL.

Fires in inc/classes/gateway/class-wp-easycart-paypal-ipn.php · verify()

`wp_easycart_paytrace_enabled` PRO
Filters whether the PayTrace gateway is treated as enabled.

**Parameters**
`$enabled` (bool) True when PRO is loaded, PayTrace is the live gateway and API credentials are saved.

Fires in inc/classes/gateway/ec_paytrace.php · enabled()

`wp_easycart_paytrace_integrator_id` PRO
Filters the PayTrace integrator ID sent with PayTrace requests.

**Parameters**
`self::INTEGRATOR_ID` (string) The built-in integrator ID.

Fires in inc/classes/gateway/ec_paytrace.php · integrator_id()

`wp_easycart_paytrace_load` PRO
Filters whether the PayTrace Protect.js script loads on the current page.

**Parameters**
`$load` (bool) True on the checkout payment step (and other pages except the account page).

Fires in inc/classes/gateway/ec_paytrace.php · wp_easycart_paytrace_enqueue()

`wp_easycart_paytrace_sale_request` PRO
Filters the request body sent to PayTrace to charge a sale.

**Parameters**
`$body` (array) The sale request data.
`$order_id` (int) The order id.

Fires in inc/classes/gateway/ec_paytrace.php · get_sale_request()

`wp_easycart_paytrace_styles` PRO
Filters the style settings passed to the PayTrace hosted card fields at checkout.

**Parameters**
`$styles` (array) Style settings keyed by field: cc, code, exp and body.

Fires in inc/classes/gateway/ec_paytrace.php · wp_easycart_paytrace_enqueue()

`wp_easycart_refundable_gateways` PRO
Filters the list of gateways WP EasyCart can refund through their API; other gateways use the record-only refund flow.

**Parameters**
`$gateways` (string\[\]) Gateway slugs, such as stripe, square and paytrace.

Fires in inc/classes/core/class-wp-easycart-order-refunds.php · refundable_gateways() +1 more place

`wp_easycart_setup_payment_methods`
Filters the ways to pay listed on the Payments settings page, one row each.

**Parameters**
`$rows` (array) Each: key, label, via, state (on, off, need, na, pro or setup) and control (escaped HTML).

Fires in admin/inc/setup/wp_easycart_admin_setup_payments.php · methods()

`wp_easycart_setup_payment_steps`
Filters the set-up steps on the Payments settings page for the chosen card processor.

**Parameters**
`$steps` (array) Each: key, state (done, todo, warn or optional), title, text and html (escaped).
`$way` (string) stripe, square or other.

Fires in admin/inc/setup/wp_easycart_admin_setup_payments.php · steps()

`wp_easycart_setup_payment_ways`
Filters the card processor choices on the Payments settings page.

**Parameters**
`$ways` (array) Key => title, desc, plan and gateway.

Fires in admin/inc/setup/wp_easycart_admin_setup_payments.php · ways()

`wp_easycart_square_apple_pay_domain`
Filters the domain Apple Pay is set up for on a Square store. Default the host of the site’s home address.

**Parameters**
`$host` (string) The domain.

Fires in inc/classes/gateway/class-wp-easycart-square-apple-pay.php · domain()

`wp_easycart_square_apple_pay_file_url`
Filters where Square’s Apple Pay domain association file is downloaded from. Default Square’s address.

**Parameters**
`$url` (string) The download URL.

Fires in inc/classes/gateway/class-wp-easycart-square-apple-pay.php · fetch()

`wp_easycart_square_apple_pay_live`
Filters whether the store takes live payments through Square; Apple Pay’s domain is set up only then.

**Parameters**
`$live` (bool) The store’s answer.

Fires in inc/classes/gateway/class-wp-easycart-square-apple-pay.php · live()

`wp_easycart_square_apple_pay_status`
Filters what the store owner is told about Apple Pay on a live Square store.

**Parameters**
`$out` (array) tone, title, text, manual, replace, check and short.
`$state` (array) The last check.

Fires in inc/classes/gateway/class-wp-easycart-square-apple-pay.php · status()

`wp_easycart_square_apple_pay_web_root`
Filters the folder whose .well-known folder Apple reads, where the domain association file is written.

**Parameters**
`$root` (string) The folder path, ” when unknown.

Fires in inc/classes/gateway/class-wp-easycart-square-apple-pay.php · web_root()

`wp_easycart_square_order_modifier_name`
Filters the name a cart line’s option is sent to Square with, as an order line modifier. A choice is its name; a typed value is “Label: value”. The result is cut to 255 characters.

**Parameters**
`$name` (string) The modifier name.
`$advanced_option` (object) The cart line’s option.

Fires in inc/classes/gateway/ec_square.php · order_modifier_name()

`wp_easycart_square_relay_url`
Filters the base address of WP EasyCart Connect for Square, used for every call a store connected through the WP EasyCart Square app makes and for its Connect Square links.

**Parameters**
`self::BASE` (string) https://connect.wpeasycart.com by default; a trailing slash is removed.

Fires in inc/classes/gateway/class-wp-easycart-square-relay.php · base()

`wp_easycart_square_webhook_log_size`
Filters how many Square webhook events are kept in the webhook log, after wp_easycart_gateway_webhook_log_size.

**Parameters**
`$size` (int) Maximum log entries, 50 by default.

Fires in wpeasycart.php · wp_easycart_gateway_webhook_log()

`wp_easycart_stripe_amazon_pay_rules` PRO
Filters where Stripe offers Amazon Pay: the store countries and the currencies each takes (WP EasyCart PRO).

**Parameters**
`$rules` (array) Country => currencies.

Fires in wp-easycart-admin-pro.php · wp_easycart_pro_stripe_amazon_pay_rules()

`wp_easycart_stripe_ca_bundle` PRO
Filters the path of the CA certificate bundle used for Stripe API requests.

**Parameters**
`$ca_bundle` (string) Path, default the WordPress certificates ca-bundle.crt.

Fires in inc/classes/gateway/ec_stripe.php · apply_stripe_ca_bundle()

`wp_easycart_stripe_capture_method` PRO
Filters the capture method used when a Stripe payment intent is created.

**Parameters**
`$capture_method` (string) Default automatic.

Fires in inc/classes/gateway/ec_stripe_connect.php · create_payment_intent() +1 more place

`wp_easycart_stripe_connect_api_key` PRO
Filters the Stripe Connect access token used for API requests.

**Parameters**
`$api_key` (string) Sandbox or production access token, depending on the sandbox setting.

Fires in inc/classes/core/class-wp-easycart-subscription-gateway.php · stripe_connected() +4 more places

`wp_easycart_stripe_connect_fee_rate`
Filters the WP EasyCart application fee percentage taken on payments through the Stripe Connect, PayPal and Square apps (Square on live USD payments only), including Stripe subscriptions; WP EasyCart PRO returns 0 on an active license. At 0 the Payments screen drops its fee note and the setup wizard’s badge reads No EasyCart fees.

**Parameters**
`2` (int|float) Fee percentage, default 2.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · show_fee_note() +11 more places

`wp_easycart_stripe_connect_publishable_key`
Filters the Stripe Connect publishable key output on cart and account pages.

**Parameters**
`$pkey` (string) Publishable key for the current mode (sandbox or production).

Fires in design/layout/base-responsive-v3/ec_account_subscription_details.php +11 more places

`wp_easycart_stripe_connect_relay_url`
Filters the base address of WP EasyCart Connect for Stripe Connect, used for the Connect Stripe links and for collecting a new connection.

**Parameters**
`self::BASE` (string) https://connect.wpeasycart.com by default; a trailing slash is removed.

Fires in inc/classes/gateway/class-wp-easycart-stripe-connect-relay.php · base()

`wp_easycart_stripe_customer_test_mode`
Filters whether this storefront request pays in Stripe test mode for the signed-in customer while the store itself is in live mode; return false to keep the request live.

**Parameters**
`$test` (bool) True by default when the customer’s Stripe test-mode customer switch is on, the request comes from the storefront (not the admin, WP-Cron or WP-CLI) and the gateway has test credentials.
`$GLOBALS['ec_user']` (object|null) The signed-in ec_user.
`$gateway` (string) stripe or stripe_connect.

Fires in inc/classes/core/class-wp-easycart-stripe-mode.php · customer_test()

`wp_easycart_stripe_element_locale`
Filters the locale forced on Stripe payment elements; an empty value uses the current site language.

**Parameters**
`$locale` (string) Locale code, default empty.

Fires in inc/classes/cart/ec_cartpage.php · get_stripe_element_locale_js()

`wp_easycart_stripe_fallback_ca_bundle` PRO
Filters the path of the bundled fallback CA certificate file used for Stripe requests.

**Parameters**
`$fallback` (string) Path to the bundled cacert.pem.

Fires in inc/classes/gateway/ec_stripe_connect.php · get_stripe_fallback_ca_bundle() +1 more place

`wp_easycart_stripe_local_methods`
Filters the Stripe payment methods shoppers in a country use most, as Payments settings rows.

**Parameters**
`$rows` (array) Row ids (such as stripe_use_ideal).
`$country` (string) ISO country code or ”.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · stripe_local_methods()

`wp_easycart_stripe_payment_methods` PRO
Filters the payment method types offered when a Stripe payment intent is created.

**Parameters**
`$payment_methods` (array) Stripe payment method types, default array( ‘card’ ).

Fires in inc/classes/gateway/ec_stripe_connect.php · get_create_payment_intent_data() +1 more place

`wp_easycart_stripe_payment_methods_type_enabled`
Filters whether the payment method types are reset to card only when Stripe rejects an intent request and it is retried.

**Parameters**
`$enabled` (bool) Default true.

Fires in inc/classes/gateway/ec_stripe_connect.php · create_payment_intent() +2 more places

`wp_easycart_stripe_return_listed_requires_action`
Filters whether the cart page shows the return screen for a Stripe payment that still requires action, such as a redirect.

**Parameters**
`$show` (bool) Default true.

Fires in inc/classes/cart/ec_cartpage.php · display_cart_page() +1 more place

`wp_easycart_stripe_unavailable_text`
Filters the words shown in place of the card form when Stripe cannot start a payment.

**Parameters**
`$text` (string) The message (plain text).

Fires in inc/classes/core/class-wp-easycart-stripe-unavailable.php · text()

`wp_easycart_stripe_webhook_payment_intent_succeeded_send_email`
Filters whether the receipt email and gift cards are sent when a Stripe payment_intent.succeeded webhook marks an order paid.

**Parameters**
`$send_email` (bool) Default true.

Fires in wpeasycart.php · wp_easycart_webhook_catch()

`wp_easycart_subscription_payment_element`
Filters whether the subscription checkout page takes the card in Stripe’s Payment Element, as the regular checkout does; return false to keep the older card field.

**Parameters**
`$ready` (bool) True by default when the store’s gateway is Stripe or Stripe Connect and its class has the api() and accepts_payment_methods() methods.

Fires in inc/classes/cart/ec_cartpage.php · subscription_payment_element_ready()

`wp_easycart_third_party_retired`
Filters the third-party gateways checkout no longer offers.

**Parameters**
`$retired` (array) Gateway key => name.

Fires in inc/classes/core/class-wp-easycart-third-party-payment.php · retired()

`wp_easycart_third_party_return_post_bounce`
Filters whether a third party’s cookie-less post back to the order confirmation is opened again as a plain visit. Default true.

**Parameters**
`$bounce` (bool) Whether to bounce the post (true).

Fires in inc/classes/core/class-wp-easycart-third-party-payment.php · return_post_target()

`wpeasycart_payment_error_message`
Filters the payment error text shown to the shopper when a gateway payment fails.

**Parameters**
`$message (string)` Gateway error text.
`$gateway (string)` Gateway name, such as square.

Fires in inc/classes/cart/ec_cartpage.php · submit_square_quick_payment_v2() +1 more place

### Email and notifications

Grouped by what they are about

`wp_easycart_abandoned_cart_endpoint_base`
Filters the base URL used to build abandoned cart email links such as unsubscribe and click-tracking endpoints.

**Parameters**
`$url (string)` Cart page URL, or the site home URL when no cart page is set.

Fires in inc/classes/core/ec_abandoned_carts.php · endpoint_base()

`wp_easycart_abandoned_cart_first_send_at`
Filters the date and time the first abandoned cart reminder becomes due when a cart snapshot is saved.

**Parameters**
`$at (string)` Database datetime of the first send; defaults to the abandoned_at time.
`$row (array)` Snapshot being written (session_id, stage, last_activity, abandoned_at and more).

Fires in inc/classes/core/ec_abandoned_carts.php · first_send_at()

`wp_easycart_abandoned_cart_is_suppressed`
Filters whether an email address is blocked from receiving abandoned cart reminders because it unsubscribed.

**Parameters**
`$hit (bool)` True when the address has an unsubscribed record.
`$email (string)` Email address being checked.

Fires in inc/classes/core/ec_abandoned_carts.php · is_suppressed()

`wp_easycart_abandoned_cart_reminder_sender`
Filters which system sends abandoned cart reminders, letting another plugin take over sending.

**Parameters**
`$sender (string)` Sender slug; defaults to easycart.
`$cart (object)` Abandoned cart row.

Fires in inc/classes/core/ec_abandoned_carts.php · reminder_sender()

`wp_easycart_abandoned_cart_reminder_template` PRO
Filters the path of the PHP template file used to render an abandoned cart reminder email.

**Parameters**
`$template_path (string)` Path to the default reminder template.
`$cart (object)` Abandoned cart row.
`$step_n (int)` Number of the reminder step being sent.

Fires in inc/classes/core/ec_abandoned_sequence.php · render()

`wp_easycart_abandoned_cart_restore_url`
Filters the URL in abandoned cart emails that restores the shopper’s cart, optionally applying a coupon.

**Parameters**
`$url (string)` Signed restore URL.
`$cart (object)` Abandoned cart row.
`$coupon (string)` Coupon code attached to the link, or empty.
`$track (bool)` Whether click tracking is enabled for the link.
`$step (int)` Reminder step number.

Fires in inc/classes/core/ec_abandoned_carts.php · restore_url()

`wp_easycart_abandoned_cart_step_email` PRO
Filters the finished HTML of an abandoned cart reminder email before it is sent.

**Parameters**
`$html (string)` Rendered email HTML.
`$cart (object)` Abandoned cart row.
`$n (int)` Reminder step number.
`$view (array)` Step text: subject, heading, intro and button.
`$coupon` Coupon attached to this step, if any.

Fires in inc/classes/core/ec_abandoned_sequence.php · send_step()

`wp_easycart_abandoned_current_session`
Filters the storefront session ID used to identify the shopper’s cart for abandoned cart tracking.

**Parameters**
`$sid (string)` Current cart session ID, or empty string when none.

Fires in inc/classes/core/ec_abandoned_carts.php · current_session_id()

`wp_easycart_abandoned_email_selectors`
Filters the CSS selectors of the checkout email fields watched to capture an email address for abandoned cart tracking.

**Parameters**
`$selectors (string)` Comma-separated CSS selectors; defaults to the contact email and returning-customer login email fields.

Fires in inc/classes/core/ec_abandoned_carts.php · enqueue_capture()

`wp_easycart_checkout_fields_after_payment_notify` PRO
Filters whether the store notification about checkout field answers is sent after payment; return false to skip it.

**Parameters**
`$notify (bool)` Whether to send the email; true by default.
`$order_id (int)` The order id.

Fires in inc/classes/core/wp_easycart_checkout_fields_pro.php · notify_after_payment()

`wp_easycart_ecv2_custom_email_template` PRO
Filters the file path of the template used for a custom email sent from an order.

**Parameters**
`$template (string)` Absolute path to the custom email template.
`$order (object)` The order.

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · send_message()

`wp_easycart_email_accent_color`
Filters the accent color used in email designs.

**Parameters**
`$accent (string)` Hex color; must be valid or #222222 is used.
`$args (array)` Email design arguments.

Fires in inc/classes/core/class-wp-easycart-email-design.php · context()

`wp_easycart_email_address_lines`
Filters the address lines printed in an email for a billing or shipping address.

**Parameters**
`$lines (array)` Address lines.
`$side (string)` Which address is being printed.
`$source` The order or address data the lines come from.

Fires in inc/classes/core/class-wp-easycart-email-design.php · address() +1 more place

`wp_easycart_email_checks`
Filters the list of email delivery health checks shown in the email health screen.

**Parameters**
`$out (array)` Each check with key, status, title, detail and optional fix_label and fix_url.

Fires in inc/classes/core/ec_email.php · checks()

`wp_easycart_email_design_context`
Filters the design context (store name, logo, colors and layout values) used to build an email.

**Parameters**
`$ctx (array)` The email design context.
`$args (array)` Email design arguments.

Fires in inc/classes/core/class-wp-easycart-email-design.php · context()

`wp_easycart_email_design_flat`
Filters whether an email is drawn flat, without the outer page frame.

**Parameters**
`$value (bool)` Whether to use a flat layout; false by default.
`$args (array)` Email design arguments.

Fires in inc/classes/core/class-wp-easycart-email-design.php · get_open()

`wp_easycart_email_dkim_selectors`
Filters the DKIM selector names checked when testing the store’s email domain DNS records.

**Parameters**
`$value (array)` List of selector names such as default, google, selector1, k1 and mailgun.

Fires in inc/classes/core/ec_email.php · dns_checks()

`wp_easycart_email_footer_html`
Filters the footer HTML at the bottom of an email.

**Parameters**
`$footer (string)` Footer HTML.
`$args (array)` Email design arguments.

Fires in inc/classes/core/class-wp-easycart-email-design.php · get_close()

`wp_easycart_email_help_links`
Filters the help links shown in the email settings screen.

**Parameters**
`$value (array)` guide, docs and video URLs.

Fires in admin/inc/wp_easycart_admin_email_help.php · links()

`wp_easycart_email_is_store_email`
Filters whether an outgoing email is treated as one of the store’s own emails.

**Parameters**
`$value (bool)` Whether it is a store email; false unless the from address matches the store’s.
`$atts (array)` The email attributes, including headers.

Fires in inc/classes/core/ec_email.php · is_store_email()

`wp_easycart_email_is_store_type`
Filters whether an email log type goes to the store rather than to a customer, such as order copies and alerts. When a run of failed emails holds only store types, the Deliverability card says store emails are failing instead of warning that customers are not getting receipts.

**Parameters**
`$store` (bool) True for types ending in \_store and for low_stock, out_of_stock, review_alert, checkout_protection, checkout_fields and reports_summary.
`$type` (string) The email log type.

Fires in inc/classes/core/ec_email.php · is_store_type()

`wp_easycart_email_log_per_page`
Filters how many entries appear per page in the email log; the value is kept between 5 and 200.

**Parameters**
`$value (int)` Entries per page.

Fires in admin/inc/wp_easycart_admin_email_health.php · print_log_page()

`wp_easycart_email_log_retention_days`
Filters how many days email log and sent queue rows are kept before they are deleted.

**Parameters**
`$value (int)` Retention in days.

Fires in inc/classes/core/ec_email.php · prune()

`wp_easycart_email_mailer`
Filters the mailer information detected for the site (the SMTP or mail plugin sending email).

**Parameters**
`$mailer (array)` Detected mailer details.

Fires in inc/classes/core/ec_email.php · detect_mailer()

`wp_easycart_email_mailer_plugins`
Filters the list of known SMTP and mail plugins used to detect how the site sends email.

**Parameters**
`$list (array)` Plugin slug => name, files, folders, settings, test, where, service and passive.

Fires in inc/classes/core/ec_email.php · mailer_plugins()

`wp_easycart_email_queue_attachments`
Filters the list of file paths attached to a queued email when the queue rebuilds its attachments for a retry.

**Parameters**
`$files` (array) file paths to attach
`$recipe` (array) the stored attachment recipe, with ‘specs’ and ‘files’ keys
`$q` (object) the email queue row being retried

Fires in inc/classes/core/ec_email.php · rebuild_attachments()

`wp_easycart_email_queue_enabled`
Filters whether the email queue, which retries failed sends, is enabled; defaults to on unless the queue option is turned off.

**Parameters**
`$enabled` (bool) true when the queue is enabled, from the ec_option_email_queue_enabled option (on when unset)

Fires in inc/classes/core/ec_email.php · queue_enabled()

`wp_easycart_email_receipt_image_width`
Filters the width in pixels of product images in receipt, invoice and abandoned cart emails.

**Parameters**
`$width` (int) image width in pixels, default 70

Fires in design/layout/base-responsive-v3/ec_abandoned_cart_email.php +4 more places

`wp_easycart_email_sending_services`
Filters the list of email sending services (name, SPF include and DKIM setup instructions) used by the email deliverability help screens.

**Parameters**
`$services` (array) service slug => array with ‘name’, ‘spf’ and ‘dkim’ keys; defaults include Google Workspace, Microsoft 365, SendGrid, Mailgun, Brevo, Amazon SES and others

Fires in inc/classes/core/ec_email.php · sending_services()

`wp_easycart_email_smtp_plugins`
Filters the names of the SMTP or mail plugins detected as active on the site.

**Parameters**
`$found` (array) display names of the detected mail plugins
`$active` the active plugins list used to detect them

Fires in inc/classes/core/ec_email.php · detect_smtp_plugins()

`wp_easycart_gift_receipt_email_content` PRO
Filters the HTML body of the gift receipt email before it is sent.

**Parameters**
`$html` (string) email HTML
`order id` (int) the order ID
`$args` (array) send arguments

Fires in inc/classes/core/wp_easycart_order_extras_pro.php · send_gift_receipt()

`wp_easycart_gift_receipt_email_subject` PRO
Filters the subject line of the gift receipt email.

**Parameters**
`$subject` (string) email subject
`order id` (int) the order ID
`$from_name` (string) the billing first name of the order

Fires in inc/classes/core/wp_easycart_order_extras_pro.php · send_gift_receipt()

`wp_easycart_invoice_email_attachments` PRO
Filters the file paths attached to the invoice email; extensions add generated files such as the invoice PDF.

**Parameters**
`$files` (array) file paths, empty by default
`order id` (int) the order ID
`recipient` (string) ‘customer’
`$args` (array) send arguments

Fires in inc/classes/core/wp_easycart_invoices_pro.php · send_invoice()

`wp_easycart_invoice_email_content` PRO
Filters the HTML body of the invoice email before it is sent.

**Parameters**
`$html` (string) invoice email HTML
`order id` (int) the order ID

Fires in inc/classes/core/wp_easycart_invoices_pro.php · render_email() +1 more place

`wp_easycart_invoice_email_subject` PRO
Filters the subject line of the invoice email.

**Parameters**
`$subject` (string) email subject, the invoice label plus the invoice number or order number
`order id` (int) the order ID
`$record` the invoice record, or false when none is issued

Fires in inc/classes/core/wp_easycart_invoices_pro.php · send_invoice()

`wp_easycart_message_email_attachments` PRO
Filters the files attached to a custom message email sent from the admin order screen.

**Parameters**
`$attachments` (array) file paths, empty by default
`$order_id` (int) the order ID
`recipient` (string) ‘customer’
`$send_args` (array) per-send choices

Fires in admin/inc/wp_easycart_admin_details_orders_pro_v2.php · ajax_send_custom_email()

`wp_easycart_order_email_attachments`
Filters the files attached to order emails such as receipts and invoices; returned paths are added to the built-in attachments.

**Parameters**
`$attachments` (array) file paths, empty by default
`order id` (int) the order ID
`$recipient` (string) ‘customer’ or ‘admin’
`$context` (array) email kind (receipt or invoice), the order display object and per-send args

Fires in inc/classes/account/ec_orderdisplay.php · get_email_attachments()

`wp_easycart_order_email_log_meta`
Filters extra key and text details saved in the order log entry when an order email is sent from the admin.

**Parameters**
`$meta` (array) key => text, empty by default
`order id` (int) the order ID
`log key` (string) order-receipt-email, order-shipping-email or order-packing-slip-email
`$args` (array) per-send choices

Fires in admin/inc/wp_easycart_admin_orders.php · log_email_extras()

`wp_easycart_order_email_preview`
Filters the preview HTML shown for an order email on the admin order screen, letting extensions supply previews for their own email kinds.

**Parameters**
`$html` (string) preview HTML so far, empty for an email kind WP EasyCart does not know
`$email` (string) the email kind
`$order_id` (int) the order ID
`$args` (array) per-send choices

Fires in admin/inc/wp_easycart_admin_orders.php · ecv2_order_email_preview()

`wp_easycart_order_send_args`
Filters the extra arguments used when an order email is sent or previewed from the admin order screen.

**Parameters**
`$args` (array) Send arguments, empty by default.
`$order_id` (int) The order id.
`$email` (string) Email type: receipt, shipped or packing_slip.

Fires in admin/inc/wp_easycart_admin_orders.php · ecv2_order_send_args()

`wp_easycart_packing_slip_email_attachments` PRO
Filters the files attached to a packing slip email.

**Parameters**
`$files` (array) Attachment file paths, empty by default.
`$order_id` (int) The order id.
`$recipient` (string) Recipient, always ‘customer’.
`$args` (array) Per-send choices.

Fires in inc/classes/core/wp_easycart_documents_pro.php · send_packing_slip_email()

`wp_easycart_packing_slip_email_content` PRO
Filters the HTML body of the packing slip email before it is sent.

**Parameters**
`$html` (string) The email HTML.
`$order_id` (int) The order id.
`$args` (array) Per-send choices.

Fires in inc/classes/core/wp_easycart_documents_pro.php · send_packing_slip_email()

`wp_easycart_packing_slip_email_subject` PRO
Filters the subject line of the packing slip email.

**Parameters**
`$subject` (string) The subject, including the order number.
`$order_id` (int) The order id.

Fires in inc/classes/core/wp_easycart_documents_pro.php · send_packing_slip_email()

`wp_easycart_pdf_receipt_emails` PRO
Filters which emails may carry the PDF receipt or invoice attachment.

**Parameters**
`$emails` (array) Email types, default receipt and invoice.

Fires in inc/classes/core/wp_easycart_documents_pro.php · receipt_attachments() +1 more place

`wp_easycart_setup_email_list`
Filters the emails listed on the Email settings page, with when each is sent and its controls.

**Parameters**
`$out` (array) Key => label, when, types, control, plan, url and copies.

Fires in admin/inc/setup/wp_easycart_admin_setup_emails.php · emails()

`wp_easycart_setup_email_state`
Filters how the Email settings page rates the store’s email sending, from the last seven days of the email log.

**Parameters**
`$state` (string) new, failing or working.
`$h` (array|null) The email health; null without the email log.

Fires in admin/inc/setup/wp_easycart_admin_setup_emails.php · mail_state()

`wp_easycart_setup_email_steps`
Filters the set-up steps on the Email settings page.

**Parameters**
`$steps` (array) Each: key, state, title, text and html.

Fires in admin/inc/setup/wp_easycart_admin_setup_emails.php · steps()

`wp_easycart_shipping_email_accent_color`
Filters the accent color used in the shipping notification email.

**Parameters**
`$accent` (string) Accent color, defaults to the store’s main details color.

Fires in design/layout/base-responsive-v3/ec_shipping_email.php

`wp_easycart_shipping_email_address_lines`
Filters the address lines printed in the shipping email for the billing or shipping address.

**Parameters**
`$lines` (array) Formatted address lines.
`$type` (string) Address type, billing or shipping.
`$order` (object) The order row.

Fires in design/layout/base-responsive-v3/ec_shipping_email.php +1 more place

`wp_easycart_shipping_email_attachments`
Filters the list of file attachments added to the customer shipping email.

**Parameters**
`$attachments` (array) Attachments, starts empty.
`$order_id` (int) Order id.
`$recipient` Email recipient.
`$args` Options passed when sending the shipping email.

Fires in admin/inc/wp_easycart_admin_orders.php · shipping_attachments()

`wp_easycart_shipping_email_content`
Filters the rendered HTML body of the customer shipping email before it is sent.

**Parameters**
`$message` (string) Email HTML.
`$order_id` (int) Order id.
`$args` Options passed when sending the shipping email.

Fires in admin/inc/wp_easycart_admin_orders.php · send_customer_shipping_email()

`wp_easycart_shipping_email_subject`
Filters the subject line of the customer shipping email.

**Parameters**
`$subject` (string) Subject, the shipping email title followed by the order id.
`$order_id` (int) Order id.

Fires in admin/inc/wp_easycart_admin_orders.php · send_customer_shipping_email()

`wp_easycart_shipping_email_track_button_text`
Filters the text of the track-your-package button in the shipping email.

**Parameters**
`$text` (string) Button text, default Track your package.
`$order` (object) The order row.

Fires in design/layout/base-responsive-v3/ec_shipping_email.php

`wp_easycart_shipping_email_tracking_url`
Filters the carrier tracking link used by the shipping email button.

**Parameters**
`$url` (string) Tracking URL built from the carrier and tracking number.
`$carrier` (string) Carrier name.
`$tracking` (string) Tracking number.
`$order` (object) The order row.

Fires in design/layout/base-responsive-v3/ec_shipping_email.php

`wp_easycart_stock_alert_recipients` PRO
Filters the admin email addresses that receive low stock alerts and the low stock digest.

**Parameters**
`$recipients` (string) Comma-separated addresses, defaults to the store notification (BCC) addresses.

Fires in inc/classes/core/ec_notifications.php · alert_recipients() +1 more place

`wp_easycart_stock_alert_skip_sources`
Filters the stock change sources that do not trigger a low stock alert email.

**Parameters**
`$skip_sources` (array) Source slugs to skip, default import and square.

Fires in inc/classes/core/ec_notifications.php · check_stock_change()

`wp_easycart_subscription_reminder_data`
Filters the data a subscription reminder email is built from: the renewal reminder, the free trial ending reminder and the price change notice.

**Parameters**
`$reminder` (array) Keys kind (renewal, trial or price), subscription_id, title, first_name, date, at, amount, amount_text, period_text, price_text, old_price_text and link (the subscription in My Account).
`$row` (object) The subscription row.

Fires in inc/classes/core/class-wp-easycart-subscription-reminders.php · build()

`wp_easycart_subscription_reminder_live`
Lets an extension supply the live Stripe subscription a due reminder is checked against instead of asking Stripe; its status, dates, cancel settings and items decide whether the reminder goes, its date and its amount.

**Parameters**
`$live` (object|null) null by default (ask Stripe); return an object shaped like Stripe’s subscription.
`$row` (object) The ec_subscription row.
`$kind` (string) renewal or trial.

Fires in inc/classes/core/class-wp-easycart-subscription-reminders.php · confirm()

`wp_easycart_subscription_reminder_settings`
Filters the subscription reminder settings before the reminder job uses them to decide whether it runs and which reminders are due; the days are then kept between 1 and 90.

**Parameters**
`$settings` (array) Keys renewal and trial (on or off), renewal_days and trial_days, from the Subscription reminders email settings.

Fires in inc/classes/core/class-wp-easycart-subscription-reminders.php · settings()

`wp_easycart_subscription_renewal_reminder_applies`
Filters whether an Active subscription inside the reminder window gets a renewal reminder email; by default only subscriptions billed yearly or less often do.

**Parameters**
`$applies` (bool) True when it bills once a year or less often.
`$row` (object) The ec_subscription row.

Fires in inc/classes/core/class-wp-easycart-subscription-reminders.php · due_item()

`wp_easycart_withdrawal_recipients`
Filters who gets the store’s email notice when an EU withdrawal statement arrives.

**Parameters**
`$list` (string\[\]) Email addresses: the Send the store’s copy to setting, else the order notification addresses, else the site’s admin email.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · recipients()

`wpeasycart_email_method` PRO
Filters the email send method used for store emails, where 1 sends through wp_mail.

**Parameters**
`$email_send_method (string)` Value of the ec_option_use_wp_mail setting; ‘1’ uses wp_mail.

Fires in wpeasycart.php · wp_easycart_send_activation_email() +20 more places

`wpeasycart_email_receipt_enable_view_order_button`
Filters whether the order receipt email shows a View Order button instead of a plain link.

**Parameters**
`$enable (bool)` False by default; return true to show the button.

Fires in design/layout/base-responsive-v3/ec_cart_email_receipt.php

`wpeasycart_inquiry_email_admin_content`
Filters the HTML content of the product inquiry email sent to the store.

**Parameters**
`$admin_message (string)` Store copy of the inquiry email body.
`$filter_options (array)` Inquiry details passed to the filters.

Fires in inc/classes/cart/ec_cartpage.php · process_send_inquiry()

`wpeasycart_inquiry_email_admin_subject`
Filters the subject of the product inquiry email sent to the store.

**Parameters**
`$admin_subject (string)` Subject line.

Fires in inc/classes/cart/ec_cartpage.php · process_send_inquiry()

`wpeasycart_inquiry_email_content`
Filters the HTML content of the product inquiry email sent to the shopper.

**Parameters**
`$message (string)` Shopper copy of the inquiry email body.
`$filter_options (array)` Inquiry details passed to the filters.

Fires in inc/classes/cart/ec_cartpage.php · process_send_inquiry()

`wpeasycart_inquiry_email_recipient`
Filters the address or addresses that receive a product inquiry.

**Parameters**
`$store_email (string)` Recipient addresses.
`$product (object)` Product row the inquiry is about.

Fires in inc/classes/cart/ec_cartpage.php · process_send_inquiry()

`wpeasycart_inquiry_email_subject`
Filters the subject of the product inquiry email sent to the shopper.

**Parameters**
`$subject (string)` Subject line.

Fires in inc/classes/cart/ec_cartpage.php · process_send_inquiry()

`wpeasycart_order_email_admin_content`
Filters the HTML content of the order receipt email sent to the store.

**Parameters**
`$admin_message (string)` Store copy of the receipt email body.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt()

`wpeasycart_order_email_admin_email`
Filters the address or addresses that receive the store copy of an order receipt.

**Parameters**
`$admin_email (string)` Value of the ec_option_bcc_email_addresses setting.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt()

`wpeasycart_order_email_admin_title`
Filters the subject of the order receipt email sent to the store.

**Parameters**
`$admin_title (string)` Subject line.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt()

`wpeasycart_order_email_attachments`
Filters the list of file attachments added to an order receipt or invoice email.

**Parameters**
`$attachments (array)` Attachment file paths; empty by default.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt() +1 more place

`wpeasycart_order_email_customer_content`
Filters the HTML content of the order receipt email sent to the customer.

**Parameters**
`$message (string)` Customer receipt email body.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt()

`wpeasycart_order_email_customer_title`
Filters the subject of the order receipt email sent to the customer.

**Parameters**
`$customer_title (string)` Subject line.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_email_receipt()

`wpeasycart_refund_email_admin_content`
Filters the HTML content of the refund email sent to the store.

**Parameters**
`$admin_message (string)` Store copy of the refund email body.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

`wpeasycart_refund_email_admin_email`
Filters the address or addresses that receive the store copy of a refund email.

**Parameters**
`$admin_email (string)` Value of the ec_option_bcc_email_addresses setting.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

`wpeasycart_refund_email_admin_title`
Filters the subject of the refund email sent to the store.

**Parameters**
`$admin_title (string)` Subject line.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

`wpeasycart_refund_email_attachments`
Filters the list of file attachments added to a refund email.

**Parameters**
`$attachments (array)` Attachment file paths; empty by default.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

`wpeasycart_refund_email_customer_content`
Filters the HTML content of the refund email sent to the customer.

**Parameters**
`$message (string)` Customer refund email body.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

`wpeasycart_refund_email_customer_title`
Filters the subject of the refund email sent to the customer.

**Parameters**
`$customer_title (string)` Subject line.
`$order_id (int)` Order id.

Fires in inc/classes/account/ec_orderdisplay.php · send_refund_email()

### Offers and coupons

Grouped by what they are about

`wp_easycart_admin_coupon_details_stepfour_fields_list` PRO
Filters the list of field definitions shown in step four of the admin promotion details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as panel, name, type and label.

Fires in admin/inc/wp_easycart_admin_details_promotions.php · stepfour_fields()

`wp_easycart_admin_coupon_details_stepone_fields_list` PRO
Filters the list of field definitions shown in step one of the admin coupon or promotion details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as panel, name, type and label.

Fires in admin/inc/wp_easycart_admin_details_coupons.php · stepone_fields() +1 more place

`wp_easycart_admin_coupon_details_stepthree_fields_list` PRO
Filters the list of field definitions shown in step three of the admin coupon details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as panel, name, type and label.

Fires in admin/inc/wp_easycart_admin_details_coupons.php · stepthree_fields() +2 more places

`wp_easycart_admin_coupon_details_steptwo_fields_list` PRO
Filters the list of field definitions shown in step two of the admin coupon or promotion details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as panel, name, type and label.

Fires in admin/inc/wp_easycart_admin_details_coupons.php · steptwo_fields() +1 more place

`wp_easycart_admin_offer_list_filters` PRO
Filters the filter controls shown above the admin offers list.

**Parameters**
`$filters (array)` Filter definitions, each with data, label, type and where clause.

Fires in admin/inc/wp_easycart_admin_offer_table.php · setup()

`wp_easycart_admin_product_offer_test` PRO
Filters the result of testing a typed offer code against a product in the product editor’s Offers section.

**Parameters**
`$result` (array) the test result built by the offer code test
`$product` (object) the product
`$raw_code` (string) the code as typed

Fires in admin/inc/wp_easycart_admin_products_pro_v2.php · wp_easycart_pro_v2_offer_code_test()

`wp_easycart_admin_product_offers_group_cap` PRO
Filters the maximum number of offers listed per group in the product editor’s Offers section (default 100).

**Parameters**
`$cap` (int) maximum number of offers per group, default 100
`$product_id` (int) the product id

Fires in admin/inc/wp_easycart_admin_products_pro_v2.php · ecv2_product_offers()

`wp_easycart_cart_link_destination`
Filters the URL a shopper is redirected to after a cart link is applied (the cart page, or checkout for links set to go to checkout).

**Parameters**
`$destination (string)` The cart or checkout page URL.
`$link (object)` The cart link record.
`$added` Result of adding the link’s items to the cart.

Fires in inc/classes/core/class-wp-easycart-cart-link.php · resolve()

`wp_easycart_cart_link_url`
Filters the public URL of a cart link, built from the store page and the link’s token.

**Parameters**
`$url (string)` The store page URL with the ec_cart_apply token added.
`$token (string)` The cart link token.

Fires in inc/classes/core/class-wp-easycart-cart-link.php · get_url()

`wp_easycart_discount_display_label`
Filters the words an applied offer is printed with on a customer-facing document.

**Parameters**
`$text` (string) The label, with ” (CODE)” when the code is shown.
`$offer` (array) The applied offer entry.
`$show` (bool) Whether the code is shown.
`$context` (string) Where it prints.

Fires in inc/classes/core/class-wp-easycart-order-discounts.php · display_label()

`wp_easycart_ecv2_cart_link_get`
Filters the cart link record returned to the admin editor when a cart link is loaded.

**Parameters**
`$link (object)` The cart link, including its public url.

Fires in admin/inc/wp_easycart_admin_cart_links.php · ajax_get()

`wp_easycart_ecv2_cart_link_is_pro`
Filters whether the PRO cart links features are active in the admin cart links screen.

**Parameters**
`$pro (bool)` True when PRO has hooked the cart link max items filter.

Fires in admin/inc/wp_easycart_admin_cart_links.php · is_pro()

`wp_easycart_ecv2_cart_link_max_items`
Filters the maximum number of products a saved cart link may hold; the free plugin allows 1 and PRO raises it.

**Parameters**
`$value (int)` Maximum items per cart link; 1 by default.

Fires in admin/inc/wp_easycart_admin_cart_links.php · ajax_save()

`wp_easycart_ecv2_cart_link_product_data`
Filters the product data returned to the cart link editor when a product is chosen, letting PRO add modifiers.

**Parameters**
`$payload (array)` Product data including sku, price, basic options and modifiers.
`$product (object)` The product row.

Fires in admin/inc/wp_easycart_admin_cart_links.php · ajax_product_data()

`wp_easycart_ecv2_cart_link_save_data`
Filters the data saved for a cart link, such as promo codes, expiry and max uses.

**Parameters**
`$data (array)` The cart link fields to save.
`$_POST (array)` The submitted form data.

Fires in admin/inc/wp_easycart_admin_cart_links.php · ajax_save()

`wp_easycart_ecv2_cart_link_save_items`
Filters the items saved for a cart link, letting PRO add modifier values.

**Parameters**
`$items (array)` The cart link items.
`$_POST (array)` The submitted form data.

Fires in admin/inc/wp_easycart_admin_cart_links.php · ajax_save()

`wp_easycart_groupon_uses_per_code` Groupon
Filters how many times each imported deal code can be used.

**Parameters**
`$per_code` (int) uses per code, default 1
`$deal` the deal the codes are imported into

Fires in includes/class-wp-easycart-groupon-codes.php · import()

`wp_easycart_offer_badge_default_text` PRO
Filters the words an offer’s badge shows when the store left the badge text empty.

**Parameters**
`$text` (string) The badge text (plain text).
`$offer` (ec_offer) The offer.

Fires in inc/classes/core/ec_offer_display.php · default_badge_text()

`wp_easycart_offer_callout_icon`
Filters the icon printed before an offer’s callout on a product; return markup, or an empty string for no icon.

**Parameters**
`'<span class="dashicons dashicons-megaphone ..."></span>'` (string) The icon markup, a megaphone by default.
`$callout` (array) The callout, with its text and countdown.
`$callout_product_id` (int) The product id.

Fires in design/layout/base-responsive-v3/ec_offer_product_callout.php

`wp_easycart_offer_compare_at_sales` PRO
Filters the products the cart’s offer lines count as on sale because of their compare-at price. Return an empty array to count only classic promotions.

**Parameters**
`$sales` (bool\[\]) product_id => true.
`$cart_items` (array) The cart items.

Fires in inc/classes/core/ec_offer_engine.php · compare_at_sales()

`wp_easycart_offer_completed_order_join` PRO
Filters the SQL join that limits offer purchase history checks to completed orders; by default only orders with an approved status count.

**Parameters**
`$join` (string) SQL INNER JOIN clause on ec_orderstatus where is_approved = 1

Fires in inc/classes/core/ec_offer_engine.php · completed_order_join()

`wp_easycart_offer_context` PRO
Filters the context array (cart session, customer, roles and coupon code) the offer engine evaluates against.

**Parameters**
`$context` (array) context with session_id, user_id, email, roles, logged_in and legacy_coupon_code

Fires in inc/classes/core/ec_offer_integration.php · get_context()

`wp_easycart_offer_custom_action` PRO
Lets an extension build the application for a custom offer action type; return an array to apply it, or false to skip.

**Parameters**
`$application` (array|false) offer application, false by default
`$offer` the offer being applied
`$lines` the cart lines
`$buy_indexes` indexes of the lines that qualify
`$context` the offer context

Fires in inc/classes/core/ec_offer_engine.php · build_application()

`wp_easycart_offer_custom_condition` PRO
Lets an extension evaluate a custom offer condition type; return true when the condition passes.

**Parameters**
`$passes` (bool) result, false by default
`$condition` the condition being evaluated
`$offer` the offer
`$lines` the cart lines
`$eligible_indexes` indexes of the eligible lines
`$context` the offer context

Fires in inc/classes/core/ec_offer_engine.php · condition_passes()

`wp_easycart_offer_eligible_lines` PRO
Filters the cart lines an offer is eligible to apply to.

**Parameters**
`$eligible` (array) indexes of the eligible cart lines
`$offer` the offer
`$lines` the cart lines
`$side` which side of the offer is being checked

Fires in inc/classes/core/ec_offer_engine.php · get_eligible_lines()

`wp_easycart_offer_evaluation_result` PRO
Filters the final result of evaluating all offers against a cart.

**Parameters**
`$result` (object) the evaluation result, including the lines
`$cart_items` the cart items evaluated
`$context` the offer context

Fires in inc/classes/core/ec_offer_engine.php · evaluate()

`wp_easycart_offer_line_savings`
Filters the savings figures (code, automatic and shown) calculated for an order line from its offer discounts.

**Parameters**
`$savings` (array) code, automatic and shown amounts for the whole line, in base currency
`$offer_discounts` (array|string) the line’s offer discounts

Fires in wpeasycart.php · wp_easycart_offer_line_savings()

`wp_easycart_offer_product_scope_match` PRO
Filters the result of checking whether an offer applies to a product.

**Parameters**
`$result` (array) the scope match result, including applies, coverage and blocker
`$offer` the offer
`$product` the product checked

Fires in inc/classes/core/ec_offer_engine.php · product_scope_match() +2 more places

`wp_easycart_offer_reversal_statuses`
Filters the order status IDs that reverse offer usage when an order moves to that status.

**Parameters**
`$statuses` (array) order status IDs, default 16 and 19

Fires in wpeasycart.php · wp_easycart_offers_status_listener()

`wp_easycart_offers_available` PRO
Filters whether the offers engine is available, optionally for a minimum version.

**Parameters**
`$available` (bool) true by default
`$min_version` (string) minimum offers version required, or empty

Fires in inc/classes/core/ec_offer_bootstrap.php · wp_easycart_offers_available()

`wp_easycart_offers_licensed` PRO
Filters whether the offers feature is licensed.

**Parameters**
`$licensed` (bool) whether the WP EasyCart license is valid

Fires in inc/classes/core/ec_offer_bootstrap.php · wp_easycart_offers_licensed()

`wp_easycart_offers_listing_price`
Filters the price a store product card shows, asked only where a card can show an offer’s price.

**Parameters**
`$answer` (array) offer, price and strike.
`$product` (ec_product) The product.

Fires in wpeasycart.php · wp_easycart_offers_listing_price()

`wp_easycart_product_offers_candidate_limit` PRO
Filters how many candidate offers the product editor’s offers panel loads for a product.

**Parameters**
`$limit` (int) Candidate limit, default 100.
`$product_id` (int) The product id.

Fires in admin/inc/wp_easycart_admin_products_pro_v2.php · ecv2_product_offers()

`wp_easycart_product_offers_candidate_limit_max` PRO
Filters the maximum number of candidate offers the product editor’s offers panel can load when checking more offers.

**Parameters**
`$limit` (int) Maximum limit, default 500.
`$product_id` (int) The product id.

Fires in admin/inc/wp_easycart_admin_products_pro_v2.php · ecv2_product_offers()

`wp_easycart_show_discount_codes`
Filters whether a customer-facing document prints discount codes. Default the store’s setting.

**Parameters**
`$show` (bool) The setting.
`$context` (string) Where it prints.

Fires in inc/classes/core/class-wp-easycart-order-discounts.php · show_codes()

### Reviews

Grouped by what they are about

`wp_easycart_review_email_text`
Filters a text string used in the review request and review reply emails.

**Parameters**
`$fallback` (string) The default text.
`$key` (string) Identifier of the text, such as greeting.

Fires in design/layout/base-responsive-v3/ec_review_reply_email.php +1 more place

`wp_easycart_review_reply_label`
Filters the label above the store’s reply to a review.

**Parameters**
`$label` (string) sprintf format with one %s for the responder, default ‘Response from %s’.

Fires in inc/classes/core/ec_review.php · display_reply()

`wp_easycart_review_reply_subject`
Filters the subject of the email sent to a customer when the store replies to their review.

**Parameters**
`$subject` (string) The subject line.
`$vars` (array) Template variables for the email, including store_name.

Fires in inc/classes/core/ec_reviews.php · send_reply_email()

`wp_easycart_review_request_subject`
Filters the subject of the review request and review reminder emails.

**Parameters**
`$subject` (string) The subject line, with {store} and {first_name} already replaced.
`$vars` (array) Template variables for the email.

Fires in inc/classes/core/ec_reviews.php · send_request_email()

`wp_easycart_review_verified_label`
Filters the Verified buyer badge text shown on a review.

**Parameters**
`$label` (string) Badge text, default ‘Verified buyer’.

Fires in inc/classes/core/ec_review.php · display_verified_badge()

`wp_easycart_reviews_pagnation_perpage`
Filters how many reviews are shown per page in the product reviews list.

**Parameters**
`$perpage` (int) Reviews per page, default 6.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +2 more places

`wp_easycart_reviews_pro_enabled`
Filters whether the PRO review features are treated as enabled.

**Parameters**
`$pro` (bool) True when PRO is active and licensed.

Fires in inc/classes/core/ec_reviews.php · is_pro()

### Reports and analytics

Grouped by what they are about

`wp_easycart_export_report_list`
Filters the download links produced when a report export job finishes.

**Parameters**
`$reports` (object) report keys (report1, report2, reporttax) => file URL
`$start_date` report start date from the job
`$end_date` report end date from the job
`product id` (int) product filter from the job
`country` shipping country filter from the job
`billing country` billing country filter from the job

Fires in admin/inc/wp_easycart_admin.php · report_job_step()

`wp_easycart_google_ads_conversion`
Filters the Google Ads conversion a purchase is sent to. Return an empty string to send none.

**Parameters**
`$send_to` (string) AW-ID/label.

Fires in inc/classes/core/class-wp-easycart-google-ads.php · wp_easycart_google_ads_conversion()

`wp_easycart_meta_advanced_matching`
Filters the customer matching data (hashed email and external ID) sent with Meta Pixel events.

**Parameters**
`$matching` (array) advanced matching values: em and external_id
`$user_id` (int) account ID, 0 for a guest
`$email` (string) the email, when known

Fires in inc/classes/core/class-wp-easycart-meta.php · advanced_matching()

`wp_easycart_meta_capi_calling_code` PRO
Filters the phone calling code for a country used in Meta Conversions API customer data.

**Parameters**
`$code` (string) calling code for the country
`$country` (string) lowercased country code

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · calling_code()

`wp_easycart_meta_capi_enabled` PRO
Filters whether the Meta Conversions API (server-side events) is enabled.

**Parameters**
`$enabled` (bool) true when the setting, license, pixel ID and access token are all present

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · is_enabled()

`wp_easycart_meta_capi_event` PRO
Filters a Meta Conversions API event before it is queued; return a non-array to skip it.

**Parameters**
`$event` (array) the finalized event payload
`$event_name` (string) the event name
`$context` the event context

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · on_meta_event()

`wp_easycart_meta_capi_purchase_event` PRO
Filters the Meta Conversions API Purchase event built for an order.

**Parameters**
`$event` (array) the finalized purchase event
`$order` (object) the order
`$context` the event context

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · purchase_event()

`wp_easycart_meta_capi_send_renewals` PRO
Filters whether subscription renewal orders are sent to Meta as Purchase events.

**Parameters**
`$send` (bool) true by default
`order id` (int) the order ID

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · purchase_event()

`wp_easycart_meta_capi_token` PRO
Filters the access token used for the Meta Conversions API.

**Parameters**
`$token` (string) access token, from the connected extension or the saved setting

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · token()

`wp_easycart_meta_currency`
Filters the currency code sent with Meta events.

**Parameters**
`$currency` (string) ISO 4217 code of the store currency

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_meta_currency()

`wp_easycart_meta_external_id`
Filters the hashed external ID sent to Meta for a customer.

**Parameters**
`$hashed` (string) SHA-256 hex hash, or an empty string
`$user_id` (int) account ID
`$email` (string) lowercased email

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_meta_external_id()

`wp_easycart_meta_is_storefront_request`
Filters whether the current request is a storefront request that may announce Meta events.

**Parameters**
`$storefront` (bool) the answer so far

Fires in inc/classes/core/class-wp-easycart-meta.php · is_storefront()

`wp_easycart_meta_parse_content_id`
Filters the result of splitting a Meta content ID into product and variant parts.

**Parameters**
`$parsed` (array|false) parsed content ID, or false when it cannot be parsed
`$content_id` (string) the content ID

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_meta_parse_content_id()

`wp_easycart_meta_pixel_id`
Filters the Meta Pixel ID the storefront uses; non-digits are removed from the result.

**Parameters**
`$pixel_id` (string) pixel ID digits, or an empty string

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_meta_pixel_id()

`wp_easycart_order_source`
Filters the traffic source data saved on an order before it is written to the database.

**Parameters**
`$row` (array) source_type, source_name, last_source_type, last_source_name and source_data.
`$order_id` (int) The order id.
`$kind` (string) How the order was created: checkout, staff or renewal.
`$data` (array|null) The visitor’s recorded visits, checkout orders only.

Fires in inc/classes/core/class-wp-easycart-order-source.php · stamp()

`wp_easycart_order_source_lists`
Filters the referrer host lists (including the ignore list) used to classify where an order came from.

**Parameters**
`$lists` (array) Host lists used by order source tracking, including the ignore list.

Fires in inc/classes/core/class-wp-easycart-order-source.php · lists()

`wp_easycart_order_sources_consent_category`
Filters the cookie consent category order source tracking waits for before capturing visits.

**Parameters**
`$category` (string) marketing or statistics.

Fires in inc/classes/core/class-wp-easycart-order-source.php · consent_category()

`wp_easycart_order_sources_pro`
Filters whether order sources are shown in full, which WP EasyCart PRO turns on when licensed.

**Parameters**
`$pro` (bool) True when PRO shows sources in full, false by default.

Fires in inc/classes/core/class-wp-easycart-order-source.php · pro()

`wp_easycart_order_sources_pro_licensed` PRO
Filters whether PRO’s order sources feature treats the store as licensed.

**Parameters**
`$licensed` (bool) True when a valid license is active.

Fires in inc/classes/core/wp_easycart_order_sources_pro.php · licensed()

`wp_easycart_order_sources_script`
Filters whether the order source capture script is loaded on storefront pages.

**Parameters**
`$load` (bool) True to enqueue the script, default true.

Fires in inc/classes/core/class-wp-easycart-order-source.php · enqueue()

`wp_easycart_pro_analytics_bot_signatures` PRO
Filters the list of user agent fragments PRO analytics treats as bots and ignores.

**Parameters**
`$signatures` (array) Lowercase user agent fragments, such as googlebot and bingbot.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · is_bot()

`wp_easycart_pro_analytics_capture_order` PRO
Filters whether PRO analytics captures the shopper’s context at order time for server-side ad and analytics events.

**Parameters**
`$wanted` (bool) True when Facebook CAPI or direct GA4 tracking is turned on.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · capture_wanted()

`wp_easycart_pro_analytics_client_ip` PRO
Filters the shopper’s IP address as detected by PRO analytics; a non-public address is discarded.

**Parameters**
`$ip` (string) The detected client IP.
`$remote` The connecting remote address the detection started from.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · client_ip()

`wp_easycart_pro_analytics_is_shopper_request` PRO
Filters whether the current request is treated as coming from a shopper for PRO analytics.

**Parameters**
`$shopper` (bool) True when the request looks like a shopper’s.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · is_shopper_request()

`wp_easycart_pro_analytics_private_query_args` PRO
Filters the query string arguments removed from a source URL before PRO analytics stores it.

**Parameters**
`$secret` (array) Query argument names to strip, such as key, token and email.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · source_url()

`wp_easycart_pro_analytics_unknown_consent` PRO
Filters whether PRO analytics sends an order’s event when the shopper’s consent is unknown.

**Parameters**
`$send` (bool) True unless consent management is on.
`$order_id` (int) The order id.
`$category` (string) Consent category: marketing or statistics.

Fires in inc/classes/analytics/wp_easycart_analytics_pro.php · unknown_consent()

`wp_easycart_product_tracking_payload`
Filters what the Elementor Product Tracking widget sends with a product page’s view events.

**Parameters**
`$data` (array) The payload.
`$product` (ec_product) The product.
`$settings` (array) The widget’s settings.

Fires in admin/elementor/modules/product-info/includes/class-wp-easycart-product-tracking.php · payload()

`wp_easycart_reports_insights`
Filters the insight messages shown on the Reports overview.

**Parameters**
`$out` (array) Insights, each with a tone and text.
`$cur` (array) Numbers for the selected range.
`$prev` (array|null) Numbers for the compare range.
`$args` (array) Report arguments.

Fires in inc/classes/core/class-wp-easycart-reports.php · insights()

`wp_easycart_reports_order_where`
Filters extra SQL conditions appended to the order queries behind reports.

**Parameters**
`$sql` (string) Extra SQL, empty by default.
`$args` (array) Report arguments.
`$alias` (string) The ec_order table alias.

Fires in inc/classes/core/class-wp-easycart-reports.php · filter_sql()

`wp_easycart_reports_pro_licensed` PRO
Filters whether the Pro Reports are open, meaning the store has a valid license.

**Parameters**
`$licensed` (bool) True for a valid license.

Fires in inc/classes/core/wp_easycart_reports_pro.php · licensed()

`wp_easycart_reports_pro_tabs`
Filters the ids of the Pro Reports tabs that WP EasyCart PRO serves.

**Parameters**
`$tabs` (string\[\]) Tab ids, empty by default.

Fires in inc/classes/core/class-wp-easycart-reports.php · pro_tabs()

`wp_easycart_reports_research_export`
Filters the research export settings on the Reports page; returns null while locked.

**Parameters**
`$research` (array|null) Array with the AJAX action and nonce, or null.

Fires in inc/classes/core/class-wp-easycart-reports.php · page_config()

`wp_easycart_reports_saved_views`
Filters the saved report views for the current person; returns null while locked.

**Parameters**
`$views` (array|null) Saved views with id, name and state, or null.

Fires in inc/classes/core/class-wp-easycart-reports.php · page_config()

`wp_easycart_reports_summary_frequencies`
Filters the frequencies available for the report summary email.

**Parameters**
`$frequencies` (array) Frequency key => label, weekly by default.

Fires in inc/classes/core/class-wp-easycart-reports.php · frequencies()

`wp_easycart_reports_summary_section_choices`
Filters the optional sections a store can choose to include in the report summary email.

**Parameters**
`$choices` (array) Section key => label, empty by default.

Fires in inc/classes/core/class-wp-easycart-reports.php · summary_section_choices()

`wp_easycart_reports_summary_sections`
Filters the extra sections added to the report summary email when it is sent.

**Parameters**
`$sections` (array) Sections to add, each with a title, empty by default.
`$args` (array) The reporting period, including start2 and end2.
`$frequency` (string) daily, weekly or monthly.
`$chosen` (array) Section keys the store picked.

Fires in inc/classes/core/class-wp-easycart-reports.php · send_summary()

`wp_easycart_reports_tab_data`
Filters the data for a Reports tab; return an array to supply the tab’s data.

**Parameters**
`$data` (array|null) Tab data, null by default.
`$tab` (string) The tab id.
`$args` (array) Report arguments.

Fires in inc/classes/core/class-wp-easycart-reports.php · payload()

`wp_easycart_reports_tabs`
Filters the tabs on the Reports page.

**Parameters**
`$tabs` (array) Tab id => details such as label, plan, feature and description.

Fires in inc/classes/core/class-wp-easycart-reports.php · tabs()

`wp_easycart_reports_totals`
Filters the headline order totals calculated for a report date range.

**Parameters**
`$out` (array) Total figures.
`$start` (string) Range start, Y-m-d.
`$end` (string) Range end, Y-m-d.
`$args` (array) Report arguments.

Fires in inc/classes/core/class-wp-easycart-reports.php · totals()

`wp_easycart_store_activity_countable`
Filters whether a storefront request counts toward store activity (product views, searches, visits, add-to-carts and checkout steps); return false to leave it out. Not asked while store activity is off or for a signed-in administrator.

**Parameters**
`$browser` (bool) True when the user agent is a browser and not a crawler.
`$agent` (string) The visitor’s user agent.

Fires in inc/classes/core/class-wp-easycart-store-activity.php · why_not()

`wp_easycart_subscription_mrr_statuses`
Filters the subscription statuses that count toward monthly recurring revenue in WP EasyCart PRO’s Reports, Subscriptions list and Plans list.

**Parameters**
`$statuses` (string\[\]) Active, canceling, Failed and past_due by default, compared without case; an empty list falls back to Active.

Fires in inc/classes/core/class-wp-easycart-subscription-prices.php · wp_easycart_subscription_mrr_statuses()

`wpeasycart_allow_pixel_code`
Filters whether the Facebook pixel base code is printed in the page head on pages that contain a WP EasyCart shortcode.

**Parameters**
`$allow (bool)` Whether the pixel code may be printed; defaults to true.

Fires in wpeasycart.php · wp_easycart_check_for_shortcode() +2 more places

`wpeasycart_marketing_consent`
Filters whether the shopper has given marketing consent for a WP Consent API category.

**Parameters**
`$has (bool)` The answer so far.
`$category (string)` WP Consent API category.

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_has_marketing_consent()

### Admin screens and settings

Grouped by what they are about

`wp_easycart_admin_ai_assistants`
Filters the AI assistants listed on the AI assistants settings page. Default Claude, ChatGPT and Gemini.

**Parameters**
`$assistants` (array) Key => label, keys and help (the maker’s set-up guide).

Fires in admin/inc/wp_easycart_admin_ai_assistants.php · assistants()

`wp_easycart_admin_bulk_category_options`
Filters the bulk actions available in the admin categories list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name and label.

Fires in admin/inc/wp_easycart_admin_category_table.php · setup()

`wp_easycart_admin_bulk_offer_options` PRO
Filters the bulk actions available in the admin offers list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name and label.

Fires in admin/inc/wp_easycart_admin_offer_table.php · setup()

`wp_easycart_admin_bulk_option_options`
Filters the bulk actions available in the admin product options list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name and label.

Fires in admin/inc/wp_easycart_admin_option_table.php · setup()

`wp_easycart_admin_bulk_order_options`
Filters the bulk actions available in the admin orders list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name, label and optionally an alt array for a sub-selector such as order status.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_admin_bulk_product_options`
Filters the bulk actions available in the admin products list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name and label.

Fires in admin/inc/wp_easycart_admin_product_table.php · setup()

`wp_easycart_admin_bulk_user_options`
Filters the bulk actions available in the admin customer accounts list.

**Parameters**
`$bulk_actions (array)` List of actions, each an array with name and label.

Fires in admin/inc/wp_easycart_admin_user_table.php · setup()

`wp_easycart_admin_capability` PRO
Filters the WordPress capability a user needs to use WP EasyCart admin actions, such as offer management.

**Parameters**
`$capability (string)` Capability name; defaults to manage_options.

Fires in admin/inc/wp_easycart_admin_offer_table.php · ecv2_offer_redemptions_panel() +3 more places

`wp_easycart_admin_category_list_filters`
Filters the filter controls shown above the admin categories list.

**Parameters**
`$filters (array)` List of filter definitions, each with data, label, type and where clause.

Fires in admin/inc/wp_easycart_admin_category_table.php · setup()

`wp_easycart_admin_claude_plugin`
Filters the Claude plugin the AI assistants settings page tells you to install.

**Parameters**
`array()` (array) marketplace, plugin and url; empty values keep the defaults.

Fires in admin/inc/wp_easycart_admin_ai_assistants.php · claude_plugin()

`wp_easycart_admin_compat_locked`
Filters whether the WP EasyCart admin is locked because a required plugin version is missing or too old.

**Parameters**
`$locked (bool)` True when at least one requirement is unmet.
`$conflicts (array)` The unmet requirements.

Fires in admin/inc/wp_easycart_admin_compat_lock.php · is_locked()

`wp_easycart_admin_compat_requirements`
Filters the plugin versions this release needs before its admin can load.

**Parameters**
`$requirements (array)` Required plugin versions that the compatibility check tests.

Fires in admin/inc/wp_easycart_admin_compat_lock.php · requirements()

`wp_easycart_admin_currency_symbol`
Filters the currency symbol shown beside currency fields in the admin product editor.

**Parameters**
`$symbol (string)` Currency symbol for the store’s currency.

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · print_field_v2()

`wp_easycart_admin_date_format`
Filters the PHP date format an admin date style prints with.

**Parameters**
`$format` (string) The date format.
`$style` (string) The date style.
`$order` (string) The day, month and year order: dmy, mdy or ymd.

Fires in inc/classes/core/class-wp-easycart-dates.php · format()

`wp_easycart_admin_date_order`
Filters the order admin dates follow, worked out from a date format. Any value other than dmy, mdy or ymd falls back to mdy.

**Parameters**
`$order` (string) dmy, mdy or ymd.
`$format` (string) The date format read.

Fires in inc/classes/core/class-wp-easycart-dates.php · order()

`wp_easycart_admin_datetime_format_oldest`
Filters how a date and time is displayed in admin list tables when it falls in a previous year.

**Parameters**
`$formatted (string)` Formatted date using the site’s date and time formats.
`$date_timestamp (int)` Unix timestamp of the date being displayed.

Fires in admin/inc/wp_easycart_admin_table.php · format_relative_date()

`wp_easycart_admin_datetime_format_same_week`
Filters how a date and time is displayed in admin list tables when it falls earlier in the past week (not today or yesterday).

**Parameters**
`$formatted (string)` Formatted weekday name and time.
`$date_timestamp (int)` Unix timestamp of the date being displayed.

Fires in admin/inc/wp_easycart_admin_table.php · format_relative_date()

`wp_easycart_admin_datetime_format_same_year`
Filters how a date and time is displayed in admin list tables when it falls earlier in the current year but more than a week ago.

**Parameters**
`$formatted (string)` Formatted short month, day and time.
`$date_timestamp (int)` Unix timestamp of the date being displayed.

Fires in admin/inc/wp_easycart_admin_table.php · format_relative_date()

`wp_easycart_admin_datetime_format_today`
Filters how a date and time is displayed in admin list tables when it falls today.

**Parameters**
`$formatted (string)` Text made of the word Today followed by the time.
`$date_timestamp (int)` Unix timestamp of the date being displayed.

Fires in admin/inc/wp_easycart_admin_table.php · format_relative_date()

`wp_easycart_admin_datetime_format_yesterday`
Filters how a date and time is displayed in admin list tables when it falls yesterday.

**Parameters**
`$formatted (string)` Text made of the word Yesterday followed by the time.
`$date_timestamp (int)` Unix timestamp of the date being displayed.

Fires in admin/inc/wp_easycart_admin_table.php · format_relative_date()

`wp_easycart_admin_deferred_checks`
Filters the admin checks that run after the page shows.

**Parameters**
`$checks` (array) Key => array( caps, ready, render ).

Fires in admin/inc/wp_easycart_admin_deferred_checks.php · checks()

`wp_easycart_admin_ecv2_advanced_pricing_enabled`
Filters whether advanced pricing (B2B tiers and role pricing) is enabled, controlling badges and menus in the admin product price cell.

**Parameters**
`$enabled (bool)` False by default; Pro turns it on.

Fires in admin/inc/wp_easycart_admin_product_table.php · print_price_cell_badges() +2 more places

`wp_easycart_admin_ecv2_option_set_search_types`
Filters which option set types can be found when searching for an option set in the admin product editor.

**Parameters**
`$types (array)` Option set type slugs; defaults to basic-combo and basic-swatch.

Fires in admin/inc/wp_easycart_admin_catalog_v2.php · ecv2_option_set_search()

`wp_easycart_admin_ecv2_price_cell_badges`
Filters the badges shown in a product’s price cell in the admin products list.

**Parameters**
`$badges (array)` Badge definitions (each with keys such as class and action).
`$result (object)` Product row being displayed.

Fires in admin/inc/wp_easycart_admin_product_table.php · print_price_cell_badges()

`wp_easycart_admin_ecv2_save_price_response`
Filters the JSON response sent back after prices are saved from the admin products list, letting Pro add data to refresh the interface.

**Parameters**
`$response (array)` Response data for the price counts and related values.
`$product_id (int)` ID of the product whose prices were saved.

Fires in admin/inc/wp_easycart_admin_product_table.php · ecv2_product_save_prices()

`wp_easycart_admin_edition_state`
Filters the license state the admin wording is based on, such as free, trial, pro or premium.

**Parameters**
`$state (array)` Array with tier (free, trial, pro or premium), lapsed (bool) and end (timestamp).

Fires in admin/inc/wp_easycart_admin_edition.php · state()

`wp_easycart_admin_error_messages`
Filters the error messages shown as notices at the top of WP EasyCart admin screens.

**Parameters**
`$messages (array)` Messages to display as error notices; empty by default.

Fires in admin/inc/wp_easycart_admin.php · print_admin_message()

`wp_easycart_admin_extensions_nav`
Filters the entries in the left navigation under Extensions in the admin.

**Parameters**
`$items (array)` Rows with label, url and current (bool) keys.

Fires in admin/inc/wp_easycart_admin_extensions.php · nav_items()

`wp_easycart_admin_fee_details_basic_fields_list` PRO
Filters the list of basic field definitions shown on the admin fee details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and value.

Fires in admin/inc/wp_easycart_admin_details_fee.php · basic_fields()

`wp_easycart_admin_fold_wp_menu`
Filters whether WordPress’s admin menu is folded to icons on a WP EasyCart screen. Default true unless the person opened the menu on an EasyCart screen (their wpecmfold user setting is o).

**Parameters**
`$folded` (bool) Whether the menu is folded.

Fires in admin/inc/wp_easycart_admin.php · wp_menu_folded()

`wp_easycart_admin_frame_fold`
Lets an admin screen fold the EasyCart menu to icons to make room for its content, as the product editor does. Return false, or an array with folded (how the menu starts), action (the AJAX action the fold button posts to) and nonce.

**Parameters**
`false` (array|false) False: the menu does not fold on this screen.

Fires in admin/template/admin-frame.php

`wp_easycart_admin_inventory_columns`
Filters the columns shown in the admin inventory table.

**Parameters**
`$columns (array)` Column definitions, each with name, label and optional responsive hide keys.
`$pro_enabled (bool)` Whether Pro is active.

Fires in admin/inc/wp_easycart_admin_inventory_table.php · \__construct()

`wp_easycart_admin_inventory_health_stats`
Filters the health stat tiles shown above the admin inventory table.

**Parameters**
`$stats (array)` Stat tiles, each with label, value, filter_value, color and group.
`$pro_enabled (bool)` Whether Pro is active.
`$threshold (int)` Low stock threshold.

Fires in admin/inc/wp_easycart_admin_inventory_table.php · build_health_stats()

`wp_easycart_admin_inventory_health_where`
Filters the SQL WHERE fragment for an inventory health filter, letting extensions handle filter keys the core does not know.

**Parameters**
`$where (string)` WHERE fragment for the selected filter.
`$filter_key (string)` Health filter key being applied.
`$context (array)` Array with threshold (low stock threshold) and pro_enabled (bool).

Fires in admin/inc/wp_easycart_admin_inventory_table.php · get_health_filter_where()

`wp_easycart_admin_inventory_qty_reason`
Filters the reason key recorded when an admin changes an inventory quantity.

**Parameters**
`$reason (string)` Default reason key: manual-set, manual-add, manual-remove or tracking-started.
`$requested (string)` Reason key posted by the quantity popover; may be empty.
`$mode (string)` Change mode: set, add or remove.

Fires in admin/inc/wp_easycart_admin_inventory.php · ajax_set_qty()

`wp_easycart_admin_inventory_qty_reason_error`
Filters whether an inventory quantity change is refused for lacking a valid reason; return a non-empty message to block the save.

**Parameters**
`$message (string)` Refusal message; empty allows the change.
`$requested (string)` Reason key posted by the popover.
`$mode (string)` Change mode: set, add or remove.
`$context (array)` Array with tracked, has_mode, product_id and oiq_id.

Fires in admin/inc/wp_easycart_admin_inventory.php · ajax_set_qty()

`wp_easycart_admin_inventory_select`
Filters extra SELECT SQL that Pro adds to each branch of the admin inventory query.

**Parameters**
`$extra (array)` Array with basic and variant keys holding SQL fragments, each starting with a comma.
`$pro_enabled (bool)` Whether Pro is active.

Fires in admin/inc/wp_easycart_admin_inventory_table.php · get_extra_select()

`wp_easycart_admin_js_text`
Filters the translated words a group of admin scripts receives, before they are printed as window.wpEasyCartText.

**Parameters**
`$data` (array) The strings (s) and plural forms (p).
`$group` (string) The script group.

Fires in admin/inc/wp_easycart_admin_js_text.php · attach()

`wp_easycart_admin_lock_icon`
Filters the lock icon marker shown on Pro-only features in the admin; an empty string means Pro features are unlocked.

**Parameters**
`'locked'` (string) In the free edition ‘locked’ or the lock icon markup; empty when PRO features are available.

Fires in admin/inc/wp_easycart_admin.php · load_scripts() +28 more places

`wp_easycart_admin_money_format`
Filters the store’s amount format as admin scripts receive it.

**Parameters**
`$format` (array) symbol, before, left, negBefore, decimals, dec, group, thou, code and space.

Fires in admin/inc/wp_easycart_admin.php · wp_easycart_admin_money_format()

`wp_easycart_admin_offers_trial`
Filters whether the Free plan’s locked PRO features lead with the free trial.

**Parameters**
`$offer` (bool) Whether the trial is offered.

Fires in admin/inc/wp_easycart_admin_edition.php · offers_trial()

`wp_easycart_admin_option_list_filters`
Filters the filter controls shown above the admin option sets list.

**Parameters**
`$filters (array)` Filter definitions, each with data, label, type and where clause.

Fires in admin/inc/wp_easycart_admin_option_table.php · setup()

`wp_easycart_admin_order_list_columns`
Filters the columns loaded for the admin orders list table.

**Parameters**
`$columns (array)` Column definitions, each with select, name, format and label keys.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_admin_order_list_filters`
Filters the filter controls shown above the admin orders list.

**Parameters**
`$filters (array)` Filter definitions, each with data, label, type and where clause.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_admin_order_list_search_columns`
Filters the database columns searched by the admin orders list search box.

**Parameters**
`$columns (array)` Column names such as ec_order.order_id and ec_order.user_email, searched with LIKE.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_admin_order_new_js`
Filters the JavaScript run when the Add New button is clicked in the admin orders list.

**Parameters**
`$new_order_js (string)` JavaScript for the button’s click handler; may show a Pro upgrade prompt.

Fires in admin/inc/wp_easycart_admin_order_table.php · setup()

`wp_easycart_admin_payment_flash`
Filters the message the Payments page shows when a gateway’s connection link returns to it. Return an empty text to show nothing.

**Parameters**
`$flash` (array) text (” for none), tone (success, warning, error or info), actions and detail.

Fires in admin/inc/wp_easycart_admin_payment_v2.php · render_flash()

`wp_easycart_admin_premium_offer`
Filters the Premium upgrade offer (button and message) shown in the admin, based on the license.

**Parameters**
`$offer (array)` Offer with mode, url, cta, title and desc keys.
`$tier (string)` License tier: free, trial, pro or premium.
`$lapsed (bool)` True when the license is past its end date.

Fires in admin/inc/wp_easycart_admin_edition.php · premium_offer()

`wp_easycart_admin_registration_quiet_notices`
Filters which wp_easycart_admin_messages callbacks are taken off the Registration & activation page, which explains the license itself; add a class => method pair to keep a license notice off that page.

**Parameters**
`array(...)` (array) Class name => method name; by default WP EasyCart Premium’s license_notice, Groupon’s notice and WP EasyCart PRO’s license-server outage note (wp_easycart_dev_sites print_shell_notes).

Fires in admin/inc/wp_easycart_admin.php · quiet_license_notices()

`wp_easycart_admin_renew_url`
Filters where a paid license is renewed. Default the WP EasyCart account page, https://www.wpeasycart.com/my-account/.

**Parameters**
`$url` (string) The renewal URL.
`$autopay` (bool) Whether the license renews itself (AutoPay).

Fires in admin/inc/wp_easycart_admin_edition.php · renew_url()

`wp_easycart_admin_search_actions`
Filters the quick actions in the admin search (index items of type action).

**Parameters**
`$out` (array) The action items.

Fires in admin/inc/wp_easycart_admin_search.php · actions()

`wp_easycart_admin_search_index`
Filters the admin search’s index for the current user before it is cached for 12 hours.

**Parameters**
`$items` (array) The index items.

Fires in admin/inc/wp_easycart_admin_search.php · index()

`wp_easycart_admin_search_providers`
Filters the record types the admin search looks through. Each provider has a label, a capability (or callable), a callback returning rows, an optional more callback and an order; providers are sorted by order (default 100).

**Parameters**
`$providers` (array) Key => provider.

Fires in admin/inc/wp_easycart_admin_search.php · providers()

`wp_easycart_admin_search_version_parts`
Filters the parts the admin search index’s version is built from. Add a part for anything an extension puts in the index that can change, so the cached index is rebuilt when it does.

**Parameters**
`$parts` (array) Strings hashed into the version.

Fires in admin/inc/wp_easycart_admin_search.php · version()

`wp_easycart_admin_success_messages`
Filters the success notices shown at the top of the admin screens. Each message is a string or an array with text, tone, detail and actions.

**Parameters**
`$messages` (array) success messages, empty by default

Fires in admin/inc/wp_easycart_admin.php · print_admin_message()

`wp_easycart_admin_trial_upgrade_url`
Filters where a PRO trial becomes a paid plan. Default the plans and pricing page, https://www.wpeasycart.com/wordpress-shopping-cart-pricing/.

**Parameters**
`$url` (string) The upgrade URL.
`$plan` (string) pro or premium.
`$key` (string) The trial’s license key (” when none is saved).

Fires in admin/inc/wp_easycart_admin_edition.php · trial_url()

`wp_easycart_admin_undo_capabilities`
Filters the capability required to undo each kind of admin deletion.

**Parameters**
`$caps` (array) kind => capability, with order, product, account and subscriber by default

Fires in admin/inc/wp_easycart_admin_undo.php · ecv2_undo_restore()

`wp_easycart_admin_undo_restore_{entry}`
Filters the result of restoring an undone deletion. A callback for the deleted item’s kind restores it and returns a non-null result. {entry} is the kind of item deleted, such as order or product.

**Parameters**
`$result` (mixed) null by default; callbacks return the restore result or a WP_Error
`$snapshot` (array) the saved snapshot of the deleted item

Fires in admin/inc/wp_easycart_admin_undo.php · ecv2_undo_restore()

`wp_easycart_admin_undo_ttl`
Filters how long, in seconds, a deletion can be undone after it happens (default 15 minutes).

**Parameters**
`$ttl` (int) time in seconds, default 15 \* MINUTE_IN_SECONDS

Fires in admin/inc/wp_easycart_admin_undo.php · ttl()

`wp_easycart_admin_upgrade_file`
Filters the path of the template file included for the admin upgrade screen.

**Parameters**
`$file` (string) full path to upgrade-screen.php

Fires in admin/inc/wp_easycart_admin.php · show_upgrade()

`wp_easycart_admin_upgrade_url`
Filters the upgrade URL used by locked admin features that link to the pricing page, such as abandoned carts and smart categories.

**Parameters**
`$url` (string) upgrade URL on wpeasycart.com, including an upsell query argument

Fires in admin/inc/wp_easycart_admin_abandoned_cart_status.php · wp_easycart_admin_abandoned_cart_status_card() +5 more places

`wp_easycart_admin_v2_gate_description`
Filters the description text shown on a locked (Pro or Premium) field in the product editor.

**Parameters**
`$description` (string) default text, ‘Unlock this feature with’ plus the plan name
`$name` (string) name of the locked field

Fires in admin/inc/wp_easycart_admin_details_products_v2.php · print_field_v2()

`wp_easycart_admin_warning_messages`
Filters the warning notices shown at the top of the admin screens. Each message is a string or an array with text, tone, detail and actions.

**Parameters**
`$messages` (array) warning messages, empty by default

Fires in admin/inc/wp_easycart_admin.php · print_admin_message()

`wp_easycart_cart_importer_suggest`
Filters whether the setup wizard suggests importing from another cart (default true).

**Parameters**
`$suggest` (bool) true by default

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · get_cart_importer_suggestion()

`wp_easycart_cart_importer_suggest_max_products`
Filters the maximum number of products a store can have before the setup wizard stops suggesting a cart import (default 3).

**Parameters**
`$max_products` (int) product count, default 3

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · get_cart_importer_suggestion()

`wp_easycart_dashboard_widget`
Filters whether the WordPress Dashboard shows the WP EasyCart widget. Default true.

**Parameters**
`$show` (bool) Whether to show the widget (true).

Fires in admin/inc/wp_easycart_admin_dashboard_widget.php · register()

`wp_easycart_detected_caching_plugin`
Filters the name of the caching plugin detected by the setup wizard; return a name to report a caching plugin WP EasyCart does not detect itself.

**Parameters**
`$plugin (string|null)` The detected caching plugin name, null when none is found.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · detect_caching_plugin()

`wp_easycart_docs_index_api`
Filters the docs site’s REST API address the docs index is fetched from. Default https://docs.wpeasycart.com/wp-json/wp/v2/.

**Parameters**
`$api` (string) The REST API address.

Fires in inc/classes/core/class-wp-easycart-docs-index.php · refresh()

`wp_easycart_document_attachment_grid`
Filters the rows (emails) and columns (PDF documents) of the document attachments grid in Settings > Documents.

**Parameters**
`$grid (array)` emails => key => label and desc; documents => key => label.

Fires in admin/inc/wp_easycart_admin_documents.php · attachment_grid()

`wp_easycart_document_options`
Filters the choices a document profile makes that are not on/off switches, such as the Invoice PDF heading.

**Parameters**
`$options (array)` Option key => label, description and choices.
`$type (string)` The document type.

Fires in inc/classes/core/class-wp-easycart-documents.php · options()

`wp_easycart_document_preview_{type}`
Filters the HTML of a document preview in Settings > Documents for a type without a built-in preview. {type} is the document type.

**Parameters**
`$value (string)` Preview HTML; empty by default.
`$order_id (int)` The sample order id.
`$fields (array)` The document field settings being previewed.

Fires in admin/inc/wp_easycart_admin_documents.php · render_preview()

`wp_easycart_document_wording_keys`
Filters the language phrase keys a document type uses in the language editor.

**Parameters**
`$keys (array)` Phrase keys grouped by language section.
`$type (string)` The document type.

Fires in admin/inc/wp_easycart_admin_documents.php · wording_keys()

`wp_easycart_elementor_upgrade_url`
Filters the upgrade (pricing) URL shown for a PRO Elementor feature.

**Parameters**
`$url (string)` The pricing page URL.
`$feature (string)` The feature key.

Fires in admin/elementor/wp-easycart-elementor-functions.php · wp_easycart_elementor_upgrade_url()

`wp_easycart_extension_card`
Filters one extension card on the admin Extensions page.

**Parameters**
`$card` (array) card data: state, chip HTML, status HTML and actions
`$ext` (array) the extension’s catalog entry
`$context` (array) premium state (active, lapsed or none), basename, active flag and version

Fires in admin/inc/wp_easycart_admin_extensions.php · card()

`wp_easycart_extension_slot`
Lets an extension replace the HTML shown in a named slot (tax services, order labels, product tabs or integrations) on an admin screen.

**Parameters**
`$html` (string|null) replacement HTML; null keeps the default
`$slot` (string) slot name: tax_services, order_labels, product_tabs or integrations
`$slug` (string) extension slug
`$context` (array) premium state, active flag and the screen’s own data

Fires in admin/inc/wp_easycart_admin_extensions.php · slot_override()

`wp_easycart_extensions_catalog`
Filters the catalog of extensions listed on the admin Extensions page.

**Parameters**
`$catalog` (array) extension slug => catalog entry

Fires in admin/inc/wp_easycart_admin_extensions.php · catalog()

`wp_easycart_extensions_page_actions`
Filters the header buttons HTML on the admin Extensions page, such as Check for updates and Update all.

**Parameters**
`$html` (string) buttons HTML, empty by default

Fires in admin/template/extensions/extensions-v2.php

`wp_easycart_extensions_page_banner`
Filters the banner HTML shown at the top of the admin Extensions page about the WP EasyCart Premium plugin.

**Parameters**
`$html` (string) banner HTML
`$prem` (string) Premium state: active, lapsed or none
`$plugin` (array) Premium plugin details: installed, active and version

Fires in admin/inc/wp_easycart_admin_extensions.php · banner_html()

`wp_easycart_policy_draft`
Filters the content of a policy page draft WP EasyCart writes from the store’s answers.

**Parameters**
`$html` (string) The draft (block editor paragraphs and headings).
`$type` (string) terms, privacy or returns.
`$f` (array) The store’s answers.

Fires in admin/inc/wp_easycart_admin_policy_drafts.php · draft()

`wp_easycart_policy_draft_facts`
Filters the store facts the policy page drafts are built from.

**Parameters**
`$facts` (array) The store’s answers.

Fires in admin/inc/wp_easycart_admin_policy_drafts.php · facts()

`wp_easycart_pro_dev_site_kind` PRO
Filters what kind of development address WP EasyCart PRO takes the site to be: local, staging, subdomain, or empty for a live store. It decides how the license is checked and whether Activate license adds the site to the key’s development sites; WP EasyCart Connect checks the address again and refuses one it does not count as development.

**Parameters**
`$kind` (string) local, staging, subdomain or empty, from the built-in address rules; any other value counts as empty.
`$host` (string) The site’s host, without www.

Fires in license/wp_easycart_dev_sites.php · kind()

`wp_easycart_pro_dev_sites_url` PRO
Filters the base address of WP EasyCart Connect’s development sites service, which WP EasyCart PRO calls to activate, check and remove development copies of a license.

**Parameters**
`self::URL` (string) https://connect.wpeasycart.com/pro/v1/dev/ by default; the action (activate, check or remove) is appended to it.

Fires in license/wp_easycart_dev_sites.php · request()

`wp_easycart_pro_license_recover_url` PRO
Filters the address WP EasyCart PRO posts to when it asks WP EasyCart Connect for the license key of a store licensed by its site address with no key saved.

**Parameters**
`self::URL` (string) https://connect.wpeasycart.com/pro/v1/recover by default.

Fires in license/wp_easycart_license_recovery.php · run()

`wp_easycart_pro_update_url` PRO
Filters the address WP EasyCart PRO’s update checker asks for new PRO versions; the license key, or the licensed site address, is added after it as a query string. The older download script is still asked when this address does not answer.

**Parameters**
`$url` (string) https://connect.wpeasycart.com/pro/v1/update by default.

Fires in wp-easycart-admin-pro.php · load_update_checker()

`wp_easycart_recommended_settings_status`
Filters the recommended settings status rows shown in the setup wizard.

**Parameters**
`$rows` (array) Status rows, each with an overridden flag.
`$env` The environment details the rows were evaluated against.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · get_recommended_status()

`wp_easycart_settings_field_locked`
Filters whether a settings field or section is locked for the current license.

**Parameters**
`$locked` (bool) True when locked.
`$field_or_section` The field or section being checked.

Fires in admin/inc/wp_easycart_admin_settings_registry.php · is_locked()

`wp_easycart_settings_groups`
Filters the settings groups in display order.

**Parameters**
`$groups` (array) Group slug => label and hint.

Fires in admin/inc/wp_easycart_admin_settings_registry.php · groups()

`wp_easycart_settings_history_undo_{row}`
Filters the Undo of a settings history row that is not a plain setting. {row} is the row’s kind. Return true when it is undone, or a WP_Error to say why not.

**Parameters**
`new WP_Error( 'kind', ... )` (true|WP_Error) The result. Default: this kind of change cannot be undone here.
`$row` (object) The history row.

Fires in admin/inc/wp_easycart_settings_history.php · undo()

`wp_easycart_settings_home_catalog`
Filters the catalog of settings pages shown on the Settings home.

**Parameters**
`$pages` (array) Page slug => group, order, icon, title, description and plan.

Fires in admin/inc/wp_easycart_admin_settings_home.php · catalog()

`wp_easycart_settings_navigation`
Filters the settings pages grouped for the Settings home and sidebar navigation.

**Parameters**
`$out` (array) Group slug => label, hint and pages.

Fires in admin/inc/wp_easycart_admin_settings_home.php · build_navigation()

`wp_easycart_settings_page_{slug}`
Filters a settings page declaration as it loads from its declaration file; {slug} is the settings page slug.

**Parameters**
`$decl` (array) The settings page declaration before it is normalized.

Fires in admin/inc/wp_easycart_admin_settings_registry.php · pages()

`wp_easycart_settings_pages`
Filters the full list of registered settings pages, letting a plugin add, change or remove pages.

**Parameters**
`$pages` (array) Settings pages keyed by page slug.

Fires in admin/inc/wp_easycart_admin_settings_registry.php · pages()

`wp_easycart_settings_save_reply`
Filters the reply sent back to the browser after a settings page is saved by AJAX.

**Parameters**
`$reply` (array) Response with saved, errors, warnings and message.
`$slug` (string) Settings page slug.
`$saved_keys` (array) Keys of the settings that were saved.

Fires in admin/inc/wp_easycart_admin_settings_page_v2.php · ajax_save()

`wp_easycart_settings_search_items`
Filters extra searchable items for the settings search, for things inside custom page markup such as gateways and carriers.

**Parameters**
`$items` (array) Search items, starts empty. Each item needs label and url, and can set desc, keywords, page_title, section_title, value_text and locked.

Fires in admin/inc/wp_easycart_admin_search.php · settings() +1 more place

`wp_easycart_setup_areas`
Filters the setup areas behind the Settings home and the rebuilt settings pages. An extension may add an area or replace a built-in one.

**Parameters**
`$areas` (array) Slug => wp_easycart_admin_setup_area object.

Fires in admin/inc/wp_easycart_admin_setup.php · areas()

`wp_easycart_setup_checklist`
Filters the items shown in the store launch checklist.

**Parameters**
`$items` (array) Checklist items keyed by item key, each with its dismissed state.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · get_checklist()

`wp_easycart_setup_grow_items`
Filters the Grow recommendations on the Settings home (things worth a look).

**Parameters**
`$items` (array) Id => group, title, text, done, plan, label, url, upsell and locked.

Fires in admin/inc/setup/wp_easycart_admin_setup_grow.php · items()

`wp_easycart_setup_parts`
Filters the parts (cards) a setup area’s page, or the Settings home, prints.

**Parameters**
`$parts` (array) Part => HTML.
`$slug` (string) The area, or ” for the Settings home.

Fires in admin/inc/wp_easycart_admin_setup.php · parts()

`wp_easycart_setup_wizard_assets_needed`
Filters whether the setup wizard styles and scripts load on the current admin screen; return true to load them on a page that embeds the checklist.

**Parameters**
`$needed` (bool) Default false.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · enqueue_assets()

`wp_easycart_setup_wizard_country_currency`
Filters the currency the setup wizard offers a store in a country.

**Parameters**
`$code` (string) ISO 4217 currency code.
`$cc` (string) ISO country code.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · currency_for()

`wp_easycart_setup_wizard_country_facts`
Filters what the setup wizard saves for a store in a country.

**Parameters**
`$facts` (array) currency, before, space, dec, thou, decimals, weight (lbs or kgs) and metric.
`$cc` (string) ISO country code.

Fires in admin/inc/wp_easycart_admin_setup_wizard.php · facts()

`wp_easycart_shell_breadcrumb`
Filters the breadcrumb shown in the admin shell header.

**Parameters**
`$crumb` (array) The breadcrumb parts.
`$page` (string) Current admin page slug.
`$subpage` (string) Current subpage slug.

Fires in admin/inc/wp_easycart_admin_frame_theme.php · wp_easycart_shell_breadcrumb()

`wp_easycart_shell_help_videos`
Filters the list of help videos offered in the admin header help menu.

**Parameters**
`$videos` (array) YouTube video id => video title.

Fires in admin/template/head_nav.php

`wp_easycart_shell_search_index`
Filters the entries in the admin shell search index.

**Parameters**
`$items` (array) Search entries, each with label, url, group and keywords.

Fires in admin/inc/wp_easycart_admin_frame_theme.php · wp_easycart_shell_search_index() +1 more place

`wp_easycart_shell_theme_recipe`
Filters the recipe that derives the admin brand color shades from the main brand color.

**Parameters**
`$recipe` (array) CSS variable name => array( method, amount ), where method is black or white and amount is a mix ratio.

Fires in admin/inc/wp_easycart_admin_frame_theme.php · wp_easycart_shell_theme_recipe()

`wp_easycart_show_review_prompt`
Filters whether the admin review prompt is shown.

**Parameters**
`$show` (bool) True when the store has not reviewed the plugin and the prompt has been earned.

Fires in admin/inc/wp_easycart_admin.php · wp_easycart_admin_print_review_prompt()

`wp_easycart_store_clock_suggested`
Filters the time zone WP EasyCart suggests for the store from its country and state. A zone PHP does not know is ignored.

**Parameters**
`$zone` (string) The zone, or ”.
`$cc` (string) The country code.
`$state` (string) The state or province.

Fires in inc/classes/core/class-wp-easycart-store-clock.php · suggested()

`wp_easycart_table_cell_data_default`
Filters a cell value printed in an admin table for columns with no special format.

**Parameters**
`$value` The column value from the row.
`$result` (object) The full table row.
`$column_name` (string) Column name.

Fires in admin/inc/wp_easycart_admin_table.php · print_table_column_data_format()

`wp_easycart_table_cell_data_int`
Filters an integer cell value printed in an admin table, prefixed with # for id columns.

**Parameters**
`$value` (string) The integer value, prefixed with # when the column is an id.
`$result` (object) The full table row.
`$column_name` (string) Column name.

Fires in admin/inc/wp_easycart_admin_table.php · print_table_column_int()

`wp_easycart_tracking_checkin_fields`
Filters the fields of the weekly anonymous usage check-in, sent only by stores that turned on Anonymous usage data; WP EasyCart PRO adds its own. Keep to keys, flags and bands: personal fields are removed and the receiver keeps only fields it knows.

**Parameters**
`$data` (array) Field => value: how the store is set up (gateways, shipping, taxes, carriers, features on), store size and health as bands, and getting-started milestones.

Fires in admin/inc/wp_easycart_admin_tracking.php · snapshot()

`wp_easycart_tracking_event`
Filters one anonymous usage-data event before it is queued or sent; return false to drop it. Fields named for a person, a login or the site are removed afterwards.

**Parameters**
`$data` (array) Key event (the event name) plus the event’s own fields.
`$event` (string) The event name, such as setting_changed or upsell_open.

Fires in admin/inc/wp_easycart_admin_tracking.php · event()

`wp_easycart_tracking_settings`
Filters the settings whose changes are sent as an anonymous setting_changed usage event, with the setting’s short name and its new value; a change is sent only when the new value is a short plain key, such as on/off or a mode, so text never leaves the store.

**Parameters**
`array(...)` (array) Option name => short name; by default ten settings such as ec_option_onepage_checkout => onepage and ec_option_marketing_consent => consent.

Fires in admin/inc/wp_easycart_admin_tracking.php · setting_changed()

`wp_easycart_tracking_url`
Filters the address anonymous usage data is posted to; return ” to send nothing and empty the waiting queue.

**Parameters**
`self::URL` (string) The receiver, https://connect.wpeasycart.com/logging/logging.php by default.

Fires in admin/inc/wp_easycart_admin_tracking.php · post()

`wp_easycart_trial_signup_url`
Filters the trial signup address used by the admin. Default https://connect.wpeasycart.com/trial_signup/; anything not starting with https:// switches the trial signup off.

**Parameters**
`$endpoint` (string) The signup address.

Fires in admin/inc/wp_easycart_admin.php · trial_signup_endpoint()

`wp_easycart_trial_start_content`
Filters the trial and upgrade content in the admin; return an empty string to hide the trial offer.

**Parameters**
`$content` (string) Default ‘true’.

Fires in admin/inc/wp_easycart_admin_edition.php · offers_trial() +1 more place

`wp_easycart_upgrade_premium_url`
Filters the URL of the Premium upgrade link in admin upsell messages.

**Parameters**
`$url` (string) Premium upgrade URL.

Fires in admin/inc/wp_easycart_admin_upsell.php · plan_url()

`wp_easycart_upgrade_pro_url` PRO
Filters the URL of the Pro upgrade link shown in admin notices.

**Parameters**
`$url` (string) Pro upgrade URL, default the pricing page.

Fires in wp-easycart-admin-pro.php · show_upgrade_message() +1 more place

`wp_easycart_upsell_catalog`
Filters the catalog of upsell contexts and features used by admin upgrade messages.

**Parameters**
`$catalog` (array) Upsell catalog.

Fires in admin/inc/wp_easycart_admin_upsell.php · catalog()

`wp_easycart_upsell_context`
Filters the upsell context chosen for the current admin screen.

**Parameters**
`$context` (string) Upsell context key.

Fires in admin/inc/wp_easycart_admin_upsell.php · resolve_context()

`wp_easycart_upsell_stats`
Filters the store statistics used in admin upsell messages, such as average order value and low stock count.

**Parameters**
`$stats` (array) Store statistics.

Fires in admin/inc/wp_easycart_admin_upsell.php · stats() +1 more place

### Storefront templates and design

Grouped by what they are about

`wp_easycart_cart_fit`
Filters whether the cart and checkout are laid out for the space the theme gives them. Default from the Cart & checkout look setting under Settings > Design.

**Parameters**
`$enabled` (bool) Whether the layout is fitted.

Fires in inc/classes/core/class-wp-easycart-cart-fit.php · enabled()

`wp_easycart_cart_fit_new_store`
Filters whether a new store starts with its cart fitted to the theme’s content area. Default true; read once when an empty store’s base data is installed.

**Parameters**
`$on` (bool) On (true).

Fires in inc/classes/core/class-wp-easycart-cart-fit.php · seed_new_store()

`wp_easycart_cart_icon_html`
Filters the HTML of the cart icon output by the cart icon shortcode.

**Parameters**
`$cart_icon_html` (string) default icon markup, an i element with the icon class
`$cart_icon` (string) the icon class from the shortcode
`$atts` (array) the shortcode attributes

Fires in wpeasycart.php · load_ec_cart_icon()

`wp_easycart_cart_page_look`
Filters the classic checkout’s cart page look. Any value other than classic gives modern.

**Parameters**
`$look` (string) modern or classic.

Fires in inc/classes/cart/ec_cartpage.php · cart_page_look()

`wp_easycart_classic_match_theme`
Filters whether the Classic store takes the theme’s colours and fonts (Settings > Design > Match my theme).

**Parameters**
`$on` (bool) The setting.

Fires in inc/classes/core/class-wp-easycart-classic-theme.php · enabled()

`wp_easycart_elementor_add_to_cart_link_allowed`
Filters whether an Elementor add to cart link is allowed for a product.

**Parameters**
`$can (bool)` Whether a link can add the product.
`$product (ec_product)` The product.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic-add-to-cart.php · can_add()

`wp_easycart_elementor_add_to_cart_link_automated`
Filters how an add to cart link request is classified as automated: prefetch (answered 503), bot (sent to the product page) or an empty string for a shopper.

**Parameters**
`$reason (string)` prefetch, bot or an empty string.
`$agent (string)` The request’s user agent, lower case.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic-add-to-cart.php · automated_request()

`wp_easycart_elementor_add_to_cart_link_max_quantity`
Filters the maximum quantity an Elementor add to cart link can add; the result is kept between 1 and the built-in maximum.

**Parameters**
`$value (int)` The default link quantity limit.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic-add-to-cart.php · max_quantity()

`wp_easycart_elementor_best_seller_ids`
Filters the product ids used for best sellers in Elementor shop widgets.

**Parameters**
`$ids (int[])` Product ids.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-query.php · best_seller_ids()

`wp_easycart_elementor_display_conditions_supported`
Filters whether the installed Elementor Pro version is supported for WP EasyCart display conditions.

**Parameters**
`$version (string)` The version being checked; the filtered value is whether it is supported (within 3.19 up to, not including, 5.0).
`$elementor_pro_version (string)` The Elementor Pro version.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic.php · conditions_supported()

`wp_easycart_elementor_dynamic_tags`
Filters the Elementor dynamic tags WP EasyCart registers.

**Parameters**
`$tags (array)` Slug => class name.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic.php · tag_classes()

`wp_easycart_elementor_help_url`
Filters the Need help? address of a WP EasyCart Elementor widget or screen.

**Parameters**
`$url` (string) The docs URL.
`$name` (string) A widget’s name, the Site Settings tab id, or the help topic.

Fires in admin/elementor/class-wp-easycart-elementor.php · help_url() +1 more place

`wp_easycart_elementor_loop_limit`
Filters the maximum number of products an Elementor loop query looks up.

**Parameters**
`$value (int)` Maximum products; 5000 by default.
`$query_id (string)` The loop query id.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic-loop.php · post_ids()

`wp_easycart_elementor_loop_post_ids`
Filters the ec_store post ids used by an Elementor loop query.

**Parameters**
`$post_ids (int[])` ec_store post ids.
`$query_id (string)` The loop query id.

Fires in admin/elementor/modules/dynamic/class-wp-easycart-elementor-dynamic-loop.php · filter_query()

`wp_easycart_elementor_preview_category_id`
Filters the sample category id used to preview category templates in the Elementor editor.

**Parameters**
`$value (int)` Category id; 0 to use the first active category.

Fires in admin/elementor/base/class-wp-easycart-elementor-context.php · category() +1 more place

`wp_easycart_elementor_preview_product_id`
Filters the sample product id used to preview product templates in the Elementor editor.

**Parameters**
`$value (int)` Product id; 0 to use a sample product.

Fires in admin/elementor/base/class-wp-easycart-elementor-context.php · sample_product_id()

`wp_easycart_elementor_product_buy_template`
Filters the template file path used by the Elementor product buy widgets.

**Parameters**
`$path (string)` Absolute path to the template.
`$file (string)` Template file name.

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy.php · template()

`wp_easycart_elementor_quick_view_allowed`
Filters whether quick view can open on this device in the Elementor shop widget.

**Parameters**
`$value (bool)` Whether quick view is allowed; true by default.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-card.php · quick_view_allowed()

`wp_easycart_elementor_related_product_ids`
Filters the related product ids shown for a product in Elementor shop widgets.

**Parameters**
`$ids (int[])` Related product ids.
`$product_id (int)` The product.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-query.php · related_ids()

`wp_easycart_elementor_retired_widgets`
Filters the list of retired Elementor widgets and the widgets that replace them.

**Parameters**
`$value (array)` Widget name => settings including the replacement name; empty by default.

Fires in admin/elementor/wp-easycart-elementor-functions.php · wp_easycart_elementor_retired_widgets() +1 more place

`wp_easycart_elementor_role_content`
Filters whether the store’s product lists differ per customer role, which keeps the page out of page caches.

**Parameters**
`$role_content (bool)` Whether product content depends on the customer’s role.

Fires in admin/elementor/modules/shop/includes/class-wp-easycart-elementor-shop-query.php · role_content()

`wp_easycart_elementor_shop_scope`
Filters the category and manufacturer scope of an Elementor shop archive widget.

**Parameters**
`$scope (array)` array( category id, manufacturer id ); array( 0, 0 ) by default.
`$settings (array)` The widget settings.

Fires in admin/elementor/modules/shop/widgets/class-wp-easycart-elementor-shop-archive-widget.php · ec_scope()

`wp_easycart_elementor_starter_template`
Filters the starter Elementor template content created for a product or category template.

**Parameters**
`$content (array)` The template’s elements.
`$type (string)` product or category.

Fires in admin/elementor/modules/templates/class-wp-easycart-elementor-templates.php · starter_content()

`wp_easycart_elementor_template_for`
Filters which Elementor template is used to draw a product or category page.

**Parameters**
`$store (int)` The store’s template for the type; 0 means the standard layout.
`$type (string)` product or category.
`$object_id (int)` The product_id or category_id.

Fires in admin/elementor/modules/templates/class-wp-easycart-elementor-templates.php · template_for()

`wp_easycart_elementor_template_hand_off`
Filters whether the \[ec_store\] shortcode may hand off to an Elementor template.

**Parameters**
`$value (bool)` Whether hand off is allowed; true by default.
`$atts (array)` The \[ec_store\] shortcode arguments.

Fires in admin/elementor/modules/templates/class-wp-easycart-elementor-templates.php · can_hand_off()

`wp_easycart_elementor_widget_classes`
Filters the Elementor widget classes WP EasyCart registers, letting PRO add or replace widgets.

**Parameters**
`$value (array)` Class name => file path; empty by default.

Fires in admin/elementor/class-wp-easycart-elementor.php · register_elementor_widgets()

`wp_easycart_enable_elementor_account_elements`
Filters whether the Elementor account widgets (account forms and account dashboard) are registered and their pages get account-style headers.

**Parameters**
`$enabled` (bool) false by default

Fires in wpeasycart.php · wp_easycart_elementor_account_page_headers() +1 more place

`wp_easycart_language_text`
Filters one phrase of the store’s language wording as templates print it (HTML, with \[terms\] and \[privacy\] already turned into links). The Elementor cart, checkout and account widgets use it to apply their own Texts settings while they draw.

**Parameters**
`$text` (string|null) The phrase, or null when the language file has none.
`$lang_section` (string) The language section, such as ec_errors.
`$lang_var` (string) The phrase key within the section.

Fires in inc/classes/core/ec_language.php · get_text()

`wp_easycart_load_css_scripts`
Filters whether WP EasyCart loads its front-end CSS (and dashicons).

**Parameters**
`$load` (bool) true by default; return false to skip loading

Fires in wpeasycart.php · ec_css_loader_v3() +1 more place

`wp_easycart_load_js_scripts`
Filters whether WP EasyCart loads its front-end JavaScript.

**Parameters**
`$load` (bool) true by default; return false to skip loading

Fires in wpeasycart.php · ec_js_loader_v3()

`wp_easycart_prod_details_video_controls`
Filters the attributes on the product page video tag.

**Parameters**
`$controls` (string) Attribute string for the video element, default ‘controls’.

Fires in design/layout/base-responsive-v3/ec_product_details_page.php +3 more places

`wp_easycart_product_brand_logo`
Filters the brand logo the Elementor Product Meta widget shows for a product.

**Parameters**
`$logo` (int|string) An attachment id or an image URL; by default the featured image of the manufacturer’s page, or 0 for none.
`$product` (ec_product) The product.

Fires in admin/elementor/modules/product-info/includes/class-wp-easycart-product-info.php · brand_logo()

`wp_easycart_store_item_as_page`
Filters whether a store item (product, category or manufacturer) is presented as a page; return false to keep it a store item, as Elementor Pro Theme Builder needs.

**Parameters**
`$as_page` (bool) Default true.

Fires in wpeasycart.php · ec_force_page_type() +1 more place

`wp_easycart_store_policies_schema`
Filters the store policies part of the store’s structured data (schema.org).

**Parameters**
`$out` (array) Policy schema properties, such as shipping services and return policy.

Fires in inc/classes/core/class-wp-easycart-store-schema.php · policies()

`wp_easycart_store_return_policy_schema`
Filters the merchant return policy structured data (schema.org).

**Parameters**
`$out` (array) Return policy schema.

Fires in inc/classes/core/class-wp-easycart-store-schema.php · return_policy()

`wp_easycart_store_schema`
Filters the complete OnlineStore structured data (schema.org) built for the store.

**Parameters**
`$schema` (array) Store schema merged with its policies.

Fires in inc/classes/core/class-wp-easycart-store-schema.php · build()

`wp_easycart_storefront_contrast_pairs`
Filters the colour pairs the design’s contrast guard checks: a colour token, what it sits on, and the WCAG ratio it must reach.

**Parameters**
`$pairs` (array) Token => array( panel or another token, the ratio: 4.5 for text, 3 for the focus ring ).

Fires in inc/storefront/class-wp-easycart-tokens.php · contrast_pairs()

`wp_easycart_storefront_theme_match`
Filters what Match my theme found out about the active theme’s colours and fonts.

**Parameters**
`$found` (array) Token => array( value, source ).
`$template` (string) The parent theme’s folder, lower case.

Fires in inc/storefront/class-wp-easycart-tokens.php · theme()

`wp_easycart_storefront_tokens`
Filters the list of the store’s design tokens (the –wpec-\* CSS variables).

**Parameters**
`$catalog` (array) The tokens.

Fires in inc/storefront/class-wp-easycart-tokens.php · catalog()

`wp_easycart_tabs_icons` Tabs
Filters the line icon set that tabs and blocks can use, in the tab designer and on the product page; add an icon by name or replace one.

**Parameters**
`$icons` (array) Icon name => SVG inner markup on a 24px grid, drawn as a stroke in currentColor; the 100 icons that ship with Tabs by default. Tab icon names keep only letters and digits.

Fires in includes/blocks/class-wp-easycart-tabs-blocks.php · icons()

`wp_easycart_tabs_load_assets` Tabs
Filters whether the Tabs stylesheets are queued in the page head on this request so the tabs never show unstyled; when false they print with the first tab area instead.

**Parameters**
`$is` (bool) True when the request shows a product: a product page, or a page with \[ec_product_details\], \[ec_product_details_tabs\], or \[ec_store\] with a model_number in the address.

Fires in includes/class-wp-easycart-tabs-storefront.php · product_page()

`wp_easycart_tabs_takeover` Tabs
Lets a product keep WP EasyCart’s classic tabs while the store uses a Tabs style; return false to leave this tab list to the classic tabs. It runs only when the chosen style is not classic.

**Parameters**
`true` (bool) Draw the tabs in the store’s tab style, true by default.
`(int) $product_id` (int) The product id.
`$rand` (int|string) The tab list’s id on the page.

Fires in includes/class-wp-easycart-tabs-storefront.php · takes_over()

`wp_easycart_vacation_mode_text`
Filters the vacation mode message shown in place of the add-to-cart button when the store displays as a catalog.

**Parameters**
`$text` (string) The vacation mode button text.
`$product_id` (int) Product id.

Fires in admin/elementor/modules/product-buy/includes/class-wp-easycart-product-buy-area.php · render() +2 more places

`wp_easycart_withdrawal_footer_button`
Filters whether the withdrawal button prints at the foot of the current storefront page; return false to hide it there. Asked only while the button and Show the button at the foot of every page are on, and never on the withdrawal page itself.

**Parameters**
`true` (bool) Show the button, true by default.

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · footer_button()

`wp_easycart_withdrawal_view`
Filters what the withdrawal page shows (\[ec_withdrawal\], or the account page’s withdrawal view) before the ec_withdrawal.php template draws it.

**Parameters**
`$data` (array) Keys view (start, form, review, received, closed, already, lookup or off), heading, errors, values, order, summary, record, check, action, page_url, lookup, ajax_url, language and next (the What happens next text).

Fires in inc/classes/core/class-wp-easycart-withdrawals.php · view_data()

`wpeasycart_product_details_tabs_takeover`
Lets an extension draw the product page’s tab area itself; return true and print it on wpeasycart_product_details_tabs_area. Asked only when something is hooked to that action.

**Parameters**
`false` (bool) False: the classic tab list.
`$product` (ec_product) The product.
`$rand` (int|string) The tab list’s id on this page.
`$atts` (array) Shortcode attributes, such as show_description, show_specifications and show_customer_reviews.

Fires in wpeasycart.php · wp_easycart_product_tabs_takeover()

### Pickup and scheduling

Grouped by what they are about

`wp_easycart_admin_schedule_details_basic_fields_list` PRO
Filters the field definitions in the basic section of the admin schedule details screen.

**Parameters**
`$fields` (array) field definitions for the schedule basics

Fires in admin/inc/wp_easycart_admin_details_schedule.php · basic_fields()

`wp_easycart_local_pickup_labels`
Filters the shipping method texts that identify an order as local pickup.

**Parameters**
`$texts` (array) shipping method label strings treated as local pickup

Fires in admin/inc/wp_easycart_admin_orders.php · wp_easycart_local_pickup_labels()

`wp_easycart_location_address`
Filters the formatted address string shown for a pickup location.

**Parameters**
`$location_address_format` (string) formatted address line
`$location` (object) the location row

Fires in wpeasycart.php · wp_easycart_get_locations_response() +2 more places

`wp_easycart_location_distance`
Filters the distance text shown for a pickup location in the location picker, in miles or kilometers.

**Parameters**
`$distance_text` (string) formatted distance text
`$location` (object) the location row

Fires in wpeasycart.php · wp_easycart_get_locations_response() +1 more place

`wp_easycart_order_is_local_pickup`
Filters whether an order counts as a local pickup order.

**Parameters**
`$is_pick` (bool) true when the shipping method matches a local pickup label
`$order` the order (array)

Fires in admin/inc/wp_easycart_admin_orders.php · wp_easycart_order_is_local_pickup()

`wp_easycart_order_pickup_kind`
Filters how a customer collects an order. A pickup order gets Mark picked up on the order screen and the orders list instead of the shipping flow; any value other than restaurant, preorder or local counts as shipped.

**Parameters**
`$kind` (string) restaurant, preorder, local (local pickup) or empty when the order ships.
`$order` (object|array) The ec_order row.

Fires in admin/inc/wp_easycart_admin_orders.php · wp_easycart_order_pickup_kind()

`wp_easycart_pickup_date_jquery_format`
Filters the jQuery UI date format used by the pickup date picker on the cart payment step and the admin order screen.

**Parameters**
`$format` (string) jQuery UI dateFormat string, default ‘MM d, yy’.

Fires in admin/template/orders/orders/order-details.php +1 more place

`wp_easycart_pickup_date_placeholder_format` PRO
Filters the PHP date format used to display a pickup date on order screens, receipts and account pages.

**Parameters**
`$format` (string) PHP date format, such as ‘F d, Y’.

Fires in admin/template/orders/orders/order-details.php +9 more places

`wp_easycart_pickup_day_label`
Filters the words for a pickup day in the pickup day list shoppers choose from.

**Parameters**
`$label` (string) The words, such as the weekday and date.
`$day` (string) The day, Y-m-d.

Fires in inc/classes/core/class-wp-easycart-pickup.php · day_label()

`wp_easycart_pickup_error`
Filters what stops a cart’s pickup at checkout.

**Parameters**
`$error` (string) preorder_pickup, restaurant_closed or ”.
`$cart` (ec_cart) The cart.

Fires in inc/classes/core/class-wp-easycart-pickup.php · error()

`wp_easycart_pickup_hours`
Filters the pickup hours a schedule day offers.

**Parameters**
`$out` (string\[\]) The start of each hour, HH:MM.
`$row` (object) The schedule row.

Fires in inc/classes/core/class-wp-easycart-pickup.php · hours()

`wp_easycart_pickup_now`
Filters the moment the pickup days are worked out from (useful for tests). Return a DateTimeImmutable.

**Parameters**
`$now` (DateTimeImmutable) Now, in the store’s time zone.

Fires in inc/classes/core/class-wp-easycart-pickup.php · now()

`wp_easycart_pickup_preorder_days`
Filters the days, and the hours each day, a shopper may pick up preorder items.

**Parameters**
`$out` (array) Y-m-d => the hours offered (HH:MM).
`$location` (int) The pickup location whose schedule applies; 0 for the store’s.

Fires in inc/classes/core/class-wp-easycart-pickup.php · preorder_days()

`wp_easycart_pickup_time_close_placeholder_format`
Filters the PHP time format used to display the end of a pickup window on order pages and receipts.

**Parameters**
`$format` (string) PHP date format, default ‘g:i A’.

Fires in design/layout/base-responsive-v3/ec_account_order_details.php +5 more places

`wp_easycart_pickup_time_placeholder_format`
Filters the PHP date format used to display a pickup time (restaurant orders) on order pages and receipts.

**Parameters**
`$format` (string) PHP date format, default ‘g:i A F d, Y’.

Fires in design/layout/base-responsive-v3/ec_account_order_details.php +5 more places

`wp_easycart_restaurant_order_ahead`
Filters whether restaurant orders are taken while the restaurant is closed, for pickup when it next opens (Settings > Checkout, Take restaurant orders while you’re closed).

**Parameters**
`$on` (bool) The ec_option_restaurant_order_ahead setting.

Fires in inc/classes/core/class-wp-easycart-pickup.php · order_ahead()

`wp_easycart_store_hours_html`
Filters the HTML of the \[ec_store_hours\] shortcode.

**Parameters**
`$html` (string) The HTML.
`$card` (string) The schedule card shown.
`$atts` (array) The shortcode attributes.

Fires in inc/classes/core/class-wp-easycart-store-hours.php · shortcode()

### Downloads and gift cards

Grouped by what they are about

`wp_easycart_account_downloads_listed`
Filters whether My Account lists the Downloads page. Default true when the store sells downloads or the customer has bought one.

**Parameters**
`$listed` (bool) Whether the page is listed.
`$page` (ec_accountpage) The account page.

Fires in inc/classes/account/ec_accountpage.php · downloads_listed()

`wp_easycart_admin_downloads_details_basic_fields_list` PRO
Filters the list of basic field definitions shown on the admin download details form.

**Parameters**
`$fields (array)` Field definitions, each an array with keys such as name, type, label and required.

Fires in admin/inc/wp_easycart_admin_details_downloads.php · basic_fields()

`wp_easycart_admin_product_details_downloads_fields_list`
Filters the field definitions of the Digital Download card in the product editor’s Type settings section.

**Parameters**
`$fields` (array) field definitions, each an array with name, type, label and related keys
`$product` (object) the product being edited

Fires in admin/inc/wp_easycart_admin_details_products.php · downloads_fields()

`wp_easycart_cancel_return_giftcard`
Filters whether the gift card amount a cancelled order used goes back onto its card; return false to leave it spent. Also asked with order id 0 to word the Cancel this order? confirmation.

**Parameters**
`$on` (bool) The Give gift card balances back when an order is cancelled setting (Settings › Checkout), on by default.
`(int) $order_id` (int) The order id, or 0 when asked for the store as a whole.

Fires in inc/classes/core/class-wp-easycart-order-returns.php · giftcard_on_cancel()

`wp_easycart_customer_download`
Filters whether a customer may download a given order document (receipt, invoice, packing slip or gift receipt) from the storefront.

**Parameters**
`$on (bool)` The store’s Customer downloads switch.
`$key (string)` Document: print_receipt, success_print_receipt, receipt_pdf, invoice_pdf, packing_slip or gift_receipt.
`$order_id (int)` The order id.

Fires in inc/classes/core/class-wp-easycart-documents.php · customer_download()

`wp_easycart_customer_upload_denied_extensions`
Filters extra file extensions to block from customer uploads; extensions returned are added to the built-in denied list and cannot remove from it.

**Parameters**
`$extra (array)` Additional file extensions to deny; empty by default.

Fires in inc/classes/core/class-wp-easycart-customer-uploads.php · denied_extensions()

`wp_easycart_customer_upload_file_types`
Filters the file types shoppers may upload; denied extensions are removed from the result afterwards.

**Parameters**
`$types (array)` Type key => array with extensions and mimes.

Fires in inc/classes/core/class-wp-easycart-customer-uploads.php · file_types()

`wp_easycart_document_attachment_cell` PRO
Filters how a PDF document is attached to an order email (off, attach or link, plus profile).

**Parameters**
`$cell (array)` Attachment setting: mode (off | attach | link) and profile.
`$email (string)` The email (grid row).
`$doc (string)` The document (grid column).
`$order_id (int)` The order id.

Fires in inc/classes/core/wp_easycart_documents_pro.php · cell_for_order()

`wp_easycart_download_allowed`
Filters whether a customer may download from an order line, both when a download link is opened and when My Account lists downloads; return false to refuse. A refused link sends the customer back to the order with a note.

**Parameters**
`$allowed` (bool) True when the order’s status counts as paid and none of the line’s options switches the download off.
`$orderdetail_row` (object) The order line (ec_orderdetail row).

Fires in inc/classes/core/class-wp-easycart-records.php · downloads() +2 more places

`wp_easycart_download_file_address`
Filters the address the store downloads a product’s download file from when it is given a web address. Google Drive and Dropbox share links are turned into their download links first.

**Parameters**
`$fetch` (string) The address to download.
`$url` (string) The address given.

Fires in inc/classes/core/class-wp-easycart-product-writer.php · store_download()

`wp_easycart_download_file_limit`
Filters the largest download file the store copies from a web address.

**Parameters**
`512 * MB_IN_BYTES` (int) Bytes. Default 512 MB; 0 means no limit.

Fires in inc/classes/core/class-wp-easycart-product-writer.php · store_download()

`wp_easycart_gift_card_issuer`
Lets an outside system issue the gift cards an order sells. Return a non-empty issuer and WP EasyCart creates no gift card code or email for the line, leaving that issuer to make the card once the order is paid (WP EasyCart PRO returns square when Gift cards you sell are Square gift cards is on).

**Parameters**
`''` (string) The issuer, empty by default (WP EasyCart issues the card).
`$cart_item` (ec_cartitem) The gift card line.
`$this->order_id` (int) The order id.
`$payment_type` (string) The payment type, such as manual_bill or third_party, or the card brand for a card payment.

Fires in inc/classes/core/ec_order.php · insert_details_helper()

`wp_easycart_gift_card_used`
Filters whether a gift card number WP EasyCart does not hold exists but has nothing left. Return true and the gift card box says the card is used up and takes it off the cart, instead of calling it an invalid number.

**Parameters**
`false` (bool) Used up, false by default.
`(string) $code` (string) The number the shopper typed.

Fires in wpeasycart.php · wp_easycart_gift_card_used()

`wp_easycart_gift_card_value`
Filters what a sold gift card that WP EasyCart does not hold is worth, for the gift card email and its print page. Return null to use the order line’s value.

**Parameters**
`null` (float|null) The card’s value, null by default.
`$code` (string) The gift card number saved on the order line.

Fires in wpeasycart.php · wp_easycart_gift_card_value()

`wp_easycart_giftcard_label`
Filters the name shown for a gift card an order used on receipts, My Account, the order screen and the order timeline. WP EasyCart PRO shows a Square gift card by its last four digits.

**Parameters**
`$code` (string) The label, the gift card code by default.
`$code` (string) The gift card code as saved on the order.

Fires in wpeasycart.php · wp_easycart_giftcard_label()

`wp_easycart_giftcard_share`
Filters how much of the order a gift card pays once the grand total is known. A filter can lower the share but never raise it.

**Parameters**
`$most` (float) The most the card can pay: its balance in whole cents, capped at what the order still owes less any gift cards bought in the same order (products only when Gift cards cover the grand total is off).
`$owed` (float) The grand total before the gift card.
`$this` (ec_discount) The order’s discount object.

Fires in inc/classes/core/ec_discount.php · settle_giftcard()

`wp_easycart_giftcard_source` PRO
Filters who holds the balance of the gift card an order used. Empty means a WP EasyCart gift card; any other name sends cancels and refunds to the card through wp_easycart_giftcard_source_return and wp_easycart_giftcard_source_take (WP EasyCart PRO returns square for a Square gift card).

**Parameters**
`''` (string) The source, empty by default (WP EasyCart).
`(string) $code` (string) The gift card as saved on the order (ec_order.giftcard_id).
`(int) $order_id` (int) The order id.

Fires in inc/classes/core/class-wp-easycart-order-returns.php · source() +1 more place

`wp_easycart_giftcard_source_return`
Lets an outside gift card system put an amount an order used back on its card when the order is cancelled or refunded to the card. Return the amount put back, or a WP_Error saying why nothing was; with no answer nothing goes back and a staff note says so.

**Parameters**
`null` (float|WP_Error|null) The amount put back, null by default.
`$card['source']` (string) The wp_easycart_giftcard_source answer, such as square.
`$order_id` (int) The order id.
`$card['id']` (string) The gift card as saved on the order.
`(float) $amount` (float) The amount to put back.
`$via` (string) cancelled or refund.

Fires in inc/classes/core/class-wp-easycart-order-returns.php · return_giftcard()

`wp_easycart_giftcard_source_take`
Lets an outside gift card system take the amount a cancel gave back off its card again when the cancelled order is reopened. Return the amount taken (less when the card holds less), or a WP_Error saying why nothing was.

**Parameters**
`null` (float|WP_Error|null) The amount taken, null by default.
`$card['source']` (string) The wp_easycart_giftcard_source answer, such as square.
`$order_id` (int) The order id.
`$card['id']` (string) The gift card as saved on the order.
`(float) $amount` (float) The amount to take.

Fires in inc/classes/core/class-wp-easycart-order-returns.php · take_giftcard()

`wp_easycart_square_sells_gift_cards`
Filters whether the gift cards the store sells are Square gift cards. While it is false, the Square import notes that an imported Square gift card item sells WP EasyCart gift cards; WP EasyCart PRO returns true when Gift cards you sell are Square gift cards is on.

**Parameters**
`false` (bool) Sells Square gift cards, false by default.

Fires in wpeasycart.php · wp_easycart_square_sells_gift_cards()

`wp_easycart_store_sells_downloads`
Filters whether the store sells downloads, which lists My Account’s Downloads page. Default true when a product is a download.

**Parameters**
`$sells` (bool) Whether a product is a download.

Fires in inc/classes/core/class-wp-easycart-account-lists.php · store_sells_downloads()

`wp_easycart_success_page_line_downloads`
Filters the download links shown under an order line on the order confirmation page.

**Parameters**
`$out` (array\[\]) Each: url and label.
`$detail` (ec_orderdetail) The order line.
`$order` (ec_orderdisplay) The order.

Fires in inc/classes/core/class-wp-easycart-order-confirmation.php · line_downloads()

`wpeasycart_get_gift_card_balance`
Filters the gift card row loaded when a gift card code is redeemed.

**Parameters**
`$giftcard (object)` Gift card database row.
`$giftcardcode (string)` The gift card code entered.

Fires in inc/classes/core/ec_db.php · redeem_gift_card()

`wpeasycart_redeem_gift_card`
Lets an outside gift card system (such as WP EasyCart PRO’s Square gift cards) redeem the order’s gift card before the payment is taken; return false or a WP_Error to stop the order (the error’s message goes to the shopper). WP EasyCart’s own cards are taken off once the order is paid.

**Parameters**
`$this->discount->giftcard_code` (string|bool|WP_Error) The gift card code; return it (or another truthy value) when redeemed.
`$this->order_id` (int) The order id.
`$this->discount->giftcard_discount` (float) The gift card’s share of the order.
`$wpec_payment_kind` (string) credit_card, affirm, manual_bill, third_party, ideal or amazonpay.
`$this` (ec_order) The order.

Fires in inc/classes/core/ec_order.php · submit_order()

### Integrations and extensions

Grouped by what they are about

`wp_easycart_abilities`
Filters the abilities (tools) WP EasyCart registers for AI assistants. WP EasyCart PRO and extensions add theirs here. Never rename an ability: assistants and saved permissions know them by name.

**Parameters**
`$defs` (array) Ability name (without the wp-easycart/ namespace) => label, description, category, kind, caps, input, callback and more.

Fires in inc/classes/core/abilities/class-wp-easycart-abilities.php · definitions()

`wp_easycart_abilities_blocked_keys`
Filters the settings an AI assistant can read but never change.

**Parameters**
`$keys` (array) Option keys. By default the AI assistant permission settings and ec_option_allow_tracking.

Fires in inc/classes/core/abilities/class-wp-easycart-abilities-setup.php · blocked_keys()

`wp_easycart_abilities_blocked_pages`
Filters the settings pages an AI assistant can read but never change.

**Parameters**
`$pages` (array) Settings page slugs. Default payment, checkout-protection and admin.

Fires in inc/classes/core/abilities/class-wp-easycart-abilities-setup.php · blocked_pages()

`wp_easycart_abilities_delivery_words`
Filters the regular expression that makes a modifier read as a delivery charge, for the warning an AI assistant gets on a product that is picked up or does not ship.

**Parameters**
`$pattern` (string) A regular expression.

Fires in inc/classes/core/abilities/class-wp-easycart-abilities-products.php · sounds_like_delivery()

`wp_easycart_bluecheck_api_base` BlueCheck
Filters the BlueCheck API base URL.

**Parameters**
`$base` (string) API host, https://customer-api.bluecheck.me by default

Fires in includes/class-wp-easycart-bluecheck-api.php · base()

`wp_easycart_bluecheck_dob_order` BlueCheck
Filters the order of the month, day and year boxes in BlueCheck’s date of birth field at checkout; an answer that is not m, d and y once each is ignored.

**Parameters**
`$order` (string\[\]) m, d and y in order: month, day, year for en_US, es_US, en_PH and fil; year first for Japanese, Chinese, Korean, Hungarian, Lithuanian and Mongolian; else day, month, year.
`$locale` (string) The locale in use.

Fires in includes/class-wp-easycart-bluecheck-checkout.php · dob_order()

`wp_easycart_bluecheck_hold_notice` BlueCheck
Filters the notice a customer reads about an order held as Age Check Pending, shown in place of the payment-processing notice on the order confirmation page, in My Account and in the receipt email.

**Parameters**
`$text` (string) The notice; its wording depends on whether the check failed, waits for a photo ID, or is still to come.
`$order` (object) The order (ec_order row or ec_orderdisplay).
`$record` (array|null) The order’s latest age check record (ec_bluecheck_check row with status and decoded meta), or null.

Fires in includes/class-wp-easycart-bluecheck-orders.php · hold_text()

`wp_easycart_bluecheck_move_block` BlueCheck
Filters whether the classic checkout’s Your age block is moved above Billing Information as the page loads; return false to leave it with the order notes at the foot of the page, where it is printed.

**Parameters**
`true` (bool) Move it, true by default.

Fires in includes/class-wp-easycart-bluecheck-checkout.php · print_move_script()

`wp_easycart_bluecheck_person` BlueCheck
Filters the shopper’s details sent to BlueCheck for age verification.

**Parameters**
`$person` (array) first_name, last_name, email, phone, address_1, address_2, city, state, zip, country
`$cd` (object|null) the checkout session

Fires in includes/class-wp-easycart-bluecheck-checkout.php · person()

`wp_easycart_bluecheck_requirement` BlueCheck
Filters the BlueCheck age verification requirement for the cart.

**Parameters**
`$out` (array) requirement with required, age, blocked, products and scope
`$product_ids` (int\[\]) products in the cart
`$country` (string) ship-to country
`$state` (string) ship-to state

Fires in includes/class-wp-easycart-bluecheck-rules.php · requirement()

`wp_easycart_bluecheck_store_check_url` BlueCheck
Filters the BlueCheck order token check URL.

**Parameters**
`$url` (string) default https://verify.bluecheck.me/age-verification/api/check-token

Fires in includes/class-wp-easycart-bluecheck-store-account.php · check_token()

`wp_easycart_consent_source`
Filters which cookie consent source WP EasyCart reads before loading tracking tags; the value must be one of the known sources or it is ignored.

**Parameters**
`$source (string)` off, wp_consent_api, google_consent_mode, cookiebot, cookieyes, complianz or any.
`$setting (string)` The choice saved on Settings > Integrations > Cookie consent.

Fires in inc/classes/core/class-wp-easycart-consent.php · source()

`wp_easycart_elementor_pro_features`
Filters the list of Elementor features that WP EasyCart PRO provides, so the free plugin can show them as active.

**Parameters**
`$value (array)` Feature keys provided by PRO; empty by default.

Fires in admin/elementor/wp-easycart-elementor-functions.php · wp_easycart_elementor_pro_feature()

`wp_easycart_email_marketing_klaviyo_revision` Email Marketing
Filters the Klaviyo API revision date sent with every Klaviyo call; it must be in YYYY-MM-DD format.

**Parameters**
`$value (string)` The API revision.

Fires in includes/klaviyo/class-wp-easycart-email-marketing-klaviyo-api.php · revision()

`wp_easycart_email_marketing_order` Email Marketing
Filters the neutral order record sent to the connected email marketing service.

**Parameters**
`$record (array)` The neutral order record.
`$order (object)` The ec_order row.

Fires in includes/class-wp-easycart-email-marketing-data.php · order()

`wp_easycart_email_marketing_product` Email Marketing
Filters the neutral product record sent to the connected email marketing service.

**Parameters**
`$record (array)` The neutral product record.
`$product (object)` The ec_product row.

Fires in includes/class-wp-easycart-email-marketing-data.php · product()

`wp_easycart_email_marketing_service` Email Marketing
Filters the service adapter the store uses to talk to the email marketing service.

**Parameters**
`$adapter (wp_easycart_email_marketing_service)` The adapter for the connected service.

Fires in includes/class-wp-easycart-email-marketing.php · service_for()

`wp_easycart_email_marketing_services` Email Marketing
Filters the email marketing services the extension can connect, one at a time.

**Parameters**
`$value (array)` Service slug => adapter class name; mailchimp and klaviyo by default.

Fires in includes/class-wp-easycart-email-marketing.php · services()

`wp_easycart_email_marketing_{service}_service_url` Email Marketing
Filters the base URL of the connection service for an email marketing service. {service} is the service slug, such as mailchimp or klaviyo.

**Parameters**
`$url (string)` Base URL, https://connect.wpeasycart.com/{service}/ by default.

Fires in includes/class-wp-easycart-email-marketing-connection.php · service_url()

`wp_easycart_facebook_feed_columns` Facebook & Instagram
Filters the list of column names written to the Facebook and Instagram product feed CSV.

**Parameters**
`$columns` (array) feed column names, including video url columns

Fires in includes/class-wp-easycart-facebook-feed.php · columns()

`wp_easycart_facebook_image_size` Facebook & Instagram
Filters the WordPress image size used for product images sent to Facebook and Instagram.

**Parameters**
`$size` (string) image size name, default ‘large’

Fires in includes/class-wp-easycart-facebook-items.php · parse_media()

`wp_easycart_facebook_item` Facebook & Instagram
Filters a finished Facebook and Instagram catalog item before it is used.

**Parameters**
`$item` (array) the catalog item
`$product` (object) the ec_product row
`$variant` (object|null) the ec_optionitemquantity row, or null for a product without a variant

Fires in includes/class-wp-easycart-facebook-items.php · finish()

`wp_easycart_facebook_item_availability` Facebook & Instagram
Filters the availability text sent to Facebook and Instagram for an item.

**Parameters**
`$availability` (string) ‘in stock’ or ‘out of stock’
`$state` (string) stock state: in_stock, preorder, backorder or out_of_stock
`$product` (object) the product row

Fires in includes/class-wp-easycart-facebook-items.php · stock()

`wp_easycart_facebook_item_issues` Facebook & Instagram
Filters the list of problems found with a Facebook and Instagram catalog item.

**Parameters**
`$issues` (array) issues found for the item
`$item` (array) the catalog item that was checked

Fires in includes/class-wp-easycart-facebook-items.php · issues()

`wp_easycart_facebook_item_link` Facebook & Instagram
Filters the product page link sent to Facebook and Instagram for a product.

**Parameters**
`$link` (string) product URL
`$product` (object) the product row

Fires in includes/class-wp-easycart-facebook-items.php · product_link()

`wp_easycart_facebook_item_price` Facebook & Instagram
Filters the price sent to Facebook and Instagram for a product, after any VAT multiplier is applied.

**Parameters**
`$price` (float) the item price
`$product` (object) the product row

Fires in includes/class-wp-easycart-facebook-items.php · assemble()

`wp_easycart_facebook_item_vat_multiplier` Facebook & Instagram
Filters the VAT multiplier applied to prices sent to Facebook and Instagram.

**Parameters**
`$multiplier` (float) 1 + VAT rate / 100, or 1 when no VAT applies
`$product` (object) the product row

Fires in includes/class-wp-easycart-facebook-items.php · vat_multiplier()

`wp_easycart_facebook_option_attribute` Facebook & Instagram
Lets you map a product option label to a Facebook attribute name when the built-in matching (such as material or pattern) finds none.

**Parameters**
`$attribute` (string) attribute name, empty by default
`$label` (string) the option label, lowercased

Fires in includes/class-wp-easycart-facebook-items.php · attribute_for_option()

`wp_easycart_facebook_product_exclusion` Facebook & Instagram
Lets you exclude a product from the Facebook and Instagram catalog by returning a reason code.

**Parameters**
`$reason` (string) exclusion reason; empty keeps the product in the catalog
`$product` (object) the product row

Fires in includes/class-wp-easycart-facebook-items.php · product_exclusion()

`wp_easycart_facebook_product_set_filter` Facebook & Instagram
Filters the Meta product set filter built for a store category when product sets are synced.

**Parameters**
`$filter` (array) the Meta product set filter
`$category_id` (int) the category ID
`$product_ids` (int\[\]) IDs of the products in the category

Fires in includes/class-wp-easycart-facebook-sync.php · desired_sets()

`wp_easycart_facebook_reason_label` Facebook & Instagram
Filters the label shown for an item exclusion reason code that has no built-in label.

**Parameters**
`$label` (string) the label, initially the reason code itself
`$code` (string) the reason code

Fires in includes/class-wp-easycart-facebook-items.php · reason_label()

`wp_easycart_facebook_request_data` Facebook & Instagram
Filters the data array sent to Facebook and Instagram when an item is created or updated.

**Parameters**
`$data` (array) request fields for the item
`$item` the catalog item being sent

Fires in includes/class-wp-easycart-facebook-sync.php · request_data()

`wp_easycart_facebook_stock_events` Facebook & Instagram
Filters the list of order events after which Facebook and Instagram stock is re-synced.

**Parameters**
`$events` (string\[\]) event and action names, such as wpeasycart_order_paid and wpeasycart_full_order_refund

Fires in includes/class-wp-easycart-facebook-sync.php · stock_events()

`wp_easycart_fulfillment_providers`
Lets fulfillment partner extensions register themselves as fulfillment providers.

**Parameters**
`$providers` (array) provider slug => array with label, active, url and order_url (a callable taking $order_id and $ref); empty by default

Fires in inc/classes/core/class-wp-easycart-fulfillment.php · providers()

`wp_easycart_google_feed_item` PRO
Filters a finished product item in the Google Merchant Center feed before it is output.

**Parameters**
`$item` (array) the Google feed item

Fires in inc/classes/core/wp_easycart_google_feed_pro.php · finalize()

`wp_easycart_google_feed_pro_licensed` PRO
Filters whether the site counts as licensed for the Pro Google feed.

**Parameters**
`$licensed` (bool) true when the WP EasyCart license is valid

Fires in inc/classes/core/wp_easycart_google_feed_pro.php · licensed()

`wp_easycart_google_relay_url` PRO
Filters the base URL of the WP EasyCart relay service used by the Google Merchant connection.

**Parameters**
`$url` (string) base URL, default https://connect.wpeasycart.com/google/

Fires in inc/classes/core/wp_easycart_google_merchant_pro.php · relay_url()

`wp_easycart_groupon_report_columns` Groupon
Filters the columns of the Groupon deal redemption report CSV.

**Parameters**
`$columns` (array) column key (code, voucher_ref, redeemed, orders, discount) => header
`$site` (string) deal site slug

Fires in includes/class-wp-easycart-groupon-codes.php · report_columns()

`wp_easycart_groupon_sites` Groupon
Filters the list of deal sites, such as Groupon, that the Groupon extension supports.

**Parameters**
`$sites` (array) site slug => settings including label, paid_value, report and help

Fires in includes/class-wp-easycart-groupon.php · sites()

`wp_easycart_marketing_contact` PRO
Filters the contact data sent to an email marketing provider for a shopper.

**Parameters**
`$contact` (array) contact data
`$email` (string) the shopper’s email address

Fires in inc/classes/marketing/class-wp-easycart-marketing-pro.php · contact()

`wp_easycart_marketing_providers` PRO
Filters the registered email marketing provider connections.

**Parameters**
`$providers` (array) provider id => wp_easycart_marketing_provider object

Fires in inc/classes/marketing/class-wp-easycart-marketing-pro.php · providers()

`wp_easycart_meta_connection` PRO
Lets the Facebook and Instagram extension supply its connection details (pixel and token) to the Meta Conversions API.

**Parameters**
`$connection` (array|null) connection with connected, name, pixel_id, token, settings_url and source keys; null when there is none

Fires in inc/classes/analytics/wp_easycart_meta_capi.php · connection()

`wp_easycart_meta_content_id` Facebook & Instagram
Filters the content ID sent to Meta for a product or variant, in the form product_id or product_id_variant_id.

**Parameters**
`$content_id` (string) {product_id} or {product_id}_{optionitemquantity_id}
`$product_id` (int) the product ID
`$optionitemquantity_id` (int) the variant row ID, 0 for the product

Fires in inc/classes/core/class-wp-easycart-meta.php · wp_easycart_meta_content_id() +1 more place

`wp_easycart_oauth_keeps_refresh`
Filters whether an AI assistant’s sign-in keeps one refresh token for its life instead of a new one at every refresh. Default true for Google’s apps (Gemini).

**Parameters**
`$keeps` (bool) True for Google apps.
`$redirect_uri` (string) Where the app’s sign-in returned.
`$client` (array) The app.

Fires in inc/classes/core/abilities/class-wp-easycart-oauth.php · keeps_refresh()

`wp_easycart_premium_download_url`
Filters the link that downloads WP EasyCart Premium as a .zip for a current Premium license, offered on the Extensions page banner when the site does not allow plugins to be installed from the dashboard. Return empty to fall back to the plain download link; WP EasyCart PRO supplies its licensed download here.

**Parameters**
`''` (string) The download link, empty by default. Asked only for a user who can manage options while WP EasyCart Premium is not installed.

Fires in admin/inc/wp_easycart_admin_extensions.php · premium_download_url()

`wp_easycart_premium_install_status`
Filters why the one-click install of WP EasyCart Premium is not offered, which picks the wording and buttons of the Extensions page banner; WP EasyCart PRO answers it. Not asked when the user cannot install plugins, the site allows no installs from the dashboard or PRO has no one-click install.

**Parameters**
`$status` (array) Keys reason (unknown by default; PRO answers such as not_premium, expired, inactive, not_offered, site or unreachable) and checked (when the download server last answered, a timestamp, or 0).

Fires in admin/inc/wp_easycart_admin_extensions.php · premium_install_status()

`wp_easycart_premium_install_url`
Filters the URL used for one-click installation of WP EasyCart Premium and its extensions.

**Parameters**
`$url` (string) Install URL, empty when one-click install is not available.
`$slug` (string) The extension to install afterwards, or an empty string.

Fires in admin/inc/wp_easycart_admin_extensions.php · premium_install_url()

`wp_easycart_premium_public_zip_url` PRO
Filters the plain link to the current WP EasyCart Premium .zip, which needs no license, that WP EasyCart PRO offers when its licensed download is not available or did not work: on the install credentials page and in its install and download error notices.

**Parameters**
`$url` (string) https://connect.wpeasycart.com/premium/v1/latest/wp-easycart-premium.zip with source=pro, the site address and the PRO, WP EasyCart, WordPress and PHP versions as query arguments.

Fires in admin/inc/wp_easycart_premium_installer_pro.php · public_zip_url()

`wp_easycart_premium_zip_link`
Filters the plain link to the current WP EasyCart Premium .zip, which needs no license, behind Download WP EasyCart Premium ( .zip ) on the Extensions page banner, unless WP EasyCart PRO supplies its licensed download there.

**Parameters**
`$url` (string) https://connect.wpeasycart.com/premium/v1/latest/wp-easycart-premium.zip with source=free, the site address and the WP EasyCart, PRO, WordPress and PHP versions as query arguments.

Fires in admin/inc/wp_easycart_admin_extensions.php · premium_zip_link()

`wp_easycart_pro_license_facts` PRO
Filters the license facts WP EasyCart Premium reads.

**Parameters**
`$facts` (array) key, site, tier, model, trial, licensed, lapsed and end.

Fires in wp-easycart-admin-pro.php · wp_easycart_pro_license_facts()

`wp_easycart_qbo_service_url` QuickBooks Online
Filters the base address of the WP EasyCart connection service for QuickBooks Online. Default https://connect.wpeasycart.com/quickbooks/.

**Parameters**
`$url` (string) The base URL.

Fires in includes/class-wp-easycart-qbo-connection.php · service_url()

`wp_easycart_qbo_tax_service_active` QuickBooks Online
Filters whether a tax service works out and files this store’s sales tax, in which case the sales tax liability line is suggested.

**Parameters**
`$on` (bool) Whether a tax service was detected.

Fires in includes/class-wp-easycart-qbo-lists.php · tax_service_active()

`wp_easycart_square_inventory_adjustment`
Filters the inventory adjustment sent to Square when WP EasyCart changes the stock of a product linked to Square: a sale moves units from IN_STOCK to SOLD, stock put back moves them from UNLINKED_RETURN to IN_STOCK. The quantity must stay a positive decimal string.

**Parameters**
`$adjustment` (array) Square adjustment fields: catalog_object_id, quantity, from_state, to_state, location_id and occurred_at.
`$quantity` (int|float) Units sold (positive) or put back (negative).
`$item_id` (string) The Square catalog object id of the item variation.

Fires in inc/classes/gateway/ec_square.php · adjust_inventory()

`wp_easycart_xero_app_scopes` Xero
Filters the scopes asked of the store’s own Xero app. Default offline_access accounting.settings accounting.contacts accounting.invoices accounting.payments; an app made before Xero’s granular scopes may need accounting.transactions instead.

**Parameters**
`$scopes` (string) Space-separated scopes.

Fires in includes/class-wp-easycart-xero-connection.php · start()

`wp_easycart_xero_service_url` Xero
Filters the base address of the WP EasyCart connection service for Xero. Default https://connect.wpeasycart.com/xero/.

**Parameters**
`$url` (string) The base URL.

Fires in includes/class-wp-easycart-xero-connection.php · service_url()

`wp_easycart_zapier_app_url` Zapier
Filters the link that adds WP EasyCart to a merchant’s Zapier account. Anything not starting with https:// gives no link.

**Parameters**
`$url` (string) The invite link during early access, else the app’s Zapier listing.

Fires in includes/class-wp-easycart-zapier.php · app_url()

`wp_easycart_zapier_hook_url_allowed` Zapier
Filters whether a Zap’s hook URL may be saved. By default only https://hooks.zapier.com/ addresses are allowed.

**Parameters**
`$ok` (bool) Whether the URL is allowed.
`$url` (string) The hook URL.

Fires in includes/class-wp-easycart-zapier-hooks.php · url_allowed()

`wp_easycart_zapier_pre_send` Zapier
Filters a Zapier delivery before it is posted. Default null, which posts it; return an HTTP status code or a WP_Error to skip the post.

**Parameters**
`$pre` (null|int|WP_Error) Null to post.
`$hook` (object) The hook row.
`$event` (string) The event.
`$payload` (array) The record sent.

Fires in includes/class-wp-easycart-zapier-hooks.php · send()

### Import and export

Grouped by what they are about

`wp_easycart_admin_inventory_export_header`
Filters the header row of the inventory CSV export.

**Parameters**
`$header (array)` Column key => label written to the file.

Fires in admin/inc/wp_easycart_admin_inventory.php · export_header()

`wp_easycart_admin_inventory_export_row`
Filters each data row of the inventory CSV export before it is written.

**Parameters**
`$csv_row (array)` Cells in header order.
`$row (object)` Database row with product_id, oiq_id, title, variant_label, sku, row_type, tracked and quantity.

Fires in admin/inc/wp_easycart_admin_inventory.php · export_inventory_list()

`wp_easycart_admin_inventory_import_columns` PRO
Filters the header names the inventory importer accepts for each column role.

**Parameters**
`$columns (array)` Role (variant_id, product_id, sku, qty) => array of accepted header names.

Fires in admin/inc/wp_easycart_admin_inventory_pro.php · import_column_aliases()

`wp_easycart_csv_export_bom`
Filters whether a CSV export starts with the UTF-8 byte order mark. Default true.

**Parameters**
`$bom` (bool) Whether to write the mark (true).
`$export` (string) Which export.

Fires in admin/inc/wp_easycart_admin.php · wp_easycart_admin_csv_bom()

`wp_easycart_import_sources`
Filters the stores the importer (Products › Import) can move products from; add a source by its id and a class name or object that extends wp_easycart_import_source.

**Parameters**
`array(...)` (array) id => class name or object; woocommerce and square by default.

Fires in inc/classes/core/import/class-wp-easycart-import.php · sources()

`wp_easycart_import_start_choices`
Filters the import choices the products list shows a store with no products, under Have a store to bring over?

**Parameters**
`$choices` (array\[\]) The choices.

Fires in admin/inc/wp_easycart_admin_import.php · start_choices()

`wp_easycart_order_export_fee_types`
Filters the fee labels that become extra columns in the order export.

**Parameters**
`$fee_rows` (array) rows of objects with a fee_label property

Fires in admin/inc/wp_easycart_admin.php · report_phase_init() +1 more place

`wp_easycart_order_export_keys` PRO
Filters the full list of column keys in the order export CSV.

**Parameters**
`$keys` (array) column keys

Fires in admin/inc/wp_easycart_admin.php · report_phase_init() +2 more places

`wp_easycart_order_export_order_keys`
Lets extensions add order-level columns to the order export CSV.

**Parameters**
`$keys` (array) additional column keys, empty by default

Fires in admin/template/exporters/export-orders-csv.php

`wp_easycart_order_export_order_values`
Supplies values for the extension-added order export columns for a chunk of orders.

**Parameters**
`$values` (array) order id => column key => value, empty by default
`$chunk_order_ids` (array) order IDs in the current chunk
`$wpec_order_keys` (array) the extension column keys added through the order keys filter

Fires in admin/template/exporters/export-orders-csv.php

`wp_easycart_order_export_single_keys` PRO
Filters the list of order export columns that are written once per order rather than once per line item.

**Parameters**
`$single_keys` (array) column keys that are single-use per order, such as sub_total, grand_total and order_date

Fires in admin/inc/wp_easycart_admin.php · report_phase_init() +2 more places

`wp_easycart_order_field_export_columns`
Filters the checkout field columns included in the order export.

**Parameters**
`$out` (array) checkout field key => column name

Fires in inc/classes/core/class-wp-easycart-order-fields.php · export_columns()

`wp_easycart_product_csv_template_rows`
Filters the example rows of the product CSV templates you can download for the product import.

**Parameters**
`$rows` (array\[\]) The rows.
`$kind` (string) starter or full.

Fires in admin/inc/wp_easycart_admin_product_import.php · template_rows()

`wp_easycart_product_export_yoast_description`
Filters whether the products CSV export adds the yoast_meta_description column. Default true when Yoast SEO is active.

**Parameters**
`$add` (bool) Whether to add the column.

Fires in admin/inc/wp_easycart_admin_products.php · export_yoast_description()

`wpeasycart_admin_order_export_file`
Filters the file path of the template that exports orders to CSV.

**Parameters**
`$file` (string) Path to export-orders-csv.php.

Fires in admin/inc/wp_easycart_admin_orders.php · \__construct()

`wpeasycart_admin_order_stamps_export_file`
Filters the file path of the template that exports orders to a Stamps.com CSV.

**Parameters**
`$file` (string) Path to export-orders-stamps-csv.php.

Fires in admin/inc/wp_easycart_admin_orders.php · \__construct()

### API and mobile app

Grouped by what they are about

`wp_easycart_api_controllers` API plugin
Filters the WP EasyCart API’s REST controllers. A class outside the API’s includes/rest folder must be loaded first.

**Parameters**
`$controllers` (array) Route base => class name.

Fires in wp-easycart-api/includes/class-wp-easycart-api.php · controllers()

`wp_easycart_api_download_url_problem` API plugin
Filters why a download file’s web address sent to the WP EasyCart API cannot be used. Return an empty string to allow it.

**Parameters**
`$problem` (string) The message, or ”.
`$url` (string) The address.

Fires in wp-easycart-api/includes/class-wp-easycart-api-catalog.php · download_url_problem()

`wp_easycart_api_pro_licensed` API plugin
Filters whether the store’s WP EasyCart PRO license lets the WP EasyCart API turn on PRO product features. Without it those requests answer 503.

**Parameters**
`$licensed` (bool) WP EasyCart PRO’s answer.

Fires in wp-easycart-api/includes/class-wp-easycart-api-catalog.php · pro_licensed()

`wp_easycart_api_product_image_url_problem` API plugin
Filters why a product image’s web address sent to the WP EasyCart API cannot be fetched. Return an empty string to allow it.

**Parameters**
`$problem` (string) The message, or ”.
`$url` (string) The address.

Fires in wp-easycart-api/includes/class-wp-easycart-api-catalog.php · image_url_problem()

`wp_easycart_api_rate_limit` API plugin
Filters how many requests one WP EasyCart API credential may make in any 60 seconds. 0 means no limit.

**Parameters**
`self::LIMIT` (int) Default 120.
`$credential` (string) key:<id> or user:<id>.

Fires in wp-easycart-api/includes/class-wp-easycart-api-log.php · limit()

`wp_easycart_api_webhook_disabled_email` API plugin
Filters the email sent to the store owner when the WP EasyCart API turns a webhook off. Return an array without to or subject to send nothing.

**Parameters**
`$mail` (array) to, subject and message.
`$hook` (object) The webhook row.
`$reason` (string) gone, failing or secret.

Fires in wp-easycart-api/includes/class-wp-easycart-api-webhooks.php · email_owner()

`wp_easycart_api_webhook_events` API plugin
Filters the events WP EasyCart API webhooks can send. Each event name is resource.action, such as order.created.

**Parameters**
`$events` (array) Event name => label, group, description and record (a callable that answers the record as the REST route does, or null to send nothing).

Fires in wp-easycart-api/includes/class-wp-easycart-api-webhooks.php · events()

`wp_easycart_api_webhook_pre_send` API plugin
Filters a webhook delivery before the WP EasyCart API sends it. Return a result to skip the request; null sends it.

**Parameters**
`null` (int|WP_Error|null) The response code to record, or null.
`$hook` (object) The webhook row.
`$row` (object) The delivery row.
`$headers` (array) The headers.
`$body` (string) The body.

Fires in wp-easycart-api/includes/class-wp-easycart-api-webhooks.php · send()

`wp_easycart_api_webhook_url_problem` API plugin
Filters why a webhook’s target address cannot be used. Return an empty string to allow it.

**Parameters**
`$problem` (string) The message, or ”.
`$url` (string) The address.

Fires in wp-easycart-api/includes/class-wp-easycart-api-webhooks.php · url_problem()

`wp_easycart_record`
Filters one store record as other systems read it: the WP EasyCart API’s routes and webhooks, WP EasyCart for Zapier and the AI assistant tools. Records never hold passwords, card details, gateway tokens, admin notes or IP addresses.

**Parameters**
`$record` (array) The record.
`$type` (string) order, order_line, shipment, order_status, customer, customer_role, subscriber, subscription, subscription_change, subscription_plan, product, variation, category, manufacturer, option_set, abandoned_cart, review, withdrawal, download or stock_change.
`$row` (mixed) The row it was built from.

Fires in inc/classes/core/class-wp-easycart-records.php · done()

### Other

Grouped by what they are about

`wp_easycart_asset_version_by_file`
Filters whether WP EasyCart’s own scripts and styles carry the file’s modified time in their version. Default true; return false to leave the address unchanged.

**Parameters**
`$on` (bool) Whether to version by file (true).
`$src` (string) The asset’s address.
`$handle` (string) The asset’s handle.

Fires in wpeasycart.php · wp_easycart_asset_file_version()

`wp_easycart_collation_auto_max_bytes`
Filters the largest table (bytes of data and indexes) the upgrade changes to the store’s collation by itself. Larger tables wait for Store Status or WP-CLI.

**Parameters**
`self::AUTO_MAX_BYTES` (int) Bytes.

Fires in inc/classes/core/class-wp-easycart-collation.php · automatic()

`wp_easycart_currency_country_format`
Filters how a country writes amounts.

**Parameters**
`$format` (array|null) before, space, dec and thou, or null when not known.
`$country` (string) ISO country code.
`$locale` (string) WordPress locale.

Fires in inc/classes/core/ec_currency.php · country_format()

`wp_easycart_table_collations`
Filters the collation WP EasyCart’s tables are matched to for each character set.

**Parameters**
`$out` (array) Character set family (utf8mb4, utf8mb3, latin1 …) => collation.
`$anchor` (array|null) The character set and collation of the store’s own tables.

Fires in inc/classes/core/class-wp-easycart-collation.php · targets()

`wpeasycart_post_sync_direct_writes`
Filters whether WP EasyCart’s post sync writes posts with direct database queries instead of wp_insert_post and wp_update_post.

**Parameters**
`$direct (bool)` True for mobile app (amfphp) requests by default, false otherwise.

Fires in inc/classes/core/class-wp-easycart-post-sync.php · use_direct_writes()

`wpeasycart_post_sync_force_delete`
Filters whether the synced WordPress post is permanently deleted, skipping the trash, when its store item is removed.

**Parameters**
`$force (bool)` True to delete permanently; defaults to true.
`$type (string)` Synced item type.
`$entity_id (int)` Store item id.
`$post_id (int)` WordPress post id.

Fires in inc/classes/core/class-wp-easycart-post-sync.php · delete()

`wpeasycart_post_sync_registry`
Filters the registry of item types the post sync keeps in step with WordPress posts.

**Parameters**
`$registry (array)` Item type => settings such as table, primary key and shortcode attributes.

Fires in inc/classes/core/class-wp-easycart-post-sync.php · registry()

*Keep going*

## Related panels

- [Installing Extensions](https://docs.wpeasycart.com/docs/extension-guides/installing-all-extensions/): Installing the extensions that add their own hooks.
- [WP EasyCart API](https://docs.wpeasycart.com/docs/extension-guides/wp-easycart-api-extension/): The REST API and signed webhooks, for systems outside WordPress.

## Ready to run your store on WP EasyCart?

Everything in this guide works with the free plugin. PRO and Premium add subscriptions, memberships, wholesale pricing and more. Try every PRO feature free for 14 days.

[Start your free trial](https://www.wpeasycart.com/wp-easycart-professional-14-no-risk-trial/) · [See what is included](https://www.wpeasycart.com/wordpress-shopping-cart-pricing/)

![The WP EasyCart admin: orders and offers](https://docs.wpeasycart.com/wp-content/uploads/2026/09/cta-wpeasycart-pro-v2.jpg)

---

Source: https://docs.wpeasycart.com/docs/extension-guides/wordpress-filters-reference/ ( updated 2026-11-06 )
