How to Track Website and WhatsApp Enquiries to Sales
Short answer: give every enquiry one row in a table you own, with the source, the page, the time, who handled it and the outcome. Track the form submission and the WhatsApp click as GA4 key events so you know which pages and channels produce enquiries, then update the row by hand or by integration when the lead is qualified, quoted and won. Five numbers a month tell you whether the website is paying for itself.
Platform facts below are from Google's and WhatsApp's own documentation, checked 18 October 2026.
What should you record on every enquiry?
Most businesses know their monthly enquiry count and nothing else. The count cannot tell you which page to improve or which channel to stop paying for. Each enquiry needs these fields:
- Timestamp. Date and time received, which also gives response time once the reply is logged.
- Channel. Form, WhatsApp, phone, email, walk-in.
- Page. The URL the visitor was on when they submitted or clicked.
- Source. Organic search, Google Ads, Meta, referral, direct, or a named campaign from the URL parameters.
- Request. What they asked for, in their words. Keep the original message.
- Owner. The staff member who replied.
- Status. New, replied, qualified, quoted, won, lost, and the date of each change.
- Value. The quote amount, and the invoice amount if won.
- Consent text. The exact wording shown beside the form, because PDPA duties follow the data.
The table can be a spreadsheet for the first 50 enquiries a month. Past that, or when more than one person replies, it needs a database where each row has a history. Where that record should live and why is in own your website leads.
How do you track a form submission?
The event must fire on the confirmed submission, not on the button click and not on page load, or you count attempts and errors as enquiries.
- On success, the form either loads a thank-you page or returns a confirmation in the page. Either one is a trigger.
- In Google Tag Manager, create a trigger for the thank-you page view, or a custom event the site pushes on success.
- Send a GA4 event with a fixed name, for example generate_lead, and a parameter for the form name and the page.
- In GA4, mark that event as a key event. Google's steps are on the key events page. A standard property can have up to 30 key events.
- Add hidden fields to the form that capture the page URL and the campaign parameters, and write them into the enquiry row along with the message.
Step 5 is the one most sites skip. GA4 tells you how many forms were submitted from which page. The hidden fields tell you which specific enquiry came from which page, and that is what links marketing to a won deal.
GA4's enhanced measurement can log a form_submit event without setup, but it does not fire on every form implementation and does not know whether the submission succeeded. Use your own event.
How do you track a WhatsApp click and the conversation after it?
A WhatsApp button leaves the website. Two separate steps cover the click and the chat.
The click. WhatsApp's click to chat link format is wa.me followed by the number, with an optional text parameter for a pre-filled message. In Google Tag Manager, use a click trigger of type Just Links with the condition Click URL contains wa.me. Send a GA4 event, for example whatsapp_click, with the page as a parameter, and mark it as a key event.
The conversation. The click event cannot see whether the visitor sent a message. Two methods close the gap:
- Pre-fill the message with the page name: "Hi, I am asking about [service] from your [page] page." The first line of every chat then states its origin, and the staff member logging it has the page without asking.
- Use a different number or a different pre-filled code per campaign if you run ads, so the chat itself carries the source.
Each WhatsApp enquiry is then logged as a row in the same table as the form enquiries, with channel set to WhatsApp. With the WhatsApp Business API, the first inbound message can create the row automatically. Without it, the person who replies logs it, which takes under a minute per enquiry.
Phone calls use the same pattern: a Just Links trigger on Click URL contains tel: for the click, and a manual row for the call.
How do you mark qualified and won in one table?
The enquiry table needs one status column with fixed values and a date for each change. The definitions matter more than the tool:
- Qualified. The enquiry is from a real buyer, in your service area, for something you sell, with a budget in range. One person decides, using a written definition.
- Quoted. A price was sent, with the amount recorded.
- Won. The customer accepted, with the invoice value.
- Lost. Closed with one of 5 reasons: price, timing, went elsewhere, no response, not a fit.
Rules that keep the table honest:
- Status changes are recorded on the day they happen, by the person who handled the enquiry.
- No enquiry sits in New for more than 1 working day. Response time is a column, not a guess.
- Lost reasons are chosen from the fixed list, not typed free-form.
- Won value is the invoice, not the quote.
Google Ads and Meta can receive won deals as offline conversions, matched by the click ID or hashed email stored in the row. That step improves ad targeting, but it is optional. The table is the record either way.
What are the 5 numbers in a monthly report?
The monthly report is one table, split by source (organic, paid, direct, referral, WhatsApp-only) and by page:
| Number | How it is calculated | What it tells you |
|---|---|---|
| Enquiries | Count of rows received in the month | Whether traffic produces contact |
| Qualified enquiries | Rows marked qualified | Whether the right people are contacting you |
| Quotes sent | Rows marked quoted, with total quote value | Sales follow-through |
| Won | Rows marked won, with invoice value | Revenue from the website |
| Response time | Median hours from received to first reply | Whether enquiries are lost by delay |
From these, two derived figures: cost per qualified enquiry (ad spend plus agency fees, divided by qualified rows) and win rate (won divided by quoted). A page that produces many enquiries and few qualified ones has a copy problem. A source with a high win rate and low volume deserves more budget.
GA4 keeps event data for 2 or 14 months on a standard property. Your table keeps it as long as you choose, within your PDPA retention period. If traffic is high but the enquiry count is low, the problem is on the page, not in the tracking; see website traffic but no enquiries.
Setup checklist
- One enquiry table with the 9 fields above, owned by the business, not by an agency.
- Form success event in GA4, marked as a key event, with page and form name as parameters.
- Hidden fields on the form capturing page URL and campaign parameters into the row.
- WhatsApp link with a pre-filled message naming the page.
- GTM Just Links trigger on wa.me and tel:, each sending a key event.
- Campaign parameters on every ad and email link, built with Google's Campaign URL Builder.
- A written definition of qualified, and 5 fixed lost reasons.
- Status and date updated the day they change.
- Monthly report with the 5 numbers by source and page.
- Retention period set and deletion run on schedule.
A sales AI agent can draft the first reply from the same row and keep the status current, which removes the manual logging step. See sales agents.
What cense does
cense builds enquiry forms in-house so every lead lands in the client's own database with the source page and consent recorded, and sets up GA4 key events for forms and WhatsApp clicks as part of the build. The sales agent drafts every reply for approval from that record. See website infrastructure.
How do I track a WhatsApp click from my website?+
Add a Google Tag Manager click trigger for links containing wa.me, send a GA4 event, and mark it as a key event. Pre-fill the WhatsApp message with the page name so the chat itself records where it came from.
What should I record for every enquiry?+
Date and time, channel (form, WhatsApp, call), the page the visitor was on, the traffic source, what they asked, who replied, whether it was qualified, and the outcome with a value if won.
Does GA4 track form submissions by default?+
GA4 can log a form_submit event through enhanced measurement, but it fires on some forms only and misses errors. Fire your own event on the confirmed submission and mark it as a key event.
How long does GA4 keep enquiry data?+
Event-level data is kept for 2 or 14 months on a standard property. That is why the enquiry record belongs in your own database or sheet, not in analytics.
What are the 5 numbers to report each month?+
Enquiries, qualified enquiries, quotes sent, won deals and won value, each split by source. From those you get cost per qualified enquiry and win rate.



