Receive zero-party data in BigQuery
Connect a BigQuery dataset in Settings > Data Sources. Brand Control Center creates a genuin_data table and fills it with your community's event rows on a daily, weekly, or monthly schedule.
Your community generates zero-party data: what members watch, search for, join, post, react to, and click. Members produce it by taking part, not by being tracked across other sites. How zero-party data powers communities and media revenue explains the model. This page shows how to land that data in your own warehouse, where you own it and can join it with the rest of your business data.
What arrives in BigQuery
Brand Control Center creates one table, genuin_data, in the dataset you name. It never creates a second table or writes anywhere else in your project. Each row is one event from your apps, embeds, and communities, timestamped in UTC. The table has 145 nullable columns in seven groups.
| Group | Example columns | What it tells you |
|---|---|---|
| Event | _timestamp, event, brand_id, content_id, content_type, conv_type | What happened, when, and to which piece of content |
| Member intent | topic_ids, communities_selected, keyword_searched, search_source, question, selected_option | Interests chosen, searches run, prompts answered |
| Watching and posting | video_view_length, length_at_video_paused, video_duration, upload_video_length, link_added | How much of a video was watched, how long a post ran, whether a link-out was added |
| App and device context | context_app_name, context_app_version, context_os_name, context_device_model, context_session_id, context_timezone, country_code | Where the event came from, grouped by session |
| Campaign | utm_source, utm_medium, utm_campaign, campaign, media_source, embed_id | Which campaign or embed brought the member in |
| Content records | master_video_, master_community_, master_loops_, master_groups_, master_brand_ | The video, community, loop, group, and brand the event refers to, joined in so you don't have to |
| Comment and share records | master_c_video_, master_c_user_uuid, master_c_community_, master_s_user_uuid | For comments and shares, the video commented on and the member who shared |
The master_* columns are joined from Genuin's own records, so a single WHERE master_community_handle = 'running' filter works without a second table. Rows are written in batches on the schedule you choose, not in real time.
Before you begin
- A Google Cloud project with a BigQuery dataset that will hold the table. Note the project ID and dataset name. You enter them as one value,
project_id.dataset_name. - An account for the connection. A Service account is the right choice for a production warehouse, because its access is scoped to one dataset and survives staff changes. A User account signs in with Google and needs permission to create, update, and list tables in the dataset.
- Edit access to Data Sources in Brand Control Center. A role with view-only access sees the form disabled.
Step 1: Give a service account the BigQuery Data Editor role
Skip steps 1 and 2 if you'll sign in with a User account.
- In Google Cloud, open IAM & Admin > Service Accounts and create a service account for the connection. Create a JSON key for it and download the file.
- Open IAM, find the service account, and open Edit access.
- Under Assign roles, pick BigQuery Data Editor. The role lets the connection create the table and append rows.
Step 2: Limit the role to one dataset
- Still in Edit access, add an IAM condition to the role.
- In the condition builder, add two rules joined with AND:
- Service is
bigquery.googleapis.com - Name starts with
projects/<project_id>/datasets/<dataset_name>
- Service is
- Save the condition, then save the role.
With the condition in place, the service account has no access to any other dataset in the project.
Step 3: Open the BigQuery data source
- In Brand Control Center, open Settings > Data Sources.
- Expand BigQuery. The panel sits below S3 Storage and Mix Panel.
Step 4: Connect the dataset
Fill the three fields, then connect with the account type you chose.
| Field | Value |
|---|---|
| Account type | User or Service. Locked once connected. |
| Dataset ID | project_id.dataset_name. Letters, digits, hyphens, and underscores, with exactly one dot. |
| Data Sync Frequency | Daily, Weekly, or Monthly. The only setting you can change later. |
User account
- Pick User, enter the Dataset ID, and pick a frequency.
- Select Sign in with Google and approve the request. The consent screen asks for your email, profile, and BigQuery access.
Service account
- Pick Service, enter the Dataset ID, and pick a frequency.
- Under Upload JSON File, upload the key file from step 1. The file has to be a service account key under 10 KB, and the form reads the project ID and key ID from it.
- Select Connect.
On connect, Brand Control Center lists the tables in the dataset. If genuin_data is missing, it creates the table with the schema above. If the table is already there, from an earlier connection, it keeps it and appends to it. A notification confirms the connection, the banner names the table, and the Dataset ID and Account type lock.
If the connection fails, the usual cause is permissions. The user or service account lacks create, update, or list rights on the dataset, or the IAM condition names a different dataset.
Step 5: Query the table
Open the dataset in the BigQuery console. The genuin_data table appears under it, with the schema ready before the first rows arrive.
Rows land on the schedule you picked. A first query that shows which events arrived in the past week:
SELECT
DATE(_timestamp) AS day,
event,
COUNT(*) AS events
FROM `project_id.dataset_name.genuin_data`
WHERE _timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY day, event
ORDER BY day DESC, events DESC;From there, join on master_video_uuid or master_community_uuid to your own catalogue, or on utm_campaign to your campaign table.
Change the sync frequency
- Open Settings > Data Sources > BigQuery.
- Pick a new Data Sync Frequency. The button changes from Disconnect to Update.
- Select Update.
Nothing else is editable while connected. To change the dataset or the account type, disconnect and connect again.
Disconnect
- Open Settings > Data Sources > BigQuery and select Disconnect.
- Confirm in the dialog.
Brand Control Center drops its stored credentials and schedule. The genuin_data table and every row already written stay in your dataset. You can reconnect at any time. Reconnecting to the same dataset reuses the existing table, so history and new rows stay together.
Limits
| Item | Limit |
|---|---|
| Datasets per brand | One |
| Table name | genuin_data, fixed |
| Columns | 145, all nullable, managed by Genuin |
| Sync frequency | Daily, Weekly, or Monthly |
| Key file | Service account JSON, under 10 KB |
| Dataset ID | project_id.dataset_name, letters, digits, hyphens, underscores |
Limitations
- Batch delivery only. Rows arrive on the chosen schedule, not as events happen.
- One dataset and one table. The brand connects a single dataset, and all events share
genuin_data. - Schema is fixed. New columns arrive with product releases. Build queries that tolerate added columns.
- Dataset and account type lock on connect. Changing either means disconnect and reconnect.

