The Traffic Source Challenge in GA4

Any Google Analytics user can answer how many users visited my site from Facebook or Google. Right?

This post is going to highlight how it’s not so simple.

Personal Aside: I fell in love with Google Analytics 10+ years ago. I realized I could answer simple questions quickly and still apply advanced features, and go much deeper. What made it so accessible to me was that no matter how I did my analysis, I would end up with the exact same report/numbers. A simple standard report would show the same data if I used Advanced Segments or BigQuery. I’m sharing this post to help the community understand what’s happening with their reports and suggest improvements to Google.

So how many users visited our site?

Let’s try and answer how many users visited our site from Google Search.

We will review each traffic source report and highlight why it doesn’t fully answer this question. If you are new to GA4, this will be incredibly helpful in understanding how Traffic Sources work in GA4. There are three different traffic reports to choose from, each associated with a different scope/capability.

  • User Acquisition Report (First-Touch User-Scope)

The first report is our user acquisition report. This report shows you what the very first traffic source was for each user that visited your site. It only indicates that first source, so if a user had their first visit from Social and came the next week from Organic, it only will show Social since that’s their first touch.

This report doesn’t answer how many users visited us from Google Search. Instead, it only answers how many users first visited us from Google Search.

  • Traffic Acquisition Report (First-Touch Session-Scope)

Next, we have the default traffic acquisition report. Almost everyone uses this report for their GA4 traffic source reports. It’s also the most misunderstood report.

This report shows you the first traffic source of each individual session.

Many users of Universal Analytics would describe this as the same last non-direct attribution report they used to use. This is only partially right. It’s true that non-direct still applies, meaning if a user comes from Organic and their next visit is Direct, both visits will be reported as Organic (in GA4, Direct never takes credit from another traffic source). What’s different is what happens when multiple traffic sources are present within the same session.

One of the features highlighted the most about GA4’s flexibility is that it fixed an issue in Universal Analytics where new traffic sources would end a current visit and start a new, completely separate visit. GA4 no longer splits sessions, but currently, it causes another challenge, where it only reports the first traffic source of the session. If a user clicks a paid ad and starts their first visit to your site, immediately does some additional product research, and also clicks a Google organic search result, that entire visit is assigned to Google Paid Search, and Google Organic Search won’t get any credit in this report.

This is the core of the challenge I’m trying to highlight. When doing traffic source reports, the traffic acquisition report will always be missing some traffic sources from sessions with two or more different traffic sources within the same session. So this commonly used session-scoped traffic dimension will always miss some traffic from sessions that have multiple touches within the same session.

There is one other oddity to point out. Todd Bullivant @ Wpromote pointed out that in that previous example where the user comes from Paid Search and Organic within the same session, we shared how Organic doesn’t get credit for the session. If the user has a second session that’s direct, Google will assign Organic only to the second session, which wasn’t the true origin. There is no built-in dimension for true direct like Universal Analytics, so you would be unable to figure out this is happening (without BigQuery).

  • Conversions Report (Event/Attribution-Scoped)

If you are more experienced with GA4, this is where you might think our next report will help. GA4’s last report type is our conversions report, which is event/attribution scoped. This is where each individual event is evaluated, and everyone can receive the credit they deserve.

Most people don’t realize that the scope only provides attribution (credit) for users with a conversion.

This attribution-scoped dimension is the cause of much confusion when GA4 users create custom reports. Here is a common exploration report using Default Channel Group (Event/Attribution-Scoped) with ‘Total Users.’

If we were trying to answer how many users who converted came from Search, this report would be great. However, we are trying to answer how many users came from Google Search regardless if they converted or not, and this attribution-event scoped dimension/report won’t do that.

So how many users visited our site?

This can’t be answered fully in the GA4 UI today. The attribution/event-scoped dimensions omit users who have no conversions, and the session-scoped reports miss some traffic from sessions with multiple traffic sources within the same session. Advanced Segments/Audiences aren’t able to help since they use the same dimensions. BigQuery is the only answer right now to help ensure sessions with multiple traffic sources are properly accounted for basic user/session reporting.

