PostHog conversion tracking: what I’d measure first
A small event model and two views for tracking website enquiries in PostHog, with checks for errors, duplicates and lead quality.
Before giving every click, field interaction and scroll depth an event name, I'd ask what we want to learn. The events become useful when they show people making progress.
The setup below follows a service or product marketing website from landing page to qualified enquiry. It keeps enough context to investigate a problem without rebuilding the tracking each month.
Start with one customer journey
Choose the outcome that matters. You will get a small event model with stable names, clear triggers and useful properties.
- 01
service viewedA relevant service page is viewed
Properties: service, landing_page, source_group
- 02
contact clickedA visitor opens the enquiry route
Properties: service, cta_label, page
- 03
contact form startedThe first field receives focus
Properties: service, form_version
- 04
contact form submittedThe server confirms delivery
Properties: service, landing_page, source_group
- 05
lead qualifiedThe CRM records a useful opportunity
Properties: service, landing_page, source_group
The rule
Track a few meaningful actions, keep their context stable and check them after each release. Connect the funnel to a business result.
Start with one journey
I'd start by writing down one journey in plain English. For a consultancy, it could be service page, contact start, then qualified enquiry. For software, it could be landing page, sign-up, then the first useful action. Once those steps are clear, you can decide which events you need.
- A relevant visitor arrives on a page.
- They show intent by opening the contact route or booking flow.
- They start the form.
- They submit successfully.
- The lead is accepted as a useful opportunity.
PostHog can measure the first four steps in the browser or app. Getting to the fifth usually means bringing in CRM or server-side data. Without that connection, a better form conversion rate can hide worsening lead quality.
A small set of events
| Event | Trigger | Useful properties | Question it answers |
|---|---|---|---|
contact clicked | A contact or booking route is opened | page, destination, CTA label | Which pages create serious next-step behaviour? |
contact form started | The first field receives focus | page, form version | Do people who show intent begin the form? |
contact form submitted | The server confirms a successful submission | service, landing page, source group | Which journeys produce enquiries? |
contact form errored | Validation or delivery fails | error type, form version | Where is the journey breaking? |
lead qualified | The CRM accepts the lead as qualified | service, source group, landing page | Which website activity contributes to useful pipeline? |
Name events for what people are doing
With button clicked, you know an interface action happened. With contact form started, you know what the person was trying to do. That meaning can survive a redesign and make the dashboard easier for others to read. PostHog recommends an object-and-verb naming pattern, so I'd choose a pattern and use it consistently.
Stable property names and a small set of values make the tracking easier to keep consistent. For example, website-development gives you a controlled service value without depending on the button wording. Form messages, email addresses and other personal information should stay out of behavioural analytics.
Keep the first-touch context
Someone may read several pages before getting in touch. Keeping the session's first landing path, a cleaned referrer and explicit UTM values lets you attach that source to the result. Add them to the successful enquiry event and the contact notification.
The whole query string may contain personal or accidental data. You only need the fields you're expecting: source, medium, campaign, content and term.
Two views to start with
Journey funnel
The funnel follows landing or service page, contact intent, form start and successful submission. You can break it down by page group, device and source group. A considered purchase needs a conversion window that reflects that, rather than treating it like an instant checkout.
Quality table
Alongside that, compare submitted enquiries with qualified leads by landing page and source. It helps you see when a conversion increase is just bringing more unsuitable enquiries.
Checks before and after release
- Confirm every event fires once on the intended action.
- Check that a failed submission never fires the success event.
- Verify property names and values in a test environment.
- Check mobile, keyboard and embedded booking journeys.
- Exclude internal and staging traffic from reporting.
- Confirm no personal data enters event properties or recordings.
- Annotate the release so changes in the funnel have context.
- Retest the journey after form, CRM or consent changes.
What to investigate first
If people open contact but don't start the form, look at what the page promises and what gets in their way. If they start but can't submit, check validation, mobile behaviour and delivery errors. And if enquiries rise without qualified leads, revisit targeting and the sales handoff. The funnel gives you somewhere to start investigating.
The tracking sits alongside watching people use the site and speaking to customers. You still need judgement about what's worth building.
Official references
- PostHog: capturing events and event properties
- PostHog: building and analysing funnels
- PostHog: session replay documentation
Frequently asked questions
Which conversion events should a website track?
Track progress that matters to the business, such as a successful form submission or accepted booking. Define the trigger, allowed properties and destination before adding every possible click.
Is clicking a submit button a completed conversion?
No. Validation or the request can fail afterwards. Record completion when the intended success condition is met. Check that duplicate submissions and repeated callbacks don't inflate the count.
How do I check that conversion tracking works?
You can check it by running the whole journey in a test session and comparing the event sequence with the destination record. Validation errors and retries need testing too. Keep a record of the consent behaviour and which properties must never be collected.

.jpg)
