Store the source together with the lead
Pass the agreed UTM tags from Google Ads and social platforms, along with a technical ID for each inquiry. Don't rely on a sales rep's memory. If a customer comes back, decide how their earlier history is kept and what counts as a new inquiry.
Never put contact details in public URLs or in general analytics events. To link systems, use proper access mechanisms and the smallest set of fields you actually need.

Agree on outcome statuses
The team has to define a qualified lead, a proposal, a sale and a loss the same way. Without that, automatic data transfer only spreads different interpretations faster. Flag duplicates and technical tests separately.
Account for the length of your sales cycle. New inquiries haven't had as much time to close as older ones. Compare groups that have been observed long enough, especially for complex services.

Test the connection by hand first
Take a few controlled inquiries and follow their path into the CRM. Check the source, a repeat contact, status changes and that nothing is duplicated. Only then automate the report or send results back to the ad platforms.
Once the connection has been checked by hand, you can judge channels by deals instead of by cost per form. That is what a lead generation system means: the page, the ads and lead handling in one picture. Sales automation then simply keeps that link from breaking.

