Great writeup. One gotcha worth flagging: auto-tagging already writes gclid by default, so adding a tracking template with utm_source=google on top gives you two attribution systems that can disagree. Let gclid identify the click for Ads/bidding, and keep UTMs just for the human-readable Source/Campaign fields in CF7 mail.
Second gotcha: once offline conversions flow back, Smart Bidding optimizes to whatever ad-group split you gave it. A single "Plumbing" ad group covering every job type can't tell a $120 unblock from a $4k boiler install, so it bids toward volume, not value. Splitting ad groups by job type/intent before turning offline conversions on changes which leads you get more of.
I'm from AdeptAds — we build that ad-group split up front. Free brief tool if useful: adeptads.ai/tools/google-ads-campaign-brief