google ads traffic

Why GA4 classifies Google Ads traffic as (Organic) and how to fix it

If you rely on Google Analytics 4 (GA4) and noticed that some of your Google Ads traffic is showing up under the campaign name “(organic)”, you might be wondering why this is happening. After all, Google Ads is a paid channel, and organic traffic is the exact opposite. So, what’s causing this confusing attribution?

In this blog post, we’ll dive into the key reasons why GA4 may label some of your Google Ads traffic as “(organic)” and what you can do to fix or prevent this issue.

How to check if you are experiencing this problem?

Fortunately, it is relatively easy to find out whether you are experiencing the same issue. You can investigate the Traffic Acquisition report in GA4. Then add session: if you see a lot of traffic coming from “Paid Search” (or “google / cpc” if your primary dimension is session source / session medium) in combination with the session campaign labelled as “(organic)”, your data is incomplete. Although you can see the campaign performance in Google Ads, the focus is on creating a unified data ecosystem where all sources of traffic and campaign data are aligned into a single view. This prevents discrepancies, ensuring that you have one version of the truth for better decision-making.

Why does Google Ads traffic get classified as organic?

Unfortunately, we are not sure what is causing this problem. This topic on the Google forum has users speculating that it might be caused by two problems:

  • Google Consent Mode: in essence, when a user does not provide consent, Google has trouble reporting on session campaigns due to privacy reasons.
  • Latest releases in Google Analytics: somewhere around June 10th, Google made some updates to their attribution models in GA4. This might be the root of the problem. We advise you to frequently check this topic for new releases and bug fixes.

Two ways to fix the problem

Currently, we do not know if or when Google will fix the issue. To prevent GA4 from classifying your Google Ads traffic as “(organic)”, you can follow either of these steps:

Manually or automatically adjust tracking templates in Google Ads

To prevent misclassification of Google Ads traffic as “(organic),” you can manually or automatically adjust the tracking templates in your Google Ads campaigns. By ensuring the correct parameters (such as utm_campaign and utm_term) are consistently applied to your ads, you can prevent GA4 from incorrectly categorising the traffic. This can be done by altering the tracking template of each Google Ads campaign. An example would look like this:

{lpurl}?campaign_name={campaign}&campaign_id={campaignid}&source=google&utm_campaign={campaign}&utm_medium=cpc&utm_source=google

Moreover, there are various scripts and tools available that can automate this process, reducing the chance of errors.

Transform the raw data in BigQuery

To fix the issue of GA4 misclassifying Google Ads traffic as “(organic)”, you can also use BigQuery to correct the attribution:

  1. The first step is to create a BigQuery project in Google Cloud. 
  2. Once your BigQuery project is set up, the GA4 property can be linked to BigQuery. 
  3. Next, you’ll need to enable Google Ads Data Transfer to BigQuery. Make sure to include the GCLID (Google Click ID) in your transfer settings, as this identifier will help you map ad clicks to campaigns. 
  4. By running SQL queries, you can replace session campaign “(organic)” with the actual campaign name for sessions that match a GCLID. 
  5. After cleaning up your data, you can build custom dashboards in Looker Studio to visualise the corrected data.

This comprehensive approach not only resolves the misclassification issue but also provides full control over your data. Below you will find an example of a query that matches ad clicks data (GCLID) with GA4 sessions:

WITH GoogleAdsCampaignLabel AS (
  SELECT
	cs.click_view_gclid AS gclid,
	ca.campaign_name AS campaign_name
  FROM `project.p_ads_ClickStats_1234567898` cs
  LEFT JOIN (
	SELECT *
	FROM `project.ads_Campaign_1234567898`
	WHERE _DATA_DATE = (SELECT max(_LATEST_DATE) FROM `project.ads_Campaign_1234567898`)
  ) ca
  ON cs.campaign_id = ca.campaign_id
),
 