I hope Google rolls out more functionality to help. One proposal would be to allow the event-scoped traffic sources to apply to all events, not just events tied to converting paths. I also think we need significantly enhanced tooltips and tutorials to help new users learn how to properly use the different reports/scopes properly.

Audience Triggers & Conversions in GA4

Google Analytics has always supported conversions that are easily defined when a user views a certain page (www.charlesfarina.com/thank-you) or triggers a specific event (event action = video_play).

What if you wanted more complex conversions such as:

  • Content Examples
    • Users who viewed your blog post AND watched over 5 minutes of the video within that post
    • Users who converted AFTER viewing your blog
  • E-Commerce Examples
    • Users who purchased more than $45 dollars in their CURRENT session
    • Users who purchased a banana AND a carrot, but ONLY those who came from your monthly newsletter

Google Analytics 4 now allows you to create all sorts of complex conversions! We do this with the new audience triggers feature. An audience trigger will create and send an event when a user is added to your audience. That event can then be used to create conversions! Remember, we can also create AND modify events from events as well!

How to Use Audience Triggers & Conversions

  1. Go to your audiences report (alternatively you can also create audience from Analysis)

2. Use a template as a quick start or create your audience from scratch (I always start from scratch)

3. Next, create your audience conditions. You have so many powerful options. You can use sequences to enforce order, change the scopes, add include/exclude options, and even scope conditions around the amount of time required (one of my favorite features in GA4)

4. Make sure to name your audience (it will save as untitled audience otherwise). Click into the audience trigger option

5. Specify what event you want to fire each time a user enters your audience. I recommend prefixing them with audience_, so they are easy to find and work with later.

You can also decide whether you want the event to fire each time the user matches your conditions after their initial inclusion. Each audience has a membership duration, which you defined in the last step. If a user in GA4 enters an audience today and then triggers the same conditions again in 2 weeks, the duration is refreshed/extended. The checkbox in this step allows you to decide whether you want to fire an additional event so you track the number of times users entered your audience or how many users (regardless of how many times)

6. Save your audience
7. Wait about an hour or so and then you will see your new audience and event show up in Google Analytics real-time reports

8. You will now see your audience event in your events report and can enable it as a conversion.

There you have it! GA4 offers you the new ability to create conversions from audiences themselves. This allows you to configure all sorts of very advanced conversion logic that was not possible previously. You can even build audiences from multiple audience events!

Modify Events – Google Analytics 4

Filters have been one of the most requested features for Google Analytics 4 (GA4) properties. Google just started to roll out filter components and has other complementary features to improve your data quality. One of these new features is the new “Modify Events.” Modify events allows you to fix tagging issues by renaming or event deleting events and parameters directly within the GA4 interface.

If you prefer video guides, I made a YouTube companion.

How Do Modify Events Work in GA4?

At some point, all of us have experienced the pains of mistagged events, as shown in the image below. Here we can see someone made a mistake (it was me 😂). Instead of having one event for scroll tracking, we have three (scroll_tracking, scroll, and scroll tracking).

Previously, the only option to fix this in GA was to use filters or fix it by updating our tags. While the best solution is still to fix it at the source, there are still situations where we need other options. Maybe your Google Tag Manager developer is out on vacation, or perhaps your issues are within your mobile app streams and an update isn’t possible for a week or so. Obviously, we don’t want to continue to collect mistagged data, so this is where modify events can help save the day!

How to Use Modify Events

We will use the real example above, where I have accidentally created multiple scroll events. This will likely be common in GA4 properties related to introducing the new enhanced/automatic measurement. With automatic measurement, Google automatically added a scroll tracking event for anyone who reaches the 90% threshold on your pages.

