These action hooks filters allows you to modify the data coming in from Exact Online before they are saved in WooCommerce. Running custom rules or workflows? Use any of the below filters to enforce those rules / workflows. Feel free to suggest more hooks/filters to support your business requirements.

`cmbird_eo_product_simple_updates`: Filter to modify the batch payload for simple/parent products before it is sent to the WooCommerce REST API during an Exact Online stock import. Each item in the array is a product update with keys `id`, `stock_quantity`, `manage_stock`, `stock_status`, `name`, `slug`, `regular_price` (optional), and `meta_data`. Return an empty array to skip the request entirely.
Example – remove stock fields from every simple product update:
- add_filter( 'cmbird_eo_product_simple_updates', function( array $updates ): array {
- return array_map( function( array $item ): array {
- unset( $item['stock_quantity'], $item['manage_stock'], $item['stock_status'] );
- return $item;
- }, $updates );
- } );
Example – apply a 10 % price mark-up to every simple product:
- add_filter( 'cmbird_eo_product_simple_updates', function( array $updates ): array {
- return array_map( function( array $item ): array {
- if ( isset( $item['regular_price'] ) ) {
- $item['regular_price'] = (string) ( (float) $item['regular_price'] * 1.1 );
- }
- return $item;
- }, $updates );
- } );

`cmbird_eo_product_variation_updates`: Filter to modify a batch payload chunk for product variations before it is sent to the WooCommerce REST API during an Exact Online stock import. Receives the array of variation updates for a single chunk and the parent product ID. Each item contains `id`, `stock_quantity`, `manage_stock`, `stock_status`, `regular_price` (optional), and `meta_data`. Return an empty array to skip sending that chunk.
Example – remove stock fields from every variation update:
- add_filter( 'cmbird_eo_product_variation_updates', function( array $updates, int $parent_id ): array {
- return array_map( function( array $item ): array {
- unset( $item['stock_quantity'], $item['manage_stock'], $item['stock_status'] );
- return $item;
- }, $updates );
- }, 10, 2 );
Example – apply a 10 % price mark-up to every variation belonging to a specific parent:
- add_filter( 'cmbird_eo_product_variation_updates', function( array $updates, int $parent_id ): array {
- if ( 42 !== $parent_id ) {
- return $updates;
- }
- return array_map( function( array $item ): array {
- if ( isset( $item['regular_price'] ) ) {
- $item['regular_price'] = (string) ( (float) $item['regular_price'] * 1.1 );
- }
- return $item;
- }, $updates );
- }, 10, 2 );