Google Tag Manager makes conversion tracking flexible, but it also makes it easy to build a messy container that breaks every time the website changes. This is the structure I use for client setups.
Step 1: Plan the events first
Write down every action that matters: form submissions, calls, purchases, bookings. For each one, note where it happens and what data you need, such as value or transaction ID.
Step 2: Push clean dataLayer events
Ask your developer, or use a small script, to push an event like generate_lead or purchase to the dataLayer when the action succeeds. This is far more reliable than clicks or page views.
Step 3: Build one trigger per event
Create a Custom Event trigger for each dataLayer event. Reuse the same trigger for GA4, Google Ads and Meta tags so they all fire on the same moment.
Step 4: Use variables for values
Create Data Layer Variables for value, currency and transaction ID. Send them to every platform so revenue matches across tools.
Step 5: Test before publishing
Use Preview mode, submit a real test and confirm each tag fires once. Then check the platforms a few hours later to confirm the conversions arrived.
Need a hand? Get a free tracking audit.

GTM
Meta CAPI