I understand how annoying this must be after all the effort you’ve put into resolving it. The 400 error probably indicates that the GTM Server-Side is not managing the requests correctly.
Here’s what you need to check and verify:
Cloud Run & Load Balancer Connection – Make sure your Load Balancer’s backend uses a Serverless NEG pointing to Cloud Run. (Setup Guide)
DNS & GTM Server URL – Your DNS A record should point to the Load Balancer’s static IP. Also, in GTM > Admin > Container Settings, confirm the “Server Container URL” matches your domain.
Fix the 400 Errors – In GTM’s Preview mode, see if your requests are being handled. If they aren’t, check if your GA4 client is properly configured to accept them.
Enable Logging – In Cloud Run, enable logs to capture incoming requests. (Monitoring Guide)
Additionally, smart choice in steering clear of Cloud Run’s custom domain mapping—I would recommend to stick with the Load Balancer setup.
Was this helpful? If so, please accept this answer as “Solution”. If you need additional assistance, reply here within 2 business days and I’ll be happy to help.