GoogleAdsGA4 AS (
  SELECT
	ar.user_session_hash_id,
	ar.default_channel_grouping,
	CASE
  	WHEN ar.session_campaign IS NULL
       	OR ar.session_campaign = '(organic)'
       	OR ar.session_campaign = '(referral)'
  	THEN gacl.campaign_name
  	ELSE ar.session_campaign
	END AS session_campaign,
	ar.report_date AS date,
	SUM(ar.pdp_views) AS items_viewed,
	SUM(ar.add_to_carts) AS add_to_cart,
	SUM(ar.total_transactions) AS orders,
	SUM(ar.revenue) AS revenue
  FROM
	`project.sandbox.analytics_reporting_def` ar
  LEFT JOIN
	GoogleAdsCampaignLabel gacl
  ON
	ar.session_gclid = gacl.gclid
  WHERE
	ar.session_medium = 'cpc'
	AND ar.session_source = 'google'
  GROUP BY
	ar.user_session_hash_id,
	ar.new_user,
	ar.default_channel_grouping,
	session_campaign,
	ar.report_date
)
 
SELECT
  session_campaign,
  date,
  SUM(items_viewed) AS total_items_viewed,
  SUM(add_to_cart) AS total_add_to_cart,
  SUM(orders) AS total_orders,
  SUM(revenue) AS total_revenue
FROM
  GoogleAdsGA4
GROUP BY
  session_campaign,
  date

Note that we are referring to `project.sandbox.analytics_reporting_def` in the subquery. Basically, we made our own GA4 reporting table in BigQuery as exporting data to BigQuery can be more cost-effective in the long run, as you only pay for what you query.

Final thoughts

GA4 is a powerful tool, but it does require proper setup and monitoring to ensure that your campaign attribution is accurate. By following the practices mentioned above, you can avoid these common pitfalls and ensure your traffic data is properly attributed. The first solution is relatively easy to implement. So why should you choose the second solution? Using BigQuery offers deeper insights and more flexibility in analysing marketing performance.

While the first solution helps to track campaign data, BigQuery allows you to work with raw, event-level data, create custom reports, and build advanced attribution models. It also enables you to store data indefinitely, enrich it with external sources, and handle large datasets efficiently. For businesses looking to scale their analytics, BigQuery is a powerful complement to GA4’s standard reporting.

Happy tracking!

Follow The Data Story on LinkedIn to stay up to date on our blogs and more!

Need some help?

2022-03-10MRF (1055)

Jeroen Bakker

“Data moet boekdelen spreken en de beste ondersteuning of input geven voor bedrijfsvraagstukken. Door data visueel te maken wordt het voor iedereen herkenbaar.”

More Data stories

google ads traffic
Data stories

Why GA4 classifies Google Ads traffic as (Organic) and how to fix it

If you rely on Google Analytics 4 (GA4) and noticed that some of your Google Ads traffic is showing up under the campaign name “(organic)”, you might be wondering why...
BLOG_koekje
Data stories

Five Ways to Enhance Your First-party Data Strategy

Google planned on phasing out third-party cookies due to issues mainly concerning privacy, at the end of 2024. However, they have postponed this phase-out once again, giving businesses (and Google)...
European Women in Technology
Data stories

European Women in Technology 2024 – Part 2

On May 26th and 27th, our team members Yvette and Sophie attended the 2024 installment of European Women In Technology. This event’s main purpose is to share ideas and discuss...
BLOG_ewit
Data stories

European Women in Technology 2024 - Part 1

On May 26th and 27th, our team members Yvette and Sophie attended the 2024 installment of European Women In Technology. This event’s main purpose is to share ideas and discuss...
Ontwerp zonder titel
Data stories

An algorithm for automatic data analysis, explained with a hint of orange

Over the past few months, The Data Story has had its first intern! Dorian is now finishing his Master’s in Data Science with a graduation project, also at The Data...
BLOG_afbw2
Data stories

Analytics for a Better World

For the second year in a row, our team-member Sophie Caro attended the Analytics for a Better World conference on May 14th. Nowadays, analytics play an important role in increasing...
nl_NLNederlands