Session data collection based on the OWOX BI algorithm

Collect raw, non-sampled session data from your website to Google BigQuery instead of using standard Google Analytics session data.

So, let's see how it works.

Session formation

Sessions are being formed by the same algorithm used by Google Analytics. However, they are being calculated by the OWOX BI algorithm based on the clientId and timestamp parameters from the last user interaction.

Session expiration triggers

A session is closed and a new session begins:

  • at the end of each day (12 AM) in the linked Google Analytics view timezone;
  • when a user gets to the website from another domain listed in the referral exclusion list;
  • after a predefined period of inactivity (the default timeout of 30 minutes can be changed in the OWOX BI interface);
  • when a user returns to your website via another ad that contains utm tags different from the first hit in the session.

Filters and exceptions

  • Sessions will contain raw unfiltered data. That's why we recommend that you select an unfiltered Google Analytics view when setting up data collection to Google BigQuery.
  • By default, your domain is automatically added to the referral exclusion list: as the result, traffic from subdomains won't appear in the reports.

User ID data collection

All User ID data is being sent in the &uid parameter — you don't need to create custom dimensions. Using the OWOX BI algorithm, you also can and update historical data on the collected User IDs. Read more in Collecting and updating User ID data.

Identifying traffic sources

The OWOX BI algorithm attributes sessions to traffic sources by applying the Last Non-Direct Click attribution model, the same as in Google Analytics.

The Last Non-Direct model ignores all direct traffic and attributes sessions to the last non-direct traffic mediums: referral, cpc, organic, and others.

To track the actual traffic source, we have added the trafficSource.isTrueDirect field of your owoxbi_sessions table. The field indicates if the source of the session started as a direct site visit, or is it follows the session generated by an ad source. 

Google Ads auto-tagging

In the cases of Google Ads auto-tagging, the trafficSource. fields, providing information about the traffic source from which the session originated, are retrieved from AdWords data tables uploaded to Google BigQuery using the Google Ads API.

There are several ways to set up automatic uploads of Google Ads reporting data into Google BigQuery. For more information about how to collect Google Ads data in BigQuery, read our article on it.

Please note: Make sure you have configured automatic uploads of Google Ads data into Google BigQuery. Otherwise, the auto-tagging won't be available.

Session calculation when sending data via Measurement Protocol

Hits sent via Measurement Protocol with the value of the &qt parameter up to 30 days will retrospectively get to the session data table (bi_sessions) for the corresponding date and will be assigned to the correct session.

The hits will get to a hit data table in BigQuery regardless of the &qt parameter's value.

If a &qt parameter is not specified and the hit doesn't fall into the closest session timeout for a specific user, then this hit will create a new session in an "owoxbi_sessions" table.

Note Sending the &qt parameter with a value of more than 4 hours will cause the hit to not get to Google Analytics. This will lead to data discrepancy: OWOX BI will get more data than Google Analytics.
Set the &qt parameter value to more than 4 hours only if you need the events sent via Measurement Protocol to get to the sessions during which they've happened.

Data collection and update times in the Google Analytics view time zone

The first session data table will be available within 48 hours after the data collection setup. The following tables will be formed within 12 hours after the end of the day.

Type of data When the data is updated in session data tables in Google BigQuery

All session data computed based on hit data tables, except cost data (adCost, attributedAdCost) and Google Ads campaigns data with auto-tagging (gclid).

Daily update within 12 hours after the start of the next day.

Cost data (adCost, attributedAdCost). This includes all advertising cost data imported into Google Analytics.

Daily update of the session data table collected during the previous day:
- once a day after 6 p.m. + historical data update during a preset actualization period.

Cost data (adCost, attributedAdCost). This includes all advertising cost data imported into Google BigQuery via the connected Ad Service → Google BigQuery pipelines.


Сhanges in cost data will be reflected in the adCost and attributed AdCost fields within 6 hours after this data is updated in the CostData_ tables.

Google Ads data about campaigns with auto-tagging enabled (gclid values).

Two checking periods a day for the session data table collected during the previous day: after 6 a.m. and after 6 p.m.
During the checking periods, the Google Ads data is being checked every 15 minutes until two successive checks show the data in the source table and in the session table are synchronized.
More about the Ads data uploading and updates in session data tables.

See the structure of the session data table in this article.

Was this article helpful?
3 out of 3 found this helpful
Have more questions? Submit a request


Please sign in to leave a comment.