Most users will likely want more thresholds than just 90%, so additionally, they will also set up custom scroll tracking. When setting up the custom scroll tracking, you want to be very careful to use the same event_name and event_parameters as the automatic measurement does. If you use anything other than scroll and percent_scrolled, you will have multiple events that are the same thing.

Here is how we fix our multiple versions of the same event:

  1. Start by going into your events report and click “modify event”

2. Click “create”

3. Now, we need to create the event modifications. Start by entering a modification name. Enter something meaningful here, so you can find it later if additional changes are needed.

Next, enter the matching conditions, which determines which event or parameters you want to modify. We want to match the default/automatic scroll tracking event (scroll), and we need to target the misnamed one (scroll tracking). We target the misnamed one by using the matching conditions and using event_name equals scroll tracking.

Now we enter the new name for our event. Here we use the modify parameters section and use the parameter of event_name and a new value of scroll. Click create and we’ve deployed our fix!

4. Optionally, you can also make changes to additional event parameters at the same time. The automatic scroll tracking uses a percent_scrolled parameter, which sends a value of 90 every time a user scrolls to 90% of your page. When I deployed my custom scroll tracking library, I sent values of 10, 25, 50, and 75 but accidentally named the parameter percentage_scrolled instead of percent_scrolled.

We can fix the parameters by going back into our modify event settings and adding additional modifications

The image shows how we renamed the event parameter. There is a lot to unpack on how we did it. To rename percentage_scrolled to percent_scrolled first, we need to create the percent_scrolled parameter and pass the dynamic value using double brackets [[ ]]. Then we delete percentage_scrolled by leaving the new value blank.

With the flexibility provided, there are multiple ways to achieve the same results, either as separate modifications or potentially within a single one, as shown above. You can create up to 50 event modifications, so combining changes where possible may be advantageous for the future. The support center includes other examples of how you can create even more advanced changes.

Real-Time Debugging

As you deploy/test your event modifications, you can see them in real-time if you enable the Google Analytics debugger or are in the preview mode of Google Tag Manager. When you are in the debugging modes, GA4 automatically collects the data in the DebugView report, which is a realtime stream of all the debugging data. You can easily see all the events in the order they are collected and their associated parameters/user properties/other data to see if your changes are working as expected. In this example, we can see all our events are now named scroll (instead of scroll and scroll_tracking)!

I’m really excited about this new feature for event modifications and the related “Create Event” feature. It is important to note that all changes only work moving forward, so it will not fix any of the data that has already been collected (though the new data deletion tool may allow you to delete it). These features now give marketers a way to quickly fix various issues related to event tagging and naming without having to release code updates, which are not always possible.

Creating Custom Conversions in Google Analytics 4

Conversion tracking is one of the biggest updates Google Analytics 4 properties have compared to the Universal Analytics model. Gone are the days of thinking about destination URLs and defining the event category, event action, and event labels. Now we have a brand new model that incorporates automatic conversion tracking, reusable slots, and a new server-side event system for ad-hoc conversions.

Setting Up Conversions in GA4

There are three primary ways conversion are enabled in GA4:

  1. Predefined
  2. Toggling events as conversions
  3. Creating custom events from an existing event

I’ll walk you through each option and show you how each works. If you prefer video guides, I recorded one as well.

1. Predefined Conversions

GA4 properties create a set of predefined conversions automatically. These ensure that every user of Google Analytics always has a set of conversions enabled, solving the long-running issue where GA users would forget to set up conversions. Now, GA4 creates this list of conversions automatically:

  • first_open (App streams)
  • session_start (Web streams)
  • app_store_subscription_convert (App streams)
  • app_store_subscription_renew (App streams)
  • in_app_purchase (App streams)
  • purchase (Web/app streams, requires implementation)

This set of conversions can’t be disabled and are mostly safety nets to ensure everyone has basic conversion tracking enabled. Options 2 and 3 exist to allow you to further define the conversions that matter most.

2. Toggling Events as Conversions

