The short answer: you get 30 key events per property in Google Analytics 4, and most businesses need five or six of them. Everything else is either measured for you without lifting a finger, or it will never change a decision you make.

This guide is for the owner of a shop, a services firm or a clinic who installed GA4 (or had someone install it), opened the dashboard, found dozens of reports and had no idea which number to act on. We will not walk through the interface screen by screen. We will start from the other end: what decision are you going to make this month, and which event makes that decision possible? Every figure and rule below comes from Google's own documentation, accessed on 20 September 2026.

Start from the decision, not the report

Measurement that never changes your behaviour is a cost with no return. Before you ask a developer to set anything up, write down the three or four decisions you genuinely make each quarter, then ask which number settles each one.

DecisionThe question it answersWhat has to be measured
Kill a campaign or keep funding itHow many leads or orders this channel produced, not how many visitsA key event at the end of the journey (purchase or generate_lead) with a monetary value
Rewrite or redesign a pageExactly where visitors stop inside the journeyThe intermediate events (view_item, begin_checkout)
Increase a channel's budgetWhether the channel brings people who finish, or people who leave quicklyThe same key event, split by traffic source
Fix a product or a serviceHow many completed orders get cancelled or returnedThe refund event

Notice how short the last column is. Four major decisions need four to six events in practice. That is your list. Anything else is a later addition, made when a question comes up that your current setup cannot answer.

Thirty: the ceiling that governs every choice

Google's configuration limits page sets per-property caps. The ones that matter here:

  • 30 key events per property. You can archive an old one to free a slot, but thirty is what you have at any moment.
  • 50 event-scoped custom dimensions, and 25 user-scoped ones.
  • 100 audiences and 50 saved comparisons.

Meanwhile, the event collection limits say something that contradicts a lot of published advice: there is no limit on the number of distinctly named events for web data streams. The 500 figure you keep reading about applies to app data streams, counted per app user. Automatically collected events and enhanced measurement events do not count toward these limits either.

The practical conclusion: collecting events is cheap, marking them as key events is expensive. Thirty is the real budget, and every event you flag without a reason takes a seat from one you will need in six months.

What is already measured before you pay anyone

Before you pay for "tracking setup", find out what already works. The events below come from enhanced measurement and are switched on in your data stream settings without a single line of code:

EventExactly when it fires
page_viewOn every page load or browser history change. Collected automatically and cannot be switched off
scrollThe first time a visitor reaches 90% vertical depth of the page
click (outbound)When a visitor clicks a link that leads away from your domain to another website, recording the link's domain and URL
view_search_resultsWhen one of five query parameters appears in the URL: q, s, search, query or keyword
file_downloadOn a click to a file with a recognised extension such as pdf, docx, xlsx, zip or mp4
video_start, video_progress, video_completeFor embedded YouTube videos with JS API support, with progress logged at 10%, 25%, 50% and 75%
form_start, form_submitFirst interaction with a form in a session, then its submission

Two things deserve attention before you build a decision on these events.

First, form parameters do not appear in your reports unless you create custom dimensions for them. You will know that thirty people submitted a form, but not which form they submitted, unless form_id or form_name is registered as a dimension.

Second, the parameters of form_start and form_submit are read from the attributes of the <form> element on the page itself: its id, name, destination and submit-button text. If your form is built in a way that never goes through a conventional <form> submission, confirm in DebugView that the event actually arrives before you mark it as a key event. The documented alternative is simpler: create a new event from page_view conditioned on your thank-you page URL, name it thank_you, and mark that as the key event. No code, and it measures what you actually care about: the people who reached the end of the form.

A warning attached to the same method in the documentation: do not modify the page_view event itself, because it will stop collecting pageview data for the rest of your site.

A key event is not a conversion

This is the point that confuses most readers, because both terms live side by side in the interface and they mean different things.

After Google unified the definitions across Analytics and Google Ads, a key event became the event that measures an action important to your business, whose data you use inside Analytics to understand behaviour and improve the site. A conversion is created from a key event so you can judge ad performance and drive bidding on it, and its count is unified across both platforms. The path, as Google's own comparison page puts it: event → key event → conversion.

Three practical consequences:

  1. Creating a conversion requires a linked Google Ads account. If you are not advertising, key events are all you need.
  2. Google Ads conversions do not appear in standard Analytics reports; they live in the Advertising section. If you looked for them in the acquisition report and came up empty, that is why, not a broken setup.
  3. If you create a conversion from an event that is not yet a key event, that event is automatically marked as a key event, quietly consuming one of your thirty slots.

The short list by business type

