There is no official tool for this route. Adobe's data-migration-tool covers Magento 1 to Magento 2 only, so a WooCommerce move runs on FireBear Improved Import and Export, LitExtension, Cart2Cart, or a custom ETL writing through Magento's async bulk REST endpoints. The sequence matters more than the tool.
Start with a read-only audit of the source: row counts in wp_posts grouped by post_type, the size of wp_postmeta, the contents of wp_woocommerce_tax_rates, and the active plugin list. That audit sets scope, because a single simple product already writes more than 20 rows into wp_postmeta before plugins add theirs.
Attributes come next and cannot be rushed. Global attributes are pa_ taxonomies in wp_terms and wp_term_taxonomy. Per-product custom attributes sit inside a serialized PHP array under the _product_attributes meta key, where the same colour has often been typed four ways across five years. Magento needs one attribute code, one option list, Global scope and 'Use for configurable' enabled before any configurable can be built. Deduplicate option values in the staging database, never in Magento.
Then the known breakages.
Tax: WooCommerce holds tax-inclusive pricing in woocommerce_prices_include_tax, Magento in tax/calculation/price_includes_tax. Mismatch the pair and every price is out by the VAT rate, uniformly, which survives a casual spot check.
Stock: WooCommerce tracks _stock postmeta at variation level. Magento Multi Source Inventory needs source items and a stock assignment, or salable quantity reads zero and products vanish from the storefront while quantity still looks correct in the admin grid.
Media: WooCommerce serves from wp-content/uploads and generates sized derivatives. Import the -600x600 file instead of the original and Magento regenerates every thumbnail from an already downscaled image.
Orders: sales_order rows do not appear in the admin until the grid indexer runs. Guest orders need customer_is_guest set and no customer_id. Statuses map wc-processing to processing, wc-on-hold to holded, wc-completed to complete. Refunds become credit memos, and Magento will not create one without a matching invoice, so invoices import first.
SEO: crawl and export every 200-status URL plus 16 months of Search Console query data before anything changes, because after DNS moves that map cannot be rebuilt. Serve redirects at CDN or web-server level rather than loading a few hundred thousand rows into url_rewrite.