Google Analytics 4 introduced the new event-driven data model, which means we now track everything with events and no longer need to talk about hits. If you head to your events reports you will see you have a new option to easily mark any event name in that report as a conversion.

In the example below, you can see we have an event for file_download, which is one of the new automatic events. If we want to enable file_download as a conversion, we just toggle it on.

Note that this only works if we wanted ALL downloads to be conversions, not a certain download like case study downloads. Additionally, this feature does not allow you to mark visits to a certain page or group of pages as an event. This is why our third option exists!

3. Creating Custom Events from Existing Events

There are many scenarios where you will not want want to use the toggle in option 2. As an example, you may want a conversion for a thank you page, when someone reads your blog pages, or perhaps when someone scrolls halfway through a page. For these, Google has released a brand new feature called “Create Event.”

This create event feature works by using an existing event to create a brand new event that you then mark as a conversion. We need to use this feature because conversions can only be enabled based on event names and not further scoped on their parameters.

Let’s say we wanted to track any visit to our blog as a conversion. GA4 doesn’t have a blog event, but it does have a page_view event that captures the URL of every page using the page_location parameter.

Here is how we would set up a conversion for users who view our blog:

  1. Start by clicking “create event” from the “All events” report.

2. Click “create”

3. Next, decide what your new event name will be and configure the conditions for when to fire this new event. Here we create a new event “blog_view” that is triggered anytime an event with adswerve.com/blog is sent to GA4.

4. To complete the set up, go to the conversions report and click “New conversion event.” You will use the new event name from the previous step and click save.

Success! Now we can create specific conversions from any event parameters we need. I love how real-time everything is, meaning you will start seeing your new events and conversion in the DebugView and Realtime reports as soon as you hit save.

Cross-domain Tracking – Google Analytics 4

Cross-domain tracking has been completely rebuilt for Google Analytics 4 (GA4) properties. Previously, the configuration was done outside of Google Analytics primarily within Google Tag Manager or by editing the hard-coded tags by enabling the linker/autolink settings. Simo has some great guides on a few ways we used to do cross-domain tracking. This guide will cover how to enable cross-domain tracking for GA4.

I’ve also published a video guide for you as well: https://youtu.be/jl8E-yLVvEk

GA4 Cross-Domain Tracking Setup

  1. Ensure you have admin permissions for your GA4 property and click admin->data streams->stream. Note: if you set up your different websites as separate streams, you may need to duplicate your setting in each stream.

2. After selecting your stream, click on “tagging settings.” Note: if you do not see tagging settings it is possible the feature has not yet fully rolled out to you yet. If this is the case, check back in a few days.

3. Click on “configure your domains”

4. Click the ‘Add condition’ button to enter your domains. Note: there is an important note/exception for anyone that also uses Universal Analytics on this step. If you use Universal Analytics you will want to ensure your settings also match.

5. You can enter each domain you want to link as a separate condition or change the match type to regex to do multiples at once. It appears the number of domains you can list is quite generous, as I was able to create over 100 conditions. In this example, I’m trying to link analyticspros.com and adswerve.com, so you can see I’ve entered both.

6. Once you hit save, your cross-domain tracking is now live. If you visit your site and click any links between your domains you will see a new _gl parameter. Here is an example of what the URL would look like in the browser: https://adswerve.com/?_gl=1j8b8y7_gaNTc3NDEzNDA1LjE1NzA1NzI1NjI._ga_X026J06Q11MTYwMzgzODI2Ni4xNjMuMS4xNjAzODM4Mjk2LjMw_ga_VMWSTP89JM*MTYwMzgzODI2Ni4xNTUuMS4xNjAzODM4Mjk2LjMw.

This is all there is! Your GA4 properties will now properly track users navigating between your domains with link clicks as a single user and session.

Other GA4 Cross-Domain Tracking Notes

Google also added a nice feature in this for enhanced measurement, which automatically tracks outbound links as events. The feature update is when you enter domains in your cross-domain settings, those domains will no longer be tracked as outbound links, which makes sense since you are telling Google they are really internal links.

