The pattern, whatever the tools: form submissions POST into the CRM as leads (native integrations or Zapier-class connectors handle almost any pairing in an afternoon), carrying hidden fields with the attribution. UTM parameters and landing path captured from the URL and passed through.
That hidden-field step is the one that makes reporting possible later: a lead stamped 'google / cpc / spring-campaign' at birth can be traced to revenue forever; enriching it after the fact is archaeology. Our own forms carry path-plus-query into the lead record for exactly this reason.
Close the loop monthly: export closed jobs from the CRM, group by original source, divide into that source's spend. That one spreadsheet IS marketing measurement; everything fancier is refinement.