BigQuery Destination
Prerequisites
- A Google Cloud Platform (GCP) account with billing enabled
- A GCP project where you want to store your data
- Permission to create service accounts and grant IAM roles in the project
Step 1: Create a Service Account
- Go to the Google Cloud Console
- Select your project from the project picker in the top navigation bar
- Navigate to IAM & Admin > Service Accounts in the left sidebar
- Click Create Service Account
- Enter a name (e.g.,
landed-bigquery) and description - Click Create and Continue
Step 2: Grant Required IAM Roles
On the "Grant this service account access to project" step, add these roles:
| Role | Purpose |
|---|---|
BigQuery Data Editor (roles/bigquery.dataEditor) | Create and write to tables and datasets |
BigQuery Job User (roles/bigquery.jobUser) | Run load jobs to insert data |
Click Continue, then Done.
Note: If you prefer tighter scoping, you can grant BigQuery Data Editor on a specific dataset instead of the whole project. However, the service account still needs BigQuery Job User at the project level.
Step 3: Create a JSON Key
- In the Service Accounts list, click on the service account you just created
- Go to the Keys tab
- Click Add Key > Create new key
- Select JSON format
- Click Create -- a JSON file will download to your computer
- Keep this file secure. You will paste its contents into Landed.
Step 4: Configure in Landed
In the Landed destination setup form, enter:
| Field | Value |
|---|---|
| Project ID | Your GCP project ID (e.g., my-project-123456). Found in Cloud Console > Dashboard > Project info. |
| Dataset | The BigQuery dataset name (e.g., landed_data). Landed will create it if it doesn't exist. |
| Dataset Location | The region for your dataset (e.g., US, EU, us-central1). Must match your existing dataset's region. Cannot be changed after creation. |
| Service Account JSON | Paste the entire contents of the JSON key file you downloaded. |
Step 5: Network Access
BigQuery is a fully managed service accessible over the internet. No firewall or IP allowlisting is required.
Common Errors
| Error | Cause | Fix |
|---|---|---|
403 Access Denied | Missing IAM roles | Verify the service account has BigQuery Data Editor and BigQuery Job User roles |
404 Dataset not found | Dataset location mismatch | Ensure the dataset location matches the region of your existing dataset |
Invalid JSON | Malformed credentials | Make sure you pasted the entire JSON key file, including the curly braces |
Project not found | Wrong project ID | Use the project ID (e.g., my-project-123456), not the project name or number |
What Landed Creates
Landed will create tables in your dataset with the naming pattern <connector>__<stream> (e.g., stripe__customers, hubspot__contacts). Each table includes metadata columns:
_landed_synced_at-- timestamp of when the record was last synced_landed_active-- whether the record is currently active_landed_deleted_at-- timestamp if the record was deleted at source_landed_source-- the connector that produced this record_landed_sync_id-- unique ID of the sync run