Google Analytics 360 integration summary

Stitch’s Google Analytics 360 integration replicates data using the BigQuery API. Refer to the Schema section for a list of objects available for replication.

Google Analytics 360 feature snapshot

A high-level look at Stitch's Google Analytics 360 (v1) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Beta

Supported by

Stitch

Stitch plan

Advanced

API availability

Available

Singer GitHub repository

singer-io/tap-ga360

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

Table-level reset

Unsupported

Configurable Replication Methods

Unsupported

DATA SELECTION
Table selection

Supported

Column selection

Supported

Select all

Supported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting Google Analytics 360

Google Analytics 360 setup requirements

To set up Google Analytics 360 in Stitch, you need:

  • A Stitch Advanced plan.
  • A Google BigQuery and Google Analytics 360 account. You need to have your BigQuery account configured to export to Google Analytics 360. To learn how to configure this export, use Google’s step-by-step instructions.


Step 1: Locate your Project ID and Dataset ID

  1. Login to Google and go to your Google Cloud Console.
  2. To locate your list of projects, click on the navigation menu in the upper left-hand corner of the page.
  3. Hover over IAM & Admin to pop open its menu. Select Manage Resources.
  4. On this page, navigate to the project that includes the dataset you want to replicate data from and click on it.
  5. Your Project ID and all of your Dataset IDs will be visible. Make note of the Project ID and Dataset ID that you want to replicate and keep it readily available for the Google Analytics 360 integration configuration page.

Step 2: Create a GCP IAM service account

Step 2.1: Define the service account details

  1. Navigate to the IAM Service Accounts page in the GCP console.
  2. Select the project you want to use by using the project dropdown menu, located near the top left corner of the page:

    Highlighted project selection menu in the Google Cloud Platform console

  3. Click + Create Service Account.
  4. On the Service account details page, fill in the field as follows:
    • Service account name: Enter a name for the service account. For example: Stitch
    • Serivce account description: Enter a description for the service account. For example: Replicate Stitch data
  5. Click Create.

Step 2.2: Assign service account permissions

BigQuery read-only roles Next, you’ll assign permissions to the service account.

  1. On the Service account permissions page, click the Role field.
  2. In the window that displays, select one of the following BigQuery roles:
    • BigQuery Data Viewer
    • BigQuery Job User
    • BigQuery User
  3. Click + Add Another Role.
  4. Repeat steps 2 and 3 until all BigQuery roles have been assigned.
  5. Click Continue.

Step 2.3: Create a JSON project key

Create project key section, highlighted in the Google Cloud Platform console

The last step is to create and download a JSON project key. The project key file contains information about the project, which Stitch will use to complete the setup.

  1. On the Grant users access to this service account page, scroll to the Create key section.
  2. Click + Create Key.
  3. When prompted, select the JSON option.
  4. Click Create.
  5. Save the JSON project key file to your computer. The file will be downloaded to the location you specify (if prompted), or the default download location defined for the web browser you’re currently using.

Step 3: Add Google Analytics 360 as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Google Analytics 360 icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch Google Analytics 360” would create a schema called stitch_google_analytics_360 in the destination. Note: Schema names cannot be changed after you save the integration.

  5. In the GA 360 Dataset ID and GA 360 Project ID fields, enter the Project and Dataset IDs you retrieved in Step 1.
  6. In the Service Account JSON field, paste the JSON project key you obtained in Step 2.3.

Step 4: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Google Analytics 360 integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Google Analytics 360’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 5: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Google Analytics 360 integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 6: Set objects to replicate

The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For Google Analytics 360 integrations, you can select:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

Initial and historical replication jobs

After you finish setting up Google Analytics 360, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Google Analytics 360 replication

For each day of export in Google Analytics 360, Google Analytics 360 creates a table with the format ga_sessions_YYYYMMDD. The YYYYMMDD portion of the table’s name corresponds to the date the data is for.

Stitch uses the YYYYMMDD portion of the table’s name to incrementally replicate data. When a new export with a YYYYMMDD value is greater than the previous export, Stitch will replicate the data for that day in full.

Google Analytics 360 imports data into daily session tables several times throughout the day. For the current day, data isn’t final until the daily import is complete. Refer to Google’s documentation for more info on this process.

Because Google Analytics 360 performs data imports several times a day, you may notice differences between your data in Google Analytics 360 and the data replicated by Stitch. Allow a full day to see complete updates for the previous day’s data.


Google Analytics 360 table reference

ga_session_hits

This table contains information about Google Analytics session hits.

Replication Method

Key-based Incremental

Primary Keys

visitId

fullVisitorId

visitStartTime

hitNumber

Useful links

ga_session_hits schema on GitHub

Google Analytics 360 API method

