Knowledge Base / Direct / none conversion sources in Google Analytics 4

Direct / none conversion sources in Google Analytics 4

Topics:

Server-Side Tracking
Ad Tracking and Attribution

Question

Why is a conversion or a purchase is showing as “direct / none” in Google Analytics?

Answer

If you're using Google Analytics 4, it tracks events based on browser cookies. Sometimes, when the event is sent from a browser, the original source of the customer may be missing due to the lack of the tracking cookie recorded on the first visit in browser at the moment of the conversion.

Able overcomes this by recording the original Client ID value set by Google Analytics 4 on the first visit and associating it with the lead details, allowing it to attribute all purchases to the visitor known by Google Analytics 4.

Sometimes, you may experience the source set to 'direct / none' or 'not set' even when using Able integration with Google Analytics. This post discusses how Google Analytics attribution works and why a conversion source might differ from expected.

Firstly, let's discuss how attribution works in GA4. Able sends all conversions to GA4 with the original Client ID, recorded on the first known website visit, as well as the last known session ID. GA4 then uses its own attribution model to determine the source of each event to display: https://support.google.com/analytics/answer/10596866?hl=en

Note that there are always two sources: the first user source and the session source.

The first user source is determined by the source of the first session, as long as it falls within the 90-day attribution window. 90-day is the maximum value; it's set by default but can be reduced in Google Analytics property settings.

The session source is the source of the session and has a much stricter timeout. If the session is inactive at the time of a payment, its session source would be missing, although I believe it's recorded as (not set) rather than direct in such a case.

Sometimes, data-driven attribution assigns user source different from the expected one. A good way to debug it would be to obtain the 'ga_cookie' value shown for the customer in the Able Dashboard - Customers tab and find it in the GA4 User Explorer report, which should display the stored GA4 user journey and source. This would allow to see what touchpoints were recorded by Google Analytics 4 for the user and is normally sufficient to identify why it's being attributed to a given source or channel.

You should also be aware of thresholding, especially if Google Signals are enabled: https://support.google.com/analytics/answer/9383630?hl=en

Thresholding may result in conversions of a given type being omitted from Google Analytics 4 reports if they too infrequent.

Able only sends the conversions it can attribute to GA4 Client IDs, and the total value of purchases in GA4 would be less than you have in the payment system because of the recurring subscription payments that Able can't associate with the visitor it didn't track.

This can cause some confusion going forward due to mixing recurring payments from the first month with the new payments in the second month.

The best way to account for this is to use the synthetic event FirstPurchase available in Able CDP in addition to Purchase. This is a synthetic event Able generates when it recognizes a payment made by a known website visitor for the first time and should correspond to the new conversions to paid customers 1:1 compared to what you have in payment system.

Another way would to do it solely using Google Analytics 4 features is to segment conversions by the first user date. We have recommendations in our blog on how to use GA4 to account for this: https://www.ablecdp.com/blog/creating-a-google-analytics-4-report-for-conversions-based-on-date-of-acquisition

See also our answer Why Google Ads conversions don't match Google Analytics.

Both methods are very helpful when used with integrations such as Stripe, which don't have a native flag to indicate whether the payment is a conversion to the paying customer or a recurring payment by an existing one.

What's next?