Setting up Google Analytics 4 properly from the start prevents data gaps, misattributed conversions, and months of remedial work. This checklist walks through the essential configuration steps—from property creation and stream tagging to event tracking, filters, and cross-domain measurement—so your implementation captures clean, actionable data from day one.
Start by creating a GA4 property in your Google Analytics account—distinct from any Universal Analytics property you may still run. Select your reporting time zone and currency; for Canadian businesses these are typically Eastern or Pacific time and CAD. Within the property, add a data stream for your primary web domain. GA4 uses streams instead of views, and each stream represents a platform: web, iOS, Android. The web stream generates a Measurement ID in the format G-XXXXXXXXXX, which you will place in your site's tracking code or tag manager container.
Enable enhanced measurement during stream setup. This auto-captures scrolls, outbound clicks, site search, video engagement, and file downloads without custom code. Review the list and disable any events that create noise for your reporting needs. For example, a content site may want scroll tracking; an e-commerce store may not. The goal is signal, not volume. Also configure your stream's domain settings: if your site uses www and non-www or HTTP and HTTPS variants, make sure your canonical version is reflected and that you exclude internal traffic by IP range or use a testing property for development environments.
You have two deployment paths: hardcode the gtag.js snippet directly into every page template, or manage everything through Google Tag Manager. Tag Manager is strongly recommended for any site that will track custom events, run multiple marketing tags, or require future flexibility without developer commits. If you choose the direct snippet, paste the GA4 configuration code in the head section of every page, replacing the Measurement ID placeholder with your actual stream ID.
For Tag Manager, create a GA4 Configuration tag that fires on all pages, using the Measurement ID from your data stream. This serves as the base tag. Then create additional GA4 Event tags for any custom interactions—form submissions, button clicks, add-to-cart actions—that enhanced measurement does not cover. Use triggers and variables to control when each tag fires and what parameters it sends. Test in Tag Manager's preview mode, checking that the configuration tag loads first and event tags fire in the correct sequence. Common mistakes include duplicate tags firing on the same trigger or missing dataLayer pushes for dynamic content.
GA4 is event-based: every interaction is an event, including page views. Out of the box, enhanced measurement gives you page_view, scroll, click, view_search_results, video_start, video_progress, video_complete, file_download, and several others. Your task is to identify which business outcomes matter and ensure they are tracked as events with clear naming. Use verb-noun pairs like form_submit, demo_request, quote_started, purchase, or trial_signup. Attach event parameters for context: form_name, product_id, value, currency.
Once events flow into GA4, mark your key actions as conversions in the Events report. Navigate to Configure > Events, find the event name, and toggle the slider to designate it a conversion. This makes the event appear in conversion reports and allows you to build audiences and segments around it. For e-commerce, implement the recommended e-commerce events: view_item, add_to_cart, begin_checkout, purchase. Use the exact parameter names Google specifies—items array, transaction_id, value, currency—so your data populates the Monetization reports correctly. Inconsistent naming or missing parameters will break attribution and funnel analysis.
If your user journey spans multiple domains—your main site to a subdomain checkout, or a marketing domain to a separate portal—configure cross-domain measurement so sessions persist across the boundary. In your GA4 Configuration tag settings, add all relevant domains to the list of linked domains. GA4 will append a _gl parameter to outbound links, passing client ID and session data to the receiving domain. Both domains must have the same Measurement ID or linked properties for this to work.
Also add referral exclusions for domains that should not break session attribution. Common examples: payment processors like Stripe, PayPal, Shopify Payments, and Moneris in Canada; third-party login providers; and any subdomain or partner domain that is part of your owned funnel. Without exclusions, a user returning from PayPal to your thank-you page will start a new session with PayPal as the source, overwriting the original campaign attribution. List these domains in Configure > Data Streams > stream settings > Configure tag settings > Show more > List unwanted referrals. This ensures accurate source and medium reporting.
GA4 handles filters differently than Universal Analytics. Instead of view-level filters, you define data filters at the property level under Data Settings > Data Filters. Create an Internal Traffic filter to exclude hits from your office IP addresses, remote team VPNs, and development environments. Tag internal traffic using a custom dimension or the traffic_type parameter, then apply the filter to exclude it from reports. Initially set the filter to Testing so you can verify it works in the DebugView, then activate it to enforce exclusion.
Set your data retention period under Data Settings > Data Retention. The default is two months for event-level data; the maximum is fourteen months. This affects explorations and detailed breakdowns, not standard reports. For Canadian businesses subject to privacy regulations or internal data governance policies, choose a retention window that balances analytical depth with compliance. Also review and configure consent mode if you collect data from users in jurisdictions with strict cookie-consent requirements. Consent mode adjusts tracking behavior based on user consent status, allowing you to model conversions while respecting user preferences.
User properties let you segment visitors by attributes that persist across sessions: subscription tier, account type, region, language preference, or lifecycle stage. Define these properties as custom dimensions in Configure > Custom definitions, then send them via the set command in gtag or as parameters in your Tag Manager configuration. Use them to build audiences for remarketing or to slice reports by cohort.
Create audiences in Configure > Audiences that represent meaningful user segments: converters, high-value visitors, cart abandoners, recent engagers. Audiences populate retroactively from the time of creation, so set them up early. Each audience can be linked to Google Ads or other platforms for activation. Custom dimensions work similarly: define them for event-scoped or item-scoped parameters you plan to report on frequently, like product_category, campaign_id, or page_type. GA4 allows up to 50 custom dimensions and 25 custom metrics per property in the free version, so prioritize the parameters that drive your analysis and avoid creating dimensions for one-off uses.
Before you declare the setup complete, validate every component in GA4's DebugView. Enable debug mode by adding the debug_mode parameter to your configuration tag or by installing the Google Analytics Debugger browser extension. DebugView shows events in real time with full parameter details, letting you confirm that events fire on the correct triggers, parameters pass the right values, and no duplicate or malformed hits occur.
Check that page_view events fire on every navigation, conversions appear when you complete test actions, e-commerce events carry the items array and transaction_id, and cross-domain links append the _gl parameter. Verify that internal traffic is tagged correctly and that referral exclusions prevent session breaks. Use the Realtime report to confirm data flows into the main reporting interface. Common issues at this stage include missing parameters, mismatched Measurement IDs between tag and stream, dataLayer variables not defined before the tag fires, and consent settings blocking tags. Fix these before removing debug mode. Once validated, monitor the first few days of production data for anomalies—sudden traffic spikes from bots, missing conversions, or attribution patterns that contradict known sources.
No. Universal Analytics stopped processing new data in July 2023, but historical data remains accessible in read-only mode for the foreseeable future. Many organizations keep both properties visible during the transition to compare year-over-year trends or reference legacy reports. You cannot send new hits to UA, so all current tracking must go through GA4. Create the GA4 property as a separate entity and migrate your tagging and reporting workflows incrementally.
Enhanced measurement is a set of automatically tracked interactions—scrolls, clicks, searches, video plays, file downloads—that GA4 captures without additional code once you enable it in your data stream settings. Custom events are interactions you define and implement yourself using tags or code, such as form submissions, specific button clicks, or business-specific milestones. Use enhanced measurement for common actions and reserve custom events for interactions unique to your conversion funnel or user experience.
Instrument each significant step as a distinct event: begin_checkout, add_payment_info, add_shipping_info, purchase for e-commerce; form_start, form_step_2, form_submit for lead generation. Use event parameters to pass step names or funnel position. Mark the final completion event—purchase or form_submit—as a conversion in the GA4 interface. You can then build a funnel exploration report to visualize drop-off at each stage and identify friction points.
No. GA4 and Universal Analytics use fundamentally different data models—session-based versus event-based—and there is no automated migration or import path for historical hit data. You can export UA data via the API or BigQuery if you had the 360 version, but that data will not populate GA4 reports. Start collecting GA4 data as early as possible to build historical baselines for year-over-year comparisons.
Use the same Measurement ID only if the sites represent a single user journey and you want sessions and conversions to span both domains, such as a main site and a checkout subdomain. If the sites serve distinct audiences or business units—different brands, separate products, independent campaigns—create separate GA4 properties so each has isolated reporting and does not dilute the other's data. You can roll up multiple properties into a single organization-level view if needed.
Define internal traffic using a data filter based on IP address or a custom traffic_type parameter. In your GA4 Configuration tag, set the traffic_type parameter to internal for requests originating from your office or VPN ranges. Then create a Data Filter in the GA4 interface under Data Settings, set the filter state to Testing initially to verify it catches the right traffic, and activate it once confirmed. This approach lets you see internal hits in DebugView while excluding them from standard reports.