Google's recommended events are not sent automatically, because they need context the browser does not have: the order value, its ID, what was in it. In other words they need work from a developer or from your store platform. These lists cover most businesses.

Online store

EventWhy it earns a slot
purchaseThe number every channel is judged by. Sent with value, currency and the items array
begin_checkoutThe gap between it and purchase is your checkout leak, and the fastest thing to fix
add_to_cartSeparates "did not like the product" from "got stuck at payment"
refundEssential in a cash-on-delivery market: purchase fires the moment the order is placed on the site, collection happens later, and a return is a separate event you have to send or your revenue stays inflated
view_itemFor comparing products, if your catalogue is large

The items array accepts up to 200 items in a single event, and currency is written in ISO 4217 form such as EGP, SAR or AED.

Services firm, clinic or professional office

EventWhy it earns a slot
generate_leadA form or information request submitted: the start of the journey
qualify_leadThe lead that turned out to be a real fit
close_convert_leadThe one who became a paying customer
thank_you or an equivalentIf your form does not fire form_submit reliably

App or subscription platform

sign_up for account creation, login to measure return visits, and purchase for the paid subscription. Three events cover most first-year decisions.

When the sale closes on WhatsApp or by phone

This is the normal case for most businesses in Egypt and the Gulf, and it is exactly what guides written for other markets leave out. The website does not sell; it starts a conversation, and the deal closes in a WhatsApp thread, a phone call or a visit to the branch.

Planning to build or scale a digital project?

Snaabble provides a tailored technical assessment to define the right stack & exact budget.

Start with the WhatsApp click. If the button on your site is an ordinary link to an external domain, the outbound click event already captures it and records the link domain. You do not need a developer: create a new event from the click event, conditioned on that link domain, give it a clear name and mark it as a key event. Check the Realtime report first to confirm the event arrives with the right domain.

The phone tap is a different case. The documentation defines an outbound click as a link that "leads away from the current domain and to another website", and says nothing about tel: links. Do not assume they are measured. Send a dedicated event for them and confirm it arrives in DebugView before you build any decision on it.

The rest of the journey has to be sent explicitly. Google publishes recommended events for the lead-generation funnel, designed specifically for cases where conversions happen offline: generate_lead, then qualify_lead, then working_lead, then close_convert_lead, alongside disqualify_lead and close_unconvert_lead for the ones who drop out. Sending these populates the lead acquisition report, which shows new, qualified and converted leads broken down by channel.

This is where the real value shows up. The channel that brings the most form submissions is not necessarily the channel that brings the most paying customers. Without qualify_lead and close_convert_lead that difference never appears in your reports, so you raise the budget on the wrong channel while believing it is the best one.

How does the news of a closed deal travel from your internal system into Analytics? Through Data Import, which explicitly accepts events that were not captured in real time, including ones from sources with no internet connection. The same feature imports campaign data from non-Google ad networks (clicks, cost and impressions), which is the documented way to bring Facebook or TikTok spend into the picture. The ceiling is 120 uploads per property per day, with each import source up to 1 GB.

One distinction worth knowing: user and event data are joined at collection and processing time, while campaign and item data are joined at query time, which means deleting the file takes the join away with it.

The numbers that do not deserve a minute of your time

The Realtime report as a performance indicator

Data processing can take 24 to 48 hours, and your reported numbers may change during that window. For standard properties, intraday data arrives within 2 to 6 hours and complete daily data within 12 hours. Judging a campaign you launched in the morning by the midday numbers is judging data that is incomplete by design.

Bounce rate as a quality score for a page

The GA4 definition is purely mechanical: an engaged session is one that lasts longer than 10 seconds, or includes a key event, or has two or more pageviews. Bounce rate is simply the inverse of engagement rate. A page that answers the visitor's question in eight seconds, after which they leave satisfied, counts as a bounce. Use it to compare traffic channels, not to grade your pages. Note also that first_visit and session_start are excluded from the engaged-session calculation even if you mark them as key events.

A custom dimension for everything

Any dimension with more than 500 values is considered high-cardinality, and raises the chance that your report groups the less common values under an (other) row. If you created a dimension for the order number or the user identifier, you built that problem yourself; the documentation points explicitly to the User-ID feature instead of a custom dimension that identifies each user.

Demographic reports on thin traffic

Data thresholds are system-defined and cannot be adjusted. They apply to demographic data and search terms to prevent anyone inferring an individual's identity. If you see empty rows, the usual cause is too few users in the date range you picked, and widening the range solves part of it.

Comparing the GA4 number to the ad platform's number

