Custom taxonomy term in WooCommerce product permalink

As always it was too simple in the end, was using the wrong hook. post_link is for posts only should use post_type_link instead.

/**
 * replace the '%item%' tag with the first 
 * term slug in the item taxonomy
 * 
 * @wp-hook post_link
 * @param string $permalink
 * @param WP_Post $post
 * @return string
 */
add_filter( 'post_type_link', 'wpse_56769_post_link', 10, 2 );
function wpse_56769_post_link( $permalink, $post ) {

    if( $post->post_type == 'product' ) {
      $default_term = 'no_item';
      $terms = wp_get_post_terms( $post->ID, 'item' );

      if ( ! empty( $terms ) && ! is_wp_error( $terms ) )
          $term = current( $terms )->slug;
      else
          $term = $default_term;

      $permalink = str_replace( '%item%', $term, $permalink );
    }

    return $permalink;
}