It is going to be extremely important to pay attention to the callout earlier in this guide about matching configuration settings if you also use Universal Analytics on your site. If you don’t you could impact how users/sessions are tracked unintentionally.

Overall, this is a really nice feature improvement. As you can see in this guide you can potentially configure cross-domain tracking without ever having to manually modify your code by editing your tags or pushing an update in Google Tag Manager. Instead, we can do everything directly in the UI, which saves you time and helps you end up with more data integrity.

New BigQuery Integration for GA4 Properties

Google Analytics has long been one of the most widely used analytics platforms because of the number of powerful capabilities it provides. With Google Analytics 4 properties, Google Analytics is quickly rolling out numerous new features that have never been available before in the 15+ years since it was first released. With this post, we will go over what I consider the most significant release in the history of Google Analytics, which is the availability of the free BigQuery export to all customers! This replaces the previous method, which required configuring a Firebase project and involved lots of extra steps.

This BigQuery export opens up the availability for you to export all of your raw Google Analytics event data. Previously, this feature was only available in Google Analytics 360 (enterprise). This meant if you were using Google Analytics Standard, there was no ideal method to export or get access to the underlying raw/event data in the platform. This makes it really challenging to deal with advanced Google Analytics needs like getting unsampled reports, connecting with other reporting/visualization platforms like Tableau, or integrating with other datasets like your CRM or marketing data warehouse. With the new version of Google Analytics, this is no longer a problem!

The BigQuery integration for Google Analytics 4 properties showcases some fascinating features never before available for Google Analytics, including a new streaming export that makes data available within seconds (previously was 10-15 minutes). You can now easily select your data storage locations, including options like EU, US, or country-specific (Sydney, Taiwan, Frankfurt, and many more) to help comply with specific data governance frameworks.

Enable the BigQuery Export for Google Analytics 4 Properties

*Note: This feature is currently rolling out to all users, so if you do not have access yet, it should come soon.

  1. To enable the BigQuery integration for Google Analytics 4, ensure you are in a Google Analytics 4 property and have admin permissions. Start by clicking admin and then select BigQuery Linking.

2. Click the link button

3. We need to select which BigQuery project we want to link. If you already have a BigQuery project created, click the choose project link.

If you need to create a BigQuery project, then follow these instructions: https://support.google.com/analytics/answer/9823238?hl=en. Google allows you to export to the BigQuery sandbox, free of charge!

4. Select which BigQuery project you want to link and click confirm.

Note: if you use Firebase, you should strongly consider using the Firebase project for easier joins with other Firebase data. You’ll see the Firebase logo next to the project ID shown below if this is applicable.

5. Select a data location. This determines what geo-location your data is stored in.

6. For the next step, first select which streams you would like to export. If you have a mobile app, you can also choose to export the mobile advertiser identifiers.

For the frequency, you can choose daily and/or streaming exports. I would highly recommend selecting both, so you get your daily processed tables and access to the new continuous exports (within seconds)!

7. Review your setup and if everything looks good click submit

8. Give it some time (I waited until the next morning) and then head over to your BigQuery project. You will now see your raw Google Analytics data from Google Analytics 4.

Note: data is only exported from the date of enablement, there is no historical backfill.

This is Only The Beginning!

Now that you have enabled your BigQuery export for Google Analytics 4, you now have seemingly limitless advanced analytics and customization possibilities. You can explore using the native BigQuery connectors available for advanced data visualization tools, including Tableau, Data Studio, Qlik, and more. If needed, you could easily export/copy the data from BigQuery to other data providers like Amazon, Microsoft, or Snowflake. I’m super excited to see all of the new tutorials and blog posts that everyone will be sharing soon and for years to come for different ways to utilize this integration.

CCPA Request Results – TransUnion

The California Consumer Privacy Act is a powerful piece of legislation, which is designed to help California residents get more transparency and control over their personal data.

