WooCommerce programmatically created order hook

In my scenario I need to fix orders that come without shipping costs. This script works.
But it only works if orders are made on the shop-frontend!
Whenever an order is created by script/plugin, it doesn’t get recognized.

Usually, I use the hook woocommerce_checkout_order_processed.
Now I found the hook save_post_shop_order, which works somehow but fires about 6x and only one time with shipping data.

Problem: I need the correct shipping data. Many hooks I tried don’t work at all or don’t give me shipping details within the order data.

What is the correct hook for orders created with

$order = new WC_Order($order_id);
.
.
.
$order-> save();