Sessions and pageviews became events and parameters
Universal Analytics thought in sessions containing pageviews. GA4 thinks in events, full stop. A page view is an event named page_view. A scroll is scroll. A form submission is whatever you name it. Each carries parameters — the page path, the button label, the value in rupees.
This is genuinely better for the way people actually behave now, where a visit spans an app, a mobile browser and a desktop. It's also why every report looks unfamiliar: you're no longer counting visits to pages, you're counting things that happened.
Sessions still exist, defined as activity ending after 30 minutes of inactivity. Unlike the old tool, GA4 doesn't start a new session at midnight or when the campaign source changes — so your session counts will not match your old ones, and shouldn't.
What broke in the migration, honestly
Standard Universal Analytics properties stopped processing data on 1 July 2023 and the historical data was deleted from July 2024. This was not a gentle upgrade and pretending otherwise wastes people's time.
- Your history is gone unless somebody exported it to Sheets or BigQuery before the deletion. There's no recovery path.
- Goals became key events, and Google renamed conversions to key events in 2024 to stop the confusion with Google Ads conversions. Same idea, different words, all your old documentation is wrong.
- Bounce rate changed meaning. GA4's version is the inverse of engagement rate — see bounce rate for why the comparison across the migration is invalid.
- Views are gone. The filtered-view pattern everyone relied on doesn't exist; you get data streams and, on the paid tier, subproperties.
- BigQuery export is free, which it wasn't before. This is the one unambiguous upgrade, and almost nobody switches it on.
The six events a lead-gen site should be firing today
Out of the box, GA4 gives you page views and a few automatic events. Useful for nothing. This is the minimum set for an Indian service or D2C site, and all six are Tag Manager triggers rather than developer work.
- `generate_lead` — form submitted, fired on the actual success state rather than the button click. Button clicks count failed validations as leads.
- `click_whatsapp` — any click on a
wa.meorapi.whatsapp.comlink. On most Indian sites this outnumbers form fills. - `click_phone` — any
tel:link click. Mobile-heavy traffic makes this the largest conversion path on local service sites. - `view_pricing` — a page view on your pricing or packages page, as a strong intent signal well before anyone enquires.
- `file_download` — brochures, catalogues, spec sheets, price lists. Common in manufacturing and B2B.
- `book_meeting` — the Calendly or booking-tool completion, tracked properly rather than assumed.
Linking Search Console, and the gotchas that waste an afternoon
In Admin, link your Google Search Console property, then publish the Search Console reports from the Library — the second step is the one everyone forgets, which is why the reports appear to be missing. Once linked you can see landing pages next to the queries that produced them, which neither tool shows alone. The differences between them are covered in GA4 versus Search Console.
Four things reliably cost people an afternoon before they realise it's normal behaviour rather than a broken setup.
- Data thresholds. With Google signals enabled, GA4 hides rows that could identify an individual — you'll see a small orange icon and lower totals. Turn signals off if demographic data isn't worth it to you.
- Processing delay. Standard properties can take 24 to 48 hours to finalise. Realtime shows now; the rest doesn't.
- `(not set)` — a parameter that didn't arrive. Usually a tag firing before the value exists.
- Cardinality limits. Very high-variety dimensions get bundled into an
(other)row. Custom dimensions on unique IDs are the usual culprit.