Recently, I came across an article about TransUnion, which is most widely known and associated as a credit reporting agency. This article from AdExchanger surprised me because in it TransUnion is proudly sharing how they have partnered with a media agency. TransUnion discloses that they are providing Horizon Media access to their identity graph, which they claim matches 99.9% of all adults in the United States. This made me wonder what a so-called credit agency is doing with my personal data and how it is being shared with third-party advertisers.

I submitted my CCPA request and it took almost 3 months to get the document I have shared below. I have redacted some of my personal information, but I learned the following about TransUnion:

  • They potentially have at least some/all of my personal identifiers: driver’s license number, passport number, Social Security number, insurance policy numbers, bank account numbers, and more
  • They have sensitive data of mine that may include at least some/all of the following: medical information, health insurance information, ancestry, religion, medical condition, genetic information, and more
  • They potentially have so much more: geolocation data, audio data, inferences about my intelligence, etc
  • They have shared, sold, and/or sold my personal data to advertising networks, commercial partners, consumer data resellers, data analytics providers, data brokers, internets service providers, social networks, marketing companies, and more.

I’m a huge fan of CCPA because of the increased level of transparency this provides. We still have a ways to go. I have no idea what data of mine is being shared with advertising networks. I have no idea why TransUnion has any of my genetic information and why it is being sold and to whom. We should have a right to know right?

Page 1


Sampling in Google Analytics 4 Properties

One of the first questions many users have as they are getting started with the new Google Analytics 4 properties in Google Analytics is if sampling still happens similar to how it does in the current version of Google Analytics. In addition to covering sampling in Google Analytics 4, I will also touch on cardinality and thresholding as well.

Sampling in Google Analytics 4 vs Universal Analytics

Sampling in Universal Analytics

In Universal Analytics, which is the version of GA everyone knows, sampling is something that almost everyone experiences. Explaining when and how sampling happens is actually not that simple as it can occur in a variety of different circumstances.

Almost all of the standard reports in your left-hand navigation menu are available unsampled, however, any time you do certain actions to that report such as applying a secondary dimension or advanced segment(audience) your reports will be sampled if your date range and Universal Analytics property exceed 500,000 sessions. Sampling, as well as cardinality limits, are much more complicated than this as there are a variety of other scenarios that can trigger this. To illustrate, the flow reports have different sampling rules, longer date ranges can cause more sampling, Multi-Channel Funnels is different, and even Google Analytics 360 has its own unique circumstances.

To summarize, sampling in Universal Analytics can occur in many places and as you can clearly see is not easy to actually summarize.

Sampling in Google Analytics 4

Google Analytics 4 has two main components for doing analysis and reporting. The image below shows the breakout between the standard reports and the new Analysis reports. The standard reports in Google Analytics 4 are always unsampled. You can apply comparisons, secondary dimensions, filter your reports and everything will continue to be unsampled.

Analysis works differently, however, and can have sampled data. Analysis, which previously was only available in Google Analytics 360 (Enterprise), is now available for everyone in Google Analytics 4. This is the new free form and advanced analysis tool that will be the place most users spend all of their time doing analysis and reporting. This is where you can create custom reports, funnels, and much more.

In general, anything you do in Analysis that replicates a standard report will be unsampled. Sampling can occur in a few different situations that I was able to observe. The main occurrence of sampling in Analysis is anytime you are exceeding 10 million events and the report you created is not a pre-existing standard report. For example, the cohort analysis will load unsampled for a property I was using with 100 million events, but as soon as I added the date dimension, it returned 10% sampled data (10/100m). Another area, where I observed sampling being triggered in certain situations was when my date range exceeded the last 60 days.

You can see when sampling occurs by looking at the shield in the top-right hand corner of Analysis. It will turn red any time it happens as shown in the image below.

Hit Limits in Google Analytics 4

