How to trigger a specific code after a new product is created via WooCommerce REST API2 min read

I ran yesterday into a situation where I needed WordPress to perform a specific action after a product is inserted into WooCommerce database using the REST API endpoint POST /wp-json/wc/v3/products

I have searched online for a couple of hours and I found multiple solutions, but non of them worked in my case. Almost all of them work fine when you add a product from within the WordPress backend (the normal way via WP backend area–> Products–> Add new).
You can use one of the following hooks to trigger whatever you want after creating a product using the normal way:

add_action('added_product_meta', 'my_function', 10, 4 );
add_action('updated_product_meta', 'my_function', 10, 4 );
do_action('rest_insert_product', 'my_function', WP_Post $post, WP_REST_Request $request, bool $creating )
add_action('save_post_product', 'my_function', 10, 3);
add_action('save_post', 'my_function', 10, 3);
add_action('woocommerce_api_create_product', 'my_function', 10, 2 );

The hook that worked in my case was woocommerce_new_product . Place the following code in your theme functions.php file.

    add_action( 'woocommerce_new_product','send_email_after_a_product_is_created' , 10, 2);
    function send_email_after_a_product_is_created( $product_id ) {
    // Don't do anything when we are editing an existing product
    if (wp_is_post_revision($product_id)) 
    {
        return;
    }
     if ( get_post_type($product_id ) == 'product' ) 
     {
        $product_title = get_the_title( $product_id );
        $product_url = get_permalink( $product_id );
        $subject = 'New product in your WooCommerce shop';
     
        $message = "A new product has been added to your webshop with the following title :\n\n";
        $message .= $product_title . ": " . $product_url;
     
        // Send email
        wp_mail( 'YOUR_EMAIL_ADDRESS@EXAMPLE.COM', $subject, $message );
    }   

}

The above example sends me an email every time a product is created in WooCommerce using the REST API. You can execute whatever code you want instead of sending the email. I have used the email as an example. In my case it wasn’t about sending the email, it was something different which is a bit complex! 

email received after a product is added in WooCommerce

The email I received after I did a POST request on /wp-json/wc/v3/products !

References:

StackOverflow

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Peshmerge.io-logo
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.