Skip to main content

Prerequisites

  • A Google BigQuery connector already set up in Settings → Connectors
  • Access to the client’s Google Cloud project (to create a bucket and assign IAM roles)
  • A trained Meridian model ready to export results

Step 1 — Create the GCS bucket

Create one Cloud Storage bucket in the client’s GCP project. This bucket is where the pipeline writes model result and scenario artifacts. GCS bucket names are globally unique, so every client gets its own bucket name. By default Interact expects:
{client} is the organization name in lowercase, with spaces, accents and special characters removed. The exact default for your organization is shown in Insights → Settings → MMM.

Step 2 — Grant the service account access

The BigQuery service account stored in Interact is also used to access GCS — no new credentials needed. Grant the service account the following role on the MMM bucket:
1

Find the service account email

In Interact, go to Settings → Connectors, open the BigQuery connector, and copy the service account email shown in the credentials.Alternatively, open the JSON credentials file — the client_email field contains the address.
2

Open bucket permissions in Google Cloud

Go to console.cloud.google.com, navigate to Cloud Storage → Buckets, click on your MMM bucket, and open the Permissions tab.
3

Add the role

Click Grant access, paste the service account email, select the role Storage Object Admin (roles/storage.objectAdmin), and save.
If this role is missing, the Model Results and Scenario Planning pages will fail to list or load any artifacts and show a storage permission error.

Step 3 — Configure MMM in Interact

Open Insights → Settings → MMM. Only organization admins can change these settings.

Model results storage

The top of the settings page shows which bucket Interact reads from, and reminds you which role the service account needs on it.

Labels

Add one label per market or model with Add country / label. Each label has: Both folder fields show their default as a placeholder. Leave them empty to use the default, or type a path to override it.

Data Book fields

These fields only appear, and are only required, when Data Book is on for a label.
Use Validate table after entering your BigQuery details to confirm Interact can connect and read the table before saving.
When Data Book is off for every label, the Data Book page is hidden from the MMM menu and opening it takes you to Model Results.

Who can see MMM

All members of the organization can open the Data Book, Model Results and Scenario Planning pages. When MMM is turned off in Insights → Settings, these pages are unavailable for everyone; admins are taken to the settings page instead.

Step 4 — Run the pipeline and publish results

Run your Meridian Python pipeline. Make sure its GCS bucket setting (gcs_bucket in the pipeline config) matches the bucket shown in the MMM settings. After training completes, the pipeline should export:
Where:
  • {bucket} is the bucket from Step 1 (or your custom bucket)
  • {results_folder} and {scenarios_folder} match what you configured in Step 3 (or their defaults)
  • {timestamp} is a string in YYYYMMDD_HHMMSS format, e.g. 20260511_112201
That’s all. The next time anyone opens the Model Results or Scenario Planning page, Interact will automatically discover the files and display them. No registration step is needed.

Folder structure examples

Examples for the organization Acme, using the default bucket acme-turntwo-mmm:

Results artifact format

The pipeline must produce a valid JSON file. See the sections below for the full schema your pipeline should follow.
All fields are required.
All fields are required. Optional checks (roi_consistency, prior_posterior_shift) must still be present with status: null and empty collections when not computed.
All fields are required.
All arrays must be the same length (n_observations).
The channels object contains one entry per channel (keys matching channels_order). Each entry:Required fields:Optional fields:Validation rules:
  • spend_grid must be strictly increasing
  • spend_grid.length === outcome_grid.length
  • If credible_interval is present, lower and upper must have the same length as spend_grid
  • Recommend 10–20 grid points for a smooth curve in the UI

Troubleshooting