Google Analytics for Firebase is marketed as a free and unlimited analytics solution. I haven’t been able to find anything for Google Analytics 4 that uses this wording, but from both testing the platform and asking other large volume users, it appears that Google Analytics 4 also is free and unlimited and has no hit/event limits. Universal Analytics has a limit in its terms of service that you shouldn’t exceed 10 million hits per month per account, so this is a huge upgrade! This makes sense, given Google Analytics 4 is really just taking Google Analytics for Firebase AKA Firebase for Apps and adding a Firebase for Web component.

Cardinality (Other) in Google Analytics 4

Cardinality occurs in Google Analytics 4, just as it does in Universal Analytics. I could not find any public documentation on the specific limits, but from testing on high volume sites, it appears that cardinality will occur at around 25,000 unique values per day for any dimension that exceeds this. If you exceed this, like in the image below where we have over a million unique URLs per day, you will see (other) in those reports. I’ve experienced this happening across both the standard reports, as well as Analysis. Hopefully, more documentation will be available on this soon!

Remember Google Analytics 4 includes a free BigQuery integration that has no known limits, so this is the primary way to access all of your raw data if you ever experience sampling or cardinality.

Thresholding in Google Analytics 4

Thresholding also occurs in Google Analytics 4 for certain dimensions to protect the privacy of individual users. You will primarily see this if you access any of the demographic and affinity dimensions in your reports. As stated in the help article, you cannot change these thresholds as they are defined by Google.

Let me know in the comments or on Twitter @charlesfarina / @adswerve if you find any new information or if you are experiencing anything differently!

Google Analytics Enhanced E-Commerce Funnels in Data Studio

I’ve been working on creating some Data Studio reports using the Enhanced E-Commerce reports for Google Analytics and was unable to find anything that closely replicated the funnels. I found some great posts from Michelle Kiss and Doug Hall that provided some innovative ways of approaching this, but what I could not find was a solution that only used the native Google Analytics connector or anything that dealt with some of the nuances around open/closed funnels and the additional metrics. I’m excited to share a set of templates for the Shopping Behavior Funnel that I believe solves for this.

Data Studio Shopping Behavior Funnels

Here is an embedded view of the funnel that I created to be as close as possible to the actual Shopping Behavior Funnel Report. Hover over steps 2 or 3 and you will see we even managed to replicate the entrances into the steps (steps 2 and 3).

Here is another template that was made to be interactive. You can click on the widgets for Device Category, Channel, and Country and you see the funnel update with your selections.

Be sure to look through all five pages in the template report, which include examples with Log Scale enabled/disabled and different versions of the funnel for you to play with.

How Was This Created?

To create these funnels it requires some creativity, as there are a number of challenges that have to be solved. The first challenges was how to create a simple funnel.

Simple Funnel

To create a simple Enhanced E-Commerce funnel in Data Studio you need to use the Shopping Stage dimension with Sessions as the metric. You will find there are over 20 shopping stages, so the first step is to create a filter to only include the ones needed. You can then use a bar chart to create the funnel visualization, but you will find that the steps are not in the right order. To solve this, you need to create a CASE statement, which will force the sorting.

Step 1: Create a table widget using Shopping Stage and Sessions
Step 2: Apply the following filter. Name = Include Shopping Behavior Stages Only. Conditions = Include – Shopping Stage – RegExp Contains – ^(ALL_VISITS|ADD_TO_CART|CHECKOUT|PRODUCT_VIEW|TRANSACTION)$
Step 3: Create a New Calculated Field (Click Add Dimension then Add Field) and use the following CASE statement

CASE
WHEN REGEXP_MATCH (Shopping Stage, “ALL_VISITS”) THEN “1) All Sessions”
WHEN REGEXP_MATCH (Shopping Stage, “CHECKOUT”) THEN “4) Sessions with Check-Out”
WHEN REGEXP_MATCH (Shopping Stage, “ADD_TO_CART”) THEN “3) Sessions with Add to Cart”
WHEN REGEXP_MATCH (Shopping Stage, “TRANSACTION”) THEN “5) Sessions with Transactions”
WHEN REGEXP_MATCH (Shopping Stage, “PRODUCT_VIEW”) THEN “2) Sessions with Product Views”
END

