I used to like GTM but if you want the tags to fire in checkout (you do) then you need to use the Shopify method of inserting the tracking tags. As of March Shopify finally support GA4 through the Google channel app. You can also use the Google app to link to the merchant centre but it's crap. There is no real options to update in bulk or filter products.
There are other manual methods and apps to insert the GA4 tracking code, but I like to use Shopify apps where possible as I hope they are better developed and also have access to checkout (which you don't unless you pay for Shopify pro)
Side note, to link to the merchant centre with a nice API connection I use Simprosys Google Shopping Feed fed by my CSS, which also labels products
zombie based on their ROAS.
Add GA4 to Shopify
Install the Google channel app in Shopify and connect it to GA4
Link the GA4 tag any other tags in Google Ads
Check in GA4 for some events such as
add_to_cart. Realtime should show them straight away, the reports for me lag 24 hours.
Remove any old tags
Turn off any tracking in Simporosys
Remove the UA tag from in Shopify Online Store -> Preferences
Remove any other tags from Shopify, such as in <head> in theme.liquid
Check what tags are firing
Check that everything is working correctly and only the GA4 container tag is being loaded using code inspector, Tag Assistant or run an audit like Page Speed which will flag duplicate js.
Create the conversions in Google Ads
In Ads Tools -> Linked accounts create the GA4 linked account
And then activate it
Analytics Admin -> Events I marked the
add_to_cart event as a conversion so I can use it in Ads. Shopify say there there are default events for
add_payment_info but I haven't seen them yet...
And in Analytics Admin -> Audiences create the default audiences
Then in Ads -> Tools -> Conversions create a new conversion and import from GA4 web
You should have at least a purchase and add to cart conversion. Leave the old conversion in while the new one accumulates conversions.
It sucks that GA4 is so lagged compared to UA, or at least it is for me. UA is near realtime, whereas GA4 is a day behind with conversions.
Link an old UA tag to GA4
In Admin -> Stream Settings you can connect the old UA tag through GA4 so it still loads and processes data. This is useful to leave UA recording until a set date like the end of a month for cleaner reporting.