> For the complete documentation index, see [llms.txt](https://help.littledata.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.littledata.io/advanced/troubleshooting/fix-unassigned-traffic-ga4.md).

# How to fix Unassigned traffic in Google Analytics 4

## How to fix Unassigned traffic in GA4

Seeing **Unassigned** as a channel in your GA4 traffic or user acquisition reports? This page explains why it happens and how to reduce it.

### What is Unassigned traffic

GA4 sorts every session into a channel using the rules of its [default channel group](https://support.google.com/analytics/answer/9756891). When a session's source and medium don't match any of those rules, GA4 puts it in **Unassigned**.

This usually happens when `utm_source` or `utm_medium` is missing, or uses values GA4 doesn't recognize.

<figure><img src="https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2FpaIfqPDeYk94CJUPGkuY%2Fimage.png?alt=media&amp;token=ae017254-f3c5-4973-bf67-9948ce663321" alt=""><figcaption></figcaption></figure>

### Common causes

| Cause                                            | Why it ends up as Unassigned                                                                                                                                                                                                     |
| ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Missing or non-standard UTM parameters           | GA4 can't match the source and medium to a channel. See [troubleshooting marketing attribution](https://help.littledata.io/advanced/troubleshooting/troubleshooting-marketing-attribution-for-shopify).                          |
| Cross-domain tracking issues                     | If users move between domains or subdomains that aren't set up for cross-domain tracking, GA4 can lose the session's source.                                                                                                     |
| Recurring orders                                 | [Recurring orders](https://help.littledata.io/sources/shopify/tracking-subscription-orders-in-the-shopify-checkout) are created automatically in the backend. No customer visit happens, so there is no traffic source.          |
| Social sales channels                            | Orders placed directly in [sales channels](https://help.shopify.com/en/manual/online-sales-channels) like TikTok Shop or the Facebook and Instagram shop happen outside your Shopify storefront, so GA4 has no session for them. |
| Self-referrals                                   | If your own domains or payment providers aren't in GA4's unwanted referrals list, internal hops can break the session's source.                                                                                                  |
| Ad blockers, privacy tools and Safari ITP        | These can block GA4 in the browser or shorten cookie life, so the session's source is lost.                                                                                                                                      |
| Bot traffic                                      | Bots often send incomplete data that doesn't match any channel.                                                                                                                                                                  |
| Placeholder client IDs (`default.littledata...`) | See below.                                                                                                                                                                                                                       |

#### Placeholder client IDs

When Littledata can't find a GA4 client ID for an event, it sends a placeholder client ID that starts with `default.littledata.`. This can happen when the customer used an ad blocker, rejected tracking consent, or used a buy now button that goes straight to checkout.

In some cases Littledata can still read UTM parameters from the checkout or order. It then starts a new session with those UTMs and sends them in a `campaign_details` event. It can't change the source of a session that already exists.

{% hint style="success" %}
You can reduce Unassigned orders in the Littledata app. Find the GA4 card, click the **⋯** menu on its card and choose **Settings**. Then:

* For social sales channel orders, add those channels to the **Order channels exclusion list** in the **Data customization** tab. See [how to exclude orders by order channel](https://help.littledata.io/advanced/troubleshooting/how-to-exclude-orders-by-source).
* For recurring orders, turn on **Attribution boost for recurring purchases** in the **Session enrichment** tab. Recurring purchases then keep the UTM parameters of the first order. Or turn on **Exclude recurring orders** in the **Data customization** tab to stop sending them.
  {% endhint %}

### How to fix Unassigned traffic

#### Use standard UTM tags

If you don't tell Google the specifics of your campaigns, their traffic is rolled into existing buckets such as Direct, Referral or Unassigned. This most commonly happens with emails and social posts. UTM tags fix this: add a **campaign source**, **campaign medium** and **campaign name** to the end of your URL.

Make your UTM tags follow [Google's channel rules](https://support.google.com/analytics/answer/9756891). Google's [Campaign URL Builder](https://ga-dev-tools.google/campaign-url-builder) helps you build consistent links.

Be careful with spelling and stick to one format. Use `email`, not `Email` or `e-mail`, because GA4 reports each spelling as a separate line item.

To see your tagged campaigns in GA4, go to **Reports** > **Acquisition** > **Traffic acquisition** and use **Session campaign** as the dimension.

#### Change the reporting identity

GA4's default **Blended** reporting identity uses four [identity methods](https://support.google.com/analytics/answer/10976610): user ID, Google signals, device ID and modeling. In practice, Blended often pushes traffic into the Direct or Unassigned channel. You can learn more in [this livestream video](https://www.youtube.com/watch?v=FU6nB29wQpk).

We recommend switching the reporting identity to **Device-based** while keeping Google signals turned on. The change applies to your existing reports too, so you don't need to wait for new data.

{% stepper %}
{% step %}
**Turn on Google signals**

In GA4, go to **Admin** > **Data collection and modification** > **Data collection** and turn on **Google signals data collection**.
{% endstep %}

{% step %}
**Open Reporting identity**

Go to **Admin** > **Data display** > **Reporting identity**.
{% endstep %}

{% step %}
**Choose Device-based**

Select **Device-based** and save your change.
{% endstep %}
{% endstepper %}

#### Create a custom channel group

A custom channel group lets you define your own channel rules. It also applies to your historical data.

For example, if your [Attentive traffic](https://help.littledata.io/integrations/attentive/attribution-report-ga4-attentive) uses UTM values that don't match Google's SMS channel rules, it ends up in Unassigned:

<figure><img src="https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2F0c4Ij1lBbLQmyCSPJi0D%2Fimage.png?alt=media&amp;token=3797f3b5-88b4-40c3-a3e2-1e72f8078d6a" alt=""><figcaption></figcaption></figure>

A custom channel group with an SMS channel that matches these values fixes this.

{% stepper %}
{% step %}
**Open Channel groups**

In GA4, go to **Admin** > **Data display** > **Channel groups**.
{% endstep %}

{% step %}
**Create a new group**

Click **Create new channel group**. GA4 starts you with a copy of the default channel group.
{% endstep %}

{% step %}
**Name the group**

Enter a group name and, if you like, a description.
{% endstep %}

{% step %}
**Define your channels**

Add or edit channels and their conditions. For example, an SMS channel that matches source `attentive` or medium `text`.

<figure><img src="https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2FmHsNTaOMHaUPaISI7SMi%2Fimage.png?alt=media&amp;token=7f1f114b-e9dc-47a5-9392-637ab944c100" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Save the group**

Click **Save group**.
{% endstep %}
{% endstepper %}

For more detail on editing, reordering and removing channels, see [how to fix the (Other) channel in GA4](https://help.littledata.io/advanced/troubleshooting/how-to-fix-other-channel-in-google-analytics).

#### Use your custom channel group in reports

Your new group is available as a dimension in the acquisition reports. Use it as the first user dimension in **User acquisition**:

<figure><img src="https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2F841z6x7jJ1WxeLfzy6rt%2Fimage.png?alt=media&amp;token=d858f2d6-d69a-4e29-b28b-77f502a32624" alt=""><figcaption></figcaption></figure>

Or as the session dimension in **Traffic acquisition**:

<figure><img src="https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2FcdPKltyxHnoaRNfjCr1o%2Fimage.png?alt=media&amp;token=31d75a95-3293-4a69-bb2e-82848a3746e8" alt=""><figcaption></figcaption></figure>

### Related articles

* [How to fix the (Other) channel in GA4](https://help.littledata.io/advanced/troubleshooting/how-to-fix-other-channel-in-google-analytics)
* [Troubleshooting marketing attribution for Shopify](https://help.littledata.io/advanced/troubleshooting/troubleshooting-marketing-attribution-for-shopify)
* [How to exclude orders by order channel](https://help.littledata.io/advanced/troubleshooting/how-to-exclude-orders-by-source)
* [Shopify vs GA4 data discrepancies](https://help.littledata.io/advanced/troubleshooting/shopify-vs-google-analytics-data-discrepancies)