Step 4: Change to a Bar Chart and then change sort to Ascending.

Enhanced E-Commerce Funnel

To create the actual Enhanced E-Commerce Funnel there is a lot more that has to happen. I’ll show you some of the key points that were needed and you should be able to use the template report for the rest (just create a copy and starting editing/exploring).

Step 1: We need a different Case Statement to create a new calculated field that allows us to create the open funnel visualization. Use this:

CASE
WHEN REGEXP_MATCH (Shopping Stage, “ALL_VISITS”) THEN “1) All Sessions”
WHEN REGEXP_MATCH (Shopping Stage, “CHECKOUT_WITH_CART_ADDITION”) THEN “4) Sessions with Check-Out”
WHEN REGEXP_MATCH (Shopping Stage, “CHECKOUT_WITHOUT_CART_ADDITION”) THEN “4) Sessions with Check-Out”
WHEN REGEXP_MATCH (Shopping Stage, “ADD_TO_CART_WITHOUT_VIEW”) THEN “3) Sessions with Add to Cart”
WHEN REGEXP_MATCH (Shopping Stage, “ADD_TO_CART_WITH_VIEW”) THEN “3) Sessions with Add to Cart”
WHEN REGEXP_MATCH (Shopping Stage, “TRANSACTION”) THEN “5) Sessions with Transactions”
WHEN REGEXP_MATCH (Shopping Stage, “PRODUCT_VIEW”) THEN “2) Sessions with Product Views”
END

Step 2: Here is an example of the table where we can see the Data Source is a blend of the 5 filtered metrics together. This allows us to create all the calculated fields needed for the completion rates.

Many other steps went into the report above, but again, they are all pretty much just blends of the data source with itself. Explore the templates blended data sources and you can view all the settings/components for the 14 blended data sources that were required.

There is a lot more I want to do with these, but this should serve as a good starting point for building even better versions and variations! Let me know what you think!

Audit Your Google Analytics Data with Google Data Studio

For Google Analytics to drive actionable insights your data has to be directionally accurate and clean. There are any number of resources available to help you audit or perform health checks on your Google Analytics data. However, most of these resources involve either agreeing to share your data with a third party tool (through the API) or involves a lengthy process of reading a guide and then having to replicate the audit checks one by one. Today, I am excited to share a new resource using Google Data Studio, a free Google Analytics reporting/auditing template which can generate findings instantly and most importantly keeps your data completely secure (I get no access to it)!

Google Analytics Data Studio Audit Demo

I will show you how to create a copy of this report and apply it to your own data, but first, you can interact with the report to see how it works. In the embedded report below you can find the page selector (there are 8 pages to look at) at the very bottom left-hand corner when hovering over the report.

Apply Your Own Data To The Report

Here is the link to the Data Studio – Google Analytics Audit Template, which is now available for everyone to use! To get started with auditing your own Google Analytics data, simply make a copy of the report and change the Data Source to your own Google Analytics Data.

What The Report Audits

I tried to cover many of the common issues found in standard Google Analytics Audits. I did have some limitations since certain reports including Benchmarking, Multi-Channel Funnels, and Google Signals are not available with the default connector. Everything was built to allow you to simply swap the data connector and have everything instantly updated with no additional steps required.

Included are widgets for:

  • Lowercase Issues
  • Query Parameter Fragmentation
  • Personally Identifiable Information Being Captured
  • Interactive Event Structure Exploration
  • Campaign / UTM Parameter Issues
  • Google Ads Linking
  • 500 Hits Per Session Limit
  • 10 Million Hits Per Month Limit
  • Staging/Test Traffic in Production
  • Bot Identification
  • Variety of E-Commerce Reports
  • and Much More

I would love for you to provide any feedback or suggestions below!

1 2 3