19.06.2026
End-to-end website analytics: from inquiry to sale
End-to-End Website Analytics connects the inquiry source, website events and the outcome of handling the inquiry in the CRM. Its purpose is not to show more “conversions”, but to distinguish interest from an actual inquiry, a qualified lead and a paid order.
If a report shows inquiries but the sales representative cannot see them, first check exactly what analytics is counting. Clicking a button, opening a messaging app, and successfully saving a form are different events. Below is a practical plan for website owners, marketers, and developers: what to agree on, how to test it, and what data is needed for an estimate.

What Exactly to Measure
Start with an agreed definition of a result. For a service business, this may be an inquiry about a service; a store also needs confirmed orders and payments. Do not combine them into a single total without explanation.
A click and an inquiry are not the same
- Phone number click: the visitor clicked a call link. This does not confirm a connection or conversation.
- Opening Telegram or another messenger: the person opened a communication channel. Whether a message was actually sent requires separate confirmation.
- Form inquiry: the server accepted the data and reliably saved the inquiry. If the CRM is temporarily unavailable, the inquiry should remain in local storage or a queue, not disappear.
- Qualified lead: the sales representative has checked that the inquiry meets the agreed criteria, such as the required service and geographic coverage.
- Sale: the business recorded the agreed final outcome. An order created, a contract signed, and a payment received can be different stages.
GA4 provides a recommended event for a captured lead generate_lead, and later stages include, among other things, qualify_lead and close_convert_lead. They need configuration and do not appear automatically after installing a tracking counter. Their names and purposes are listed in Google's event reference.
How to connect the website, traffic source, and CRM
Save the Source Before Form Submission
For external advertising links, agree on consistent values utm_source, utm_medium and utm_campaign. For example, inconsistent capitalization or names for the same campaign make aggregation harder. Google describes these parameters in UTM tagging instructions. If a channel uses auto-tagging, separately check its compatibility with passing the source to the CRM.
Do not add advertising UTM parameters to internal links on your own website. They are intended to identify external campaigns. Organic search and direct visits should not be artificially labeled as an advertising campaign; the source may be determined from available referral data or remain unknown.
Every Inquiry Must Have Its Own Identifier
The website creates an internal inquiry ID and sends it to the CRM together with the data needed for processing. Repeated delivery of the same inquiry should update the existing record, not create a duplicate. Do not use email addresses or phone numbers as identifiers in standard analytics parameters.
Minimum CRM data: ID, time received, inquiry page and form, source according to the selected rule, assignee, status, and processing outcome. Contact details remain in the systems where they are needed to work with the customer. We discuss technical delivery and retries in more detail in the article on website CRM integration.
Agree on a rule for which source receives credit for the result
A customer may first find you through search, then return through an ad and submit an inquiry from another device. Decide whether your management report uses the first known contact, the last available referral, or separate columns for both. Do not silently overwrite the original source.
It is impossible to reconstruct every journey in full: measurement consent, blockers, device switching, and unavailable identifiers limit the data. GA4, ad accounts, and CRMs may also use different attribution rules, time zones, and sale attribution dates. Discrepancies need to be explained, not hidden.
How to check that a conversion is real
Give the developer not just the event name but also its trigger condition. For a form, this is confirmation that the server has successfully accepted the inquiry. Clicking “Submit”, failed validation, or opening a thank-you page through a direct link should not count as a new lead.
An example test scenario, not client statistics: the tester submits the form, sees the confirmation, and finds one record in the CRM and one expected event in the test session. Refreshing the page does not create another inquiry. They then repeat the test with a required field left empty: no inquiry or success event is created.
Analytics acceptance checklist
- Successful Form Submission: the inquiry is saved, the assigned person can see it, and the event is sent once.
- Field Error: the visitor receives clear guidance; no successful conversion is counted.
- Server error: there is no false success message; resubmission is safe.
- Double-click and reload: the absence of duplicates in the CRM and analytics has been verified.
- UTM: a test external referral passes the agreed values to the correct inquiry.
- Phone and messenger: clicks are shown separately; they are not labeled as confirmed conversations or sales.
- CRM statuses: the representative can mark a qualified lead, rejection, duplicate, or closed deal.
- Consent: consent and refusal scenarios for optional tracking have been tested; the form works in both cases.
- Devices: the main workflows have been repeated on phones and computers, including error cases.
- Test report: the date, scenario, internal test ID, expected result and actual result are recorded, with no real customer data in screenshots.
To test GA4, use DebugView in a test session. Events may be unavailable there because of privacy settings or lack of consent. A missing event in such a session does not, by itself, prove that the form is broken: check separately whether the inquiry was saved.
Which metrics to compare after setup
First agree on definitions and the time period. A few metrics with transparent formulas are enough for a working report:
- Cost per Inquiry Received: channel advertising spend / number of unique valid inquiries attributed to that channel under the selected rule.
- Cost per qualified lead: the same costs / the number of leads verified by the sales representative.
- Qualified lead rate: qualified leads / valid inquiries. Track spam and technical tests separately.
- Deal Conversion Rate: closed deals / leads in the corresponding group. Compare groups that have had sufficient time to convert into sales.
When there are no inquiries, do not display “zero cost per lead”: the metric cannot yet be calculated. Revenue is not profit. To assess return on investment, you also need fulfillment costs, returns, and agreed accounting rules. Do not declare a channel unprofitable or effective based on just a few clicks.
In services, a sale may close after the advertising period ends. It is useful to track two views: when inquiries were received and when deals were closed. Otherwise, today’s spending can easily be incorrectly compared with sales from older inquiries.
What must not be sent in standard GA4 events
Do not add full names, email addresses, personal phone numbers, customer message text, or other personal identifiers to event names, ordinary parameters, UTM parameters, or page URLs. URLs also reach analytics. This directly concerns Google’s rules on personal data.
CRM and measurement tools serve different purposes and hold different data. Grant access by role and use test records during testing. Measurement configuration must not bypass users' choices about optional tracking.
What determines the setup cost
Installing GA4 and building end-to-end tracking through to a sale are different tasks. The estimate depends on:
- the number of forms, websites, advertising channels, and inquiry workflows;
- CRM and API readiness, availability of statuses and assignees;
- the need to track actual calls, payments, and refunds;
- existing data quality, duplicates, and integration error handling;
- report contents, privacy checks, and post-launch support.
For an estimate, prepare the website URL, a list of forms, the CRM name, advertising channels and a description of what you consider a qualified inquiry. You do not need to send passwords in the initial request. The estimate should separate implementation from recurring third-party service fees.
Where a Business Should Start
Stage one: agree on one primary inquiry type and check its delivery and source. Stage two: establish statuses and responsibilities in the CRM. Stage three: connect sales data and reporting once the basic records are reliable. Having a tracking counter does not replace this process.
In Cool Factory case study describes our work on the website, API and CRM integrations. This is an example of connecting systems technically, not a promise of a specific cost per lead for another business.
You can discuss integrations on the page CRM and Automation, and help with preparing an initial task description comes from AI consultant. To get an estimate for your specific setup, contact Web Alchemy: we will check the current inquiry journey and identify which data is missing for decision-making.
