Do New_to_publish hooks work for custom post types

I think you’re using wrong hooks. Please take a look at wp_transition_post_status function, you’ll see the correct hooks: function wp_transition_post_status($new_status, $old_status, $post) { do_action(‘transition_post_status’, $new_status, $old_status, $post); do_action(“{$old_status}_to_{$new_status}”, $post); do_action(“{$new_status}_{$post->post_type}”, $post->ID, $post); } So, in your code, you should use hooks: ‘new_to_publish’ ‘draft_to_publish’ ‘pending_to_publish’ and in your function, you have to check your post type.