Google Analytics 4 custom report

For a google analytics 4 source connector with custom properties of:

{"name": "foo", "dimensions":["audienceId","signedInWithUserId","transactionId", "customEvent:ecomm_transaction_id_hashed","customEvent:transaction_id"],"metrics":["active1DayUsers"]}

the following error is obtained

2022-11-14 11:37:35 INFO i.a.w.p.DockerProcessFactory(create):163 - Preparing command: docker run --rm --init -i -w /data/<<id_hash>>/0 --log-driver none --name source-google-analytics-data-api-discover-<<id_hash>>-0-bbmxj --network host -v airbyte_workspace:/data -v /tmp/airbyte_local:/local -e DEPLOYMENT_MODE=OSS -e USE_STREAM_CAPABLE_STATE=true -e WORKER_ENVIRONMENT=DOCKER -e AIRBYTE_ROLE= -e WORKER_CONNECTOR_IMAGE=airbyte/source-google-analytics-data-api:0.0.3 -e WORKER_JOB_ATTEMPT=0 -e AIRBYTE_VERSION=0.40.10 -e WORKER_JOB_ID=<<id_hash>> airbyte/source-google-analytics-data-api:0.0.3 discover --config source_config.json
2022-11-14 11:37:36 ERROR i.a.w.i.DefaultAirbyteStreamFactory(internalLog):99 - string indices must be integers
Traceback (most recent call last):
  File "/airbyte/integration_code/", line 13, in <module>
    launch(source, sys.argv[1:])
  File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/", line 123, in launch
    for message in
  File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/", line 108, in run
    catalog =, config)
  File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/", line 73, in discover
    streams = [stream.as_airbyte_stream() for stream in self.streams(config=config)]
  File "/airbyte/integration_code/source_google_analytics_data_api/", line 370, in streams
    return [
  File "/airbyte/integration_code/source_google_analytics_data_api/", line 371, in <listcomp>
    type(report["name"], (GoogleAnalyticsDataApiGenericStream,), {})(
TypeError: string indices must be integers
2022-11-14 11:37:36 INFO i.a.w.t.TemporalAttemptExecution(get):134 - Stopping cancellation check scheduling

when specifying the custom reports.

Desired outcome: Get reports on per transactionId/hashed level (i.e. the raw data back of individual tranactions/events) from GA via Airbyte.

Hey @geoHeil, as per our code of conduct - please do not double post. As you’ve already brought this question up in Slack, let’s continue the discussion there. Please familiarize with our code conduct for the future:

understood thanks.
Would you prefer to see questions here or on slack in the future?

It is really up to you as long as the “no double post” rule is respected!