Join ga_session_hits with on
ga_sessions
ga_session_hits.visitId = ga_sessions.visitId
ga_session_hits.fullVisitorId = ga_sessions.fullVisitorId
ga_session_hits.visitStartTime = ga_sessions.visitStartTime

appInfo

OBJECT

appId

STRING

appInstallerId

STRING

appName

STRING

appVersion

STRING

exitScreenName

STRING

landingScreenName

STRING

screenDepth

STRING

screenName

STRING

contentGroup

OBJECT

contentGroup1

STRING

contentGroup2

STRING

contentGroup3

STRING

contentGroup4

STRING

contentGroup5

STRING

contentGroupUniqueViews1

NUMBER

contentGroupUniqueViews2

NUMBER

contentGroupUniqueViews3

NUMBER

contentGroupUniqueViews4

NUMBER

contentGroupUniqueViews5

NUMBER

previousContentGroup1

STRING

previousContentGroup2

STRING

previousContentGroup3

STRING

previousContentGroup4

STRING

previousContentGroup5

STRING

contentInfo

OBJECT

contentDescription

STRING

customDimensions

ARRAY

index

NUMBER

value

STRING

customMetrics

ARRAY

index

NUMBER

value

NUMBER

customVariables

ARRAY

customVarName

STRING

customVarValue

STRING

index

NUMBER

dataSource

STRING

eCommerceAction

OBJECT

action_type

STRING

option

STRING

step

NUMBER

eventInfo

OBJECT

eventAction

STRING

eventCategory

STRING

eventLabel

STRING

eventValue

NUMBER

exceptionInfo

OBJECT

description

STRING

exceptions

NUMBER

fatalExceptions

NUMBER

isFatal

BOOLEAN

experiment

ARRAY

experimentId

STRING

experimentVariant

STRING

fullVisitorId

STRING

hitNumber

NUMBER

hour

NUMBER

isEntrance

BOOLEAN

isExit

BOOLEAN

isInteraction

BOOLEAN

isSecure

BOOLEAN

item

OBJECT

currencyCode

STRING

itemQuantity

NUMBER

itemRevenue

NUMBER

localItemRevenue

NUMBER

productCategory

STRING

productName

STRING

productSku

STRING

transactionId

STRING

latencyTracking

OBJECT

domContentLoadedTime

NUMBER

domInteractiveTime

NUMBER

domLatencyMetricsSample

NUMBER

domainLookupTime

NUMBER

pageDownloadTime

NUMBER

pageLoadSample

NUMBER

pageLoadTime

NUMBER

redirectionTime

NUMBER

serverConnectionTime

NUMBER

serverResponseTime

NUMBER

speedMetricsSample

NUMBER

userTimingCategory

STRING

userTimingLabel

STRING

userTimingSample

NUMBER

userTimingValue

NUMBER

userTimingVariable

STRING

minute

NUMBER

page

OBJECT

hostname

STRING

pagePath

STRING

pagePathLevel1

STRING

pagePathLevel2

STRING

pagePathLevel3

STRING

pagePathLevel4

STRING

pageTitle

STRING

searchCategory

STRING

searchKeyword

STRING

product

ARRAY

customDimensions

ARRAY

index

NUMBER

value

STRING

customMetrics

ARRAY

index

NUMBER

value

NUMBER

isClick

BOOLEAN

isImpression

BOOLEAN

localProductPrice

NUMBER

localProductRefundAmount

NUMBER

localProductRevenue

NUMBER

productBrand

STRING

productListName

STRING

productListPosition

NUMBER

productPrice

NUMBER

productQuantity

NUMBER

productRefundAmount

NUMBER

productRevenue

NUMBER

productSKU

STRING

productVariant

STRING

v2ProductCategory

STRING

v2ProductName

STRING

promotion

ARRAY

promoCreative

STRING

promoId

STRING

promoName

STRING

promoPosition

STRING

promotionActionInfo

OBJECT

promoIsClick

BOOLEAN

promoIsView

BOOLEAN

publisher

OBJECT

adsClicked

NUMBER

adsPagesViewed

NUMBER

adsRevenue

NUMBER

adsUnitsMatched

NUMBER

adsUnitsViewed

NUMBER

adsViewed

NUMBER

adsenseBackfillDfpClicks

NUMBER

adsenseBackfillDfpImpressions

NUMBER

adsenseBackfillDfpMatchedQueries

NUMBER

adsenseBackfillDfpMeasurableImpressions

NUMBER

adsenseBackfillDfpPagesViewed

NUMBER

adsenseBackfillDfpQueries

NUMBER

adsenseBackfillDfpRevenueCpc

NUMBER

adsenseBackfillDfpRevenueCpm

NUMBER

adsenseBackfillDfpViewableImpressions

NUMBER

adxBackfillDfpClicks

NUMBER

adxBackfillDfpImpressions

NUMBER

adxBackfillDfpMatchedQueries

