Rose here from Shopify. Thanks for reaching out!
That's a great question. I would suggest creating a Buy X Get Y discount code to accomplish this. You can set specific requirements for this discount code to include x amount must be spent to get x item for free. There are plenty of variations you can consider to include the free product within the discount code.
With this strategy, the customer must add the free product to their cart. This will ensure that the product will be included in the cost calculation for shipping. Currently, what is your shipping strategy? You can consider two options:
* Note that for both these options to work for the free product, you must set a weight for the free product so that it is calculated in the total order *
If the latter option is something you are interested in, please let me know where you are located and your store URL so I may look into this for you.
I hope that helps! If you have any other questions, please let me know.