The two platforms measure with different models. GA4 offers three attribution models: data-driven, paid and organic last click, and Google paid channels last click. The four older models (first click, linear, time decay and position-based) were retired in November 2023. All of them exclude direct visits from receiving credit unless the whole path is direct. The gap between the two numbers is expected; the sound decision is to pick one source of truth and track it over time.

Visits from you and your team

Three or four people opening the site daily is enough to distort the numbers of a small business. Data filters exclude developer traffic and internal traffic by IP address. Create them early, because they take effect from the moment of creation forward and never touch historical data, and the data they exclude is never processed and never becomes available again.

From the number to the decision: three readings are enough

Once the events settle, you need no more than three monthly readings.

Start by looking for a channel that brings traffic but no key events. Open the traffic acquisition report and add the key events column. If a channel sends a reasonable number of visits and produces one key event or none, the problem is either the targeting or the page the traffic lands on. Begin with the page, because it is cheaper and faster, and review how a landing page is built to convert before you kill the campaign.

Then compare each stage with the one after it. A hypothetical example for a store: 1,000 add_to_cart events in a month, 420 begin_checkout, and 96 purchase. The first gap is largely normal; the second means more than three quarters of the people who started paying never finished, which is reason enough to review the checkout steps themselves before spending another pound on ads. Practical starting points are in conversion rate optimisation for online stores.

Finally, put cost next to result for each channel. Key events split by channel give you the numerator; the cost comes from a linked Google Ads account or from importing campaign data from other platforms. The division is your customer acquisition cost, and the correct way to calculate it, including the salaries and subscriptions that belong in it, is covered in calculating customer acquisition cost. Without that link, GA4 numbers stay behavioural indicators rather than a financial decision tool.

Five checks before you trust the number

  1. Attach a monetary value to your key events. The value and currency parameters make an event comparable to its cost. If the currency is missing or invalid, the event is still recorded with the correct count, but it is not sent to Google Ads.
  2. Check the length of the event name: the limit is 40 characters. A longer name will not be reported as a key event, because the suffix Analytics appends has nowhere to go.
  3. Set your data retention. The options are 2 months or 14 months. The setting affects explorations and funnel reports, not aggregated standard reports, and increasing it applies to data already collected and not yet deleted. Change it today rather than a year from now.
  4. Review the counting method. "Once per event" counts every time the event fires; "once per session" counts it once no matter how often it repeats in that session. Five purchases in one session are five under the first and one under the second. Key events inherited from Universal Analytics goals default to once per session, and changing the setting applies to future data only.
  5. Verify every event in DebugView before relying on it. An event you have not watched arrive, in DebugView or the Realtime report, is an assumption rather than a measurement.

Executive summary

Pick three to six events that mark the end of a real journey in your business, attach a monetary value to them, feed the closing news back from your internal system if the sale closes off the website, and exclude your own team's visits. After that, read three numbers a month instead of thirty. The rest of GA4 becomes useful when a specific question comes up that you cannot answer, and not before.

If your site or store is not sending the events your decisions depend on today, or the closing happens in a system that does not talk to your measurement tools, send your idea to the Snaabble team. You will get an initial plan back, with an estimate of time and cost, within a single working day, at no cost and with nothing owed.

Frequently asked questions

Do I need Google Tag Manager to set up key events?

Not always. Enhanced measurement events are enabled directly in your data stream settings, and you can create a new event from an existing one inside the Analytics interface, conditioned on a page URL or on event parameters, then mark it as a key event. You need code or a tag manager when you want to send data the browser does not know, such as the order value, its ID and its contents.

How many key events should I set up at the start?

Begin with one event that marks the end of the journey in your business (purchase or generate_lead), and add one or two for the stage before it. The ceiling is thirty per property, but the useful number in the first year rarely exceeds six. Add a new event when a question comes up that your current setup cannot answer.

Why do GA4 numbers differ from my ad platform's numbers?

Because each platform credits the conversion with a different model. GA4 excludes direct visits from receiving credit unless the entire path is direct, offers only three models after the four older ones were retired in November 2023, and gives each one an adjustable lookback window. The gap is expected; what matters is picking one reference and sticking to it.

Why do yesterday's numbers change when I open the report today?

Because processing can take 24 to 48 hours, and numbers move during that window. Intraday data reaches standard properties in 2 to 6 hours, and complete daily data within 12 hours. Read any day's numbers two days later.

Does GA4 measure WhatsApp button clicks automatically?

If the button is an ordinary link to an external domain, the outbound click event in enhanced measurement captures it and records the link domain, and you can build a key event on top of it without code. The tel: links are a different matter: the documentation does not list them among outbound clicks, so do not assume they are measured and verify in DebugView yourself.

Sources

All references are from the Google Analytics Help Center and Google for Developers, accessed on 20 September 2026.