NUMBER

adxBackfillDfpMeasurableImpressions

NUMBER

adxBackfillDfpPagesViewed

NUMBER

adxBackfillDfpQueries

NUMBER

adxBackfillDfpRevenueCpc

NUMBER

adxBackfillDfpRevenueCpm

NUMBER

adxBackfillDfpViewableImpressions

NUMBER

adxClicks

NUMBER

adxImpressions

NUMBER

adxMatchedQueries

NUMBER

adxMeasurableImpressions

NUMBER

adxPagesViewed

NUMBER

adxQueries

NUMBER

adxRevenue

NUMBER

adxViewableImpressions

NUMBER

dfpAdGroup

STRING

dfpAdUnits

STRING

dfpClicks

NUMBER

dfpImpressions

NUMBER

dfpMatchedQueries

NUMBER

dfpMeasurableImpressions

NUMBER

dfpNetworkId

STRING

dfpPagesViewed

NUMBER

dfpQueries

NUMBER

dfpRevenueCpc

NUMBER

dfpRevenueCpm

NUMBER

dfpViewableImpressions

NUMBER

measurableAdsViewed

NUMBER

viewableAdsViewed

NUMBER

referer

STRING

refund

OBJECT

localRefundAmount

NUMBER

refundAmount

NUMBER

social

OBJECT

hasSocialSourceReferral

STRING

socialInteractionAction

STRING

socialInteractionNetwork

STRING

socialInteractionNetworkAction

STRING

socialInteractionTarget

STRING

socialInteractions

NUMBER

socialNetwork

STRING

uniqueSocialInteractions

NUMBER

sourcePropertyInfo

OBJECT

sourcePropertyDisplayName

STRING

sourcePropertyTrackingId

STRING

time

NUMBER

transaction

OBJECT

affiliation

STRING

currencyCode

STRING

localTransactionRevenue

NUMBER

localTransactionShipping

NUMBER

localTransactionTax

NUMBER

transactionCoupon

STRING

transactionId

STRING

transactionRevenue

NUMBER

transactionShipping

NUMBER

transactionTax

NUMBER

type

STRING

visitId

NUMBER

visitStartTime

NUMBER

ga_sessions

This table contains information about general Google Analytics sessions.

Replication Method

Key-based Incremental

Primary Keys

fullVisitorId

visitId

visitStartTime

Replication Key

date

Useful links

ga_sessions schema on GitHub

Google Analytics 360 API method

Join ga_sessions with on
ga_session_hits
ga_sessions.visitId = ga_session_hits.visitId
ga_sessions.fullVisitorId = ga_session_hits.fullVisitorId
ga_sessions.visitStartTime = ga_session_hits.visitStartTime

channelGrouping

STRING

clientId

STRING

customDimensions

ARRAY

index

NUMBER

value

STRING

date

DATE-TIME

device

OBJECT

browser

STRING

browserSize

STRING

browserVersion

STRING

deviceCategory

STRING

flashVersion

STRING

javaEnabled

BOOLEAN

language

STRING

mobileDeviceBranding

STRING

mobileDeviceInfo

STRING

mobileDeviceMarketingName

STRING

mobileDeviceModel

STRING

mobileInputSelector

STRING

operatingSystem

STRING

operatingSystemVersion

STRING

screenColors

STRING

screenResolution

STRING

fullVisitorId

STRING

geoNetwork

OBJECT

city

STRING

cityId

STRING

continent

STRING

country

STRING

latitude

STRING

longitude

STRING

metro

STRING

networkDomain

STRING

networkLocation

STRING

region

STRING

subContinent

STRING

socialEngagementType

STRING

totals

OBJECT

bounces

NUMBER

hits

NUMBER

newVisits

NUMBER

pageviews

NUMBER

screenviews

NUMBER

sessionQualityDim

NUMBER

timeOnScreen

NUMBER

timeOnSite

NUMBER

totalTransactionRevenue

NUMBER

transactionRevenue

NUMBER

transactions

NUMBER

uniqueScreenViews

NUMBER

visits

NUMBER

trafficSource

OBJECT

adContent

STRING

adwordsClickInfo

OBJECT

adGroupId

NUMBER

adNetworkType

STRING

campaignId

NUMBER

creativeId

NUMBER

criteriaId

NUMBER

criteriaParameters

STRING

customerId

NUMBER

gclId

STRING

isVideoAd

BOOLEAN

page

NUMBER

slot

STRING

targetingCriteria

OBJECT

boomUserlistId

NUMBER

campaign

STRING

campaignCode

STRING

isTrueDirect

BOOLEAN

keyword

STRING

medium

STRING

referralPath

STRING

source

STRING

userId

STRING

visitId

NUMBER

visitNumber

NUMBER

visitStartTime

NUMBER

visitorId

NUMBER


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.