A session in Google Analytics 4 represents a group of user interactions that occur within a continuous timeframe. It begins the first time a user lands on your site or opens your app and continues until they've been inactive for 30 minutes. If they return after that window, GA4 counts it as a new session. GA4 handles sessions differently than Universal Analytics in three key ways. First, sessions don't automatically end at midnight—a user browsing from 11:45 PM to 12:15 AM counts as one session, not two. Second, campaign parameters (UTM tags) don't restart sessions mid-visit anymore, which means switching from organic to paid mid-browse doesn't artificially inflate your session count. Third, GA4 uses an event-based model where the session_start event fires automatically, making sessions a derivative metric rather than the foundation. You can adjust the session timeout window in GA4's data stream settings, ranging from 5 minutes to 7 hours and 55 minutes. Most sites stick with 30 minutes because it balances accuracy with how people actually browse. E-commerce sites sometimes extend it to 45-60 minutes to capture longer research sessions. News sites might shorten it to 15-20 minutes since users often dip in and out quickly. The practical difference matters for reporting. When Ottawa SEO audits GA4 implementations for clients, we see session counts drop 10-25% compared to what they saw in Universal Analytics, mostly because of the midnight boundary change. This isn't data loss—it's more accurate counting. You'll also notice engaged sessions (sessions lasting 10+ seconds, having a conversion, or triggering 2+ page views) become your real quality metric instead of raw session volume. One gotcha: if a user keeps a tab open but doesn't interact for 30 minutes, then clicks something, that click starts a fresh session even though they never left. Server-side activity like background syncs doesn't extend sessions either—only documented user interactions count.