Module: meridian.protos

Table of Contents

Top

date_interval.proto

DateInterval

Field Type Description
start_date Date The start date of the interval. Inclusive. Required.
end_date Date The end date of the interval. Exclusive. Required.
tag string A tag to identify the date interval. Optional.

Top

marketing_data.proto

ControlVariable

The control variable. A control variable is not directly being studied but included in the model to account for potential confounding effects on the relationship between the primary independent and dependent variables. Examples: seasonality factors, and macroeconomic factors.

Field Type Description
name string The name of the variable. Required.
value double The value of the variable. Required.

GeoInfo

Field Type Description
geo_id string The ID of the geo location. Required.
population int64 The population of the geo location. Required.

Kpi

A KPI (key performance indicator) can either be revenue directly, or some other metric that indirectly contributes to revenue eventually (e.g. sales units, conversions, impressions, etc) with a multiplier value to roughly translates said non-revenue KPI unit into revenue.

Field Type Description
name string The name of the KPI. Required.
revenue Revenue
non_revenue NonRevenue

Kpi.NonRevenue

A non-revenue type of KPI.

Field Type Description
value double The value of the non-revenue KPI.
revenue_per_kpi double Used to convert non-revenue KPI value to revenue. Needs to be non-negative.

Kpi.Revenue

A revenue KPI.

Field Type Description
value double The revenue value.

MarketingData

A collection of marketing data points for different combinations of geo locations and times, used for model training.

Field Type Description
marketing_data_points MarketingDataPoint The marketing data points. Required.
metadata MarketingDataMetadata Metadata support useful to recreate a model data in its domain language.

MarketingDataMetadata

Metadata support useful to validate data points and recreate a model data in its domain language.

Field Type Description
time_dimensions TimeDimension One or more sets of time coordinates. Required.
geo_dimension GeoDimension The geo dimension of the model. Required.
channel_dimensions ChannelDimension One or more sets of channel names. Required.
control_names string Control variable names.
kpi_type string The KPI type.
non_media_treatment_names string Non-media treatment variable names.

MarketingDataMetadata.ChannelDimension

A named set of channel name coordinates.

Field Type Description
name string A name for this set of channel names in this dimension. Optional.
channels string The channel names in this set's dimensional coordinates. Required.

MarketingDataMetadata.GeoDimension

Field Type Description
geo_coordinates string

MarketingDataMetadata.TimeDimension

A named set of time coordinates.

Field Type Description
name string A name for this set of time coordinates. Optional.
dates Date The coordinates of this time dimension in the model, as dates. Required.

MarketingDataPoint

A data point contains marketing information at specific geo and time.

Field Type Description
geo_info GeoInfo Geo info of this data point. If unset, this data point is aggregated across all geos in the model's geo coordinates.
date_interval DateInterval Date interval covered by this data point. Required. This can represent either a coordinate point, or an aggregation over a time dimension's coordinates. In the case of the latter, this field should be defined with [start, end + interval] value, where start and end are the first and last coordinate in that time dimension, respectively.
control_variables ControlVariable The control variables associated to the marketing at this geo and time.
media_variables MediaVariable The media variables associated to the marketing at this geo and time. If a media variable is from a paid media channel and its media spend breakdown by geo and time is not available (i.e. media spend is aggregated across all geos and times), then there should be a separate MarketingDataPoint message with media_spend where geo_info is unset and date_interval spans the entire time dimension's coordinates. Media channel names should be unique across this group of media variables.
reach_frequency_variables ReachFrequencyVariable The reach and frequency variables associated to the marketing at this geo and time. If a reach and frequency variable is from a paid media channel and its spend breakdown by geo and time is not available (i.e. spend is aggregated across all geos and times), then there should be a separate MarketingDataPoint message with spend where geo_info is unset and date_interval spans the entire time dimension's coordinates. Reach and frequency variable names should be unique across this group of reach and frequency variables.
kpi Kpi The KPI associated to the marketing at this geo and time. Kpi type must be consistent across all data points.
non_media_treatment_variables NonMediaTreatmentVariable Non-media treatment variables associated with this data point.

MediaVariable

The media variable.

Field Type Description
channel_name string The name of the media channel. Required.
scalar_metric ScalarMetric Scalar metric measured on the channel. Required.
media_spend double Spend on the media. If the media variable is a paid media, spend is required.

NonMediaTreatmentVariable

The non-media treatment variable. A marketing activity that is not directly related to media, such as running a promotion, the price of a product, and a change in a product's packaging or design.

Field Type Description
name string The name of the variable. Required.
value double The value of the variable. Required.

ReachFrequencyVariable

The reach and frequency variable.

Field Type Description
channel_name string The name of the reach and frequency variable. Required.
reach int64 The reach value. Required.
average_frequency double The average frequency value. Required.
spend double The spend value. If the reach and frequency variable is a paid media, spend is required.

ScalarMetric

Scalar type of metrics. Ex: Impressions, clicks, costs, and etc.

Field Type Description
name string The name of the scalar metric. Required.
value double The value of the scalar metric. Required.

Top

mmm_kernel.proto

MmmKernel

Field Type Description
marketing_data MarketingData The marketing data that is used to train the marketing mix model and later analyzed by the model.
model Any The details about the model implementation. This should contain a trained marketing mix model along with model-specific information such as model convergence, flags of model usage.

Top

eda_spec.proto

AggregationConfig

A configuration for customizing variable aggregation functions.

Variables not specified will default to SUM.

Field Type Description
control_variables ControlVariablesEntry A map from control variable names to their aggregation functions.
non_media_treatments NonMediaTreatmentsEntry A map from non-media treatment names to their aggregation functions.

AggregationConfig.ControlVariablesEntry

Field Type Description
key string
value AggregationFunction

AggregationConfig.NonMediaTreatmentsEntry

Field Type Description
key string
value AggregationFunction

AggregationFunction

Represents an aggregation function used in EDA.

Field Type Description
function_key string A key that maps to a custom function in the user-provided function registry. The registry allows the EDA spec to be serialized without including the function's code, enabling a more secure deserialization process. Required.

EDASpec

A container for all user-configurable EDA check specs.

Field Type Description
aggregation_config AggregationConfig Configuration for custom variable aggregation functions.
vif_spec VIFSpec Specification for the EDA VIF check.
function_registry FunctionRegistryEntry Lookup table that contains function names mapped to hashed functions used by various aggregation functions.

EDASpec.FunctionRegistryEntry

Field Type Description
key string
value string

VIFSpec

A spec for the EDA VIF check.

Field Type Description
geo_threshold double The threshold for geo-level VIF. (Python default: 1000.0)
overall_threshold double The threshold for overall VIF. (Python default: 1000.0)
national_threshold double The threshold for national VIF. (Python default: 1000.0)

Top

meridian_model.proto

AdstockDecayByChannel

Specifies the adstock decay function for each channel.

Field Type Description
channel_decays ChannelDecaysEntry A map where keys are channel names and values are the adstock decay function to use for that channel. Allowed values are 'geometric' or 'binomial'.

AdstockDecayByChannel.ChannelDecaysEntry

Field Type Description
key string
value string

Distribution

Represents Tensorflow statistical distributions that are used in user priors in a Meridian model. All fields are required unless otherwise specified. See: https://www.tensorflow.org/probability/api_docs/python/tfp/distributions

Field Type Description
name string The canonical name of this distribution in the Meridian model framework.
batch_broadcast BatchBroadcast
deterministic Deterministic
half_normal HalfNormal
log_normal LogNormal
normal Normal
transformed Transformed
truncated_normal TruncatedNormal
uniform Uniform
beta Beta

Distribution.BatchBroadcast

A distribution that broadcasts an underlying distribution's batch shape.

Field Type Description
distribution Distribution The underlying (pre-broadcast) distribution.
batch_shape TensorShapeProto The shape of the broadcast distribution.

Distribution.Beta

A Beta distribution with alpha and beta parameters. See: https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/Beta

Field Type Description
alpha double The alpha parameter of the underlying Beta distribution.
beta double The beta parameter of the underlying Beta distribution.

Distribution.Bijector

Represents Tensorflow bijectors. All fields are required unless otherwise specified. See: https://www.tensorflow.org/probability/api_docs/python/tfp/bijectors

Field Type Description
name string The name of this bijector.
shift Shift
scale Scale
reciprocal Reciprocal

Distribution.Bijector.Reciprocal

A bijector that reciprocates the input.

Distribution.Bijector.Scale

A bijector that scales the input by a scalar or log scale.

Field Type Description
scales double The scale to apply to the input. Should be not be set if log_scales is set.
log_scales double The log scale to apply to the input. Should be not be set if scales is set.

Distribution.Bijector.Shift

A bijector that shifts the input by a scalar.

Field Type Description
shifts double The shift to apply to the input.

Distribution.Deterministic

A scalar deterministic distribution on the real line.

Field Type Description
locs double The batch of points on which this distribution is supported.

Distribution.HalfNormal

A half-normal distribution with scales.

Field Type Description
scales double The scales of the distribution.

Distribution.LogNormal

A log-normal distribution with locs (means) and scales (stddevs).

Field Type Description
locs double The means of the underlying Normal distribution.
scales double The standard deviations of the underlying normal distribution.

Distribution.Normal

A normal distribution with locs (means) and scales (stddevs).

Field Type Description
locs double The means of the underlying Normal distribution.
scales double The standard deviations of the underlying normal distribution. Must contain only positive values.

Distribution.Transformed

A distribution that is transformed by a bijector.

Field Type Description
distribution Distribution The underlying (pre-transformed) distribution.
bijector Bijector The transforming bijector.

Distribution.TruncatedNormal

A truncated Normal distribution, bounded between low and high.

Field Type Description
locs double The means of the underlying Normal distribution.
scales double The standard deviations of the underlying Normal distribution.
low double Lower bound of the distribution's support. Must be less than high.
high double Upper bound of the distribution's support. Must be greater than low.
lows double Lower bounds of the distribution's support. Each value in lows must be less than the corresponding value in highs.
highs double Upper bounds of the distribution's support. Each value in highs must be greater than the corresponding value in lows.

Distribution.Uniform

A uniform distribution on the real line.

Field Type Description
low double Lower boundary of the output interval. Must be less than high.
high double Upper boundary of the output interval. Must be greater than low.
lows double Lower boundaries of the output interval. Each value in lows must be less than the corresponding value in highs.
highs double Upper boundaries of the output interval. Each value in highs must be greater than the corresponding value in lows.

Hyperparameters

Hyperparameters for the MMM model.

Field Type Description
media_effects_dist MediaEffectsDistribution Specifies the distribution of media random effects across geos. This hyperparameter is ignored in a national-level model.
hill_before_adstock bool Indicates whether to apply the Hill function before Adstock function. This hyperparameter does not apply to RF channels.
max_lag uint32 The maximum number of lag periods (>= 0) to include in the Adstock calculation. If unset, then max lag is interpreted as infinite.
unique_sigma_for_each_geo bool Indicates whether to use a unique residual variance for each geo. If False, then a single residual variance is used for all geos.
paid_media_prior_type PaidMediaPriorType Prior type for the media coefficients. If paid_media_prior_type is 'coefficient', then the model usesbeta_[m
media_prior_type PaidMediaPriorType Prior type for the (paid, non-rf) media coefficients. If media_prior_type is 'coefficient', then the model usesbeta_mdistribution in the priors. Ifmedia_prior_type' is 'roi' or 'mroi', then the roi_m or mroi_m is used, respectively. If media_prior_type is 'contribution', then the contribution_m is used.
rf_prior_type PaidMediaPriorType Prior type for the (paid) rf coefficients. If rf_prior_type is 'coefficient', then the model usesbeta_rfdistribution in the priors. Ifrfprior_type' is 'roi' or 'mroi', then the roi_rf or mroi_rf is used, respectively. If rf_prior_type is 'contribution', then the contribution_rf is used.
organic_media_prior_type NonPaidTreatmentsPriorType Prior type for the organic media coefficients. If organic_media_prior_type is 'coefficient', then the model usesbeta_omdistribution in the priors. Iforganic_media_prior_typeis'contribution', then thecontribution_om` is used.
organic_rf_prior_type NonPaidTreatmentsPriorType Prior type for the organic rf coefficients. If organic_rf_prior_type is 'coefficient', then the model usesbeta_orfdistribution in the priors. Iforganic_rf_prior_typeis'contribution', then thecontribution_orf` is used.
non_media_treatments_prior_type NonPaidTreatmentsPriorType Prior type for the non-media treatments coefficients. If non_media_treatments_prior_type is 'coefficient', then the model usesgamma_ndistribution in the priors. Ifnon_media_treatments_prior_typeis'contribution', then thecontribution_n` is used.
roi_calibration_period TensorProto A boolean tensor in the shape (n_media_times, n_media_channels). This indicates the subset of time coordinates in the model for media ROI calibration. If unset, all time coordinates are used for media ROI calibration.
rf_roi_calibration_period TensorProto A boolean tensor in the shape (n_media_times, n_rf_channels). This indicates the subset of time coordinates in the model for reach and frequency ROI calibration. If unset, all time coordinates are used for R&F ROI calibration.
knots int32 A (single-value) integer or a list of integers, indicating the knots used to estimate time effects. If provided as a list of integers, its indices correspond to the indices of the time coordinates in the model. If provided as a single integer, then there are knots with locations equally spaced across time periods. If unset, then the number of knots used is equal to the number of time periods in the case of a geo model (i.e. each time period has its own regression coefficient). If unset in a national model, then the model uses 1 as the number of knots.
enable_aks bool A boolean indicating whether to use the Automatic Knot Selection algorithm to select optimal number of knots for running the model instead of the default 1 for national and n_times for non-national models. If this is set to true and the knots arg is provided, then an error will be raised when deserialized back to ModelSpec. Default: False.
baseline_geo_int_deprecated double Deprecated. Use baseline_geo_int instead.
baseline_geo_int int32 Integer representation of baseline geo.
baseline_geo_string string
holdout_id TensorProto A boolean tensor in the shape (n_geos, n_times) for a geo-level model or (n_times,) for a national model. This indicates which observations are part of the holdout sample, which are excluded from the training sample. For more details on the holdout sample, see: meridian.model.spec.ModelSpec
holdout_ratio double The ratio of holdout data to use for the goodness of fit check. Used as inputs and this will be implemented in training module right before feeding into Meridian. The holdout only applied to date as of Q1 2025.
control_population_scaling_id TensorProto A boolean tensor in the shape (n_controls,). This indicates the control variables for which the control value will be scaled by population. If unset, no control variables are scaled by population.
non_media_population_scaling_id TensorProto A boolean tensor in the shape (n_non_media_channels,). This indicates the non-media treatments channels for which the value will be scaled by population. If unset, no non-media treatments channels are scaled by population.
global_adstock_decay string The global adstock decay function to use for all channels. Allowed values are 'geometric' or 'binomial'.
adstock_decay_by_channel AdstockDecayByChannel Channel-specific adstock decay functions. Defaults to 'geometric' for channels not specified in the map.
non_media_baseline_values NonMediaBaselineValue A list with the shape (n_non_media_channels,). Each element is either a float (which means that the fixed value will be used as baseline for the given channel) or one of the function strings "min" or "max" (which mean that the global minimum or maximum value will be used as baseline for the scaled values of the given non_media treatments channel). If None, the minimum value is used as baseline for each non-media treatments channel. This attribute is used as the default value for the corresponding argument to Analyzer methods.

InferenceData

InferenceData data contains none, only prior, or both prior and posterior sampled parameters and their sampling states and trace from fitting the model. https://python.arviz.org/en/stable/api/generated/arviz.InferenceData.html

All fields inside this container are xarray.Datasets that are byte-serialized in NetCDF format. See: https://docs.xarray.dev/en/stable/user-guide/io.html

Field Type Description
prior bytes Sampled prior parameters as an xarray.Dataset serialized in NetCDF4 format.
posterior bytes Sampled posterior parameters as an xarray.Dataset serialized in NetCDF4 format.
auxiliary_data AuxiliaryDataEntry Contains "sample_stats", "trace", and other auxiliary data that are useful for debugging. "sample_stats" and "trace" specifically are available when posterior is available.

InferenceData.AuxiliaryDataEntry

Field Type Description
key string
value bytes

McmcSamplingTrace

The trace of MCMC sampling.

Field Type Description
num_chains uint32
num_draws uint32
step_size TensorProto
tune TensorProto
target_log_prob TensorProto
diverging TensorProto
accept_ratio TensorProto
n_steps TensorProto
is_accepted TensorProto

MeridianModel

Meridian model schema.

Field Type Description
model_id string The unique identifier of this model.
model_version string The semantic version of the Meridian library used to generate this model.
hyperparameters Hyperparameters
prior_distributions PriorDistributions
prior_tfp_distributions PriorTfpDistributions
inference_data InferenceData Inference data contains sampled priors and posteriors.
convergence_info ModelConvergence Contains the information about model convergence status.
eda_spec EDASpec User-configurable EDA check specs.

ModelConvergence

Field Type Description
mcmc_sampling_trace McmcSamplingTrace
convergence bool Convergence heuristic check for the MCMC sampling.
r_hat_diagnostic RHatDiagnostic

NonMediaBaselineValue

A container for non-media baseline function or float values. If float, then that value is used as the baseline for all non-media channels. Otherwise, the min or max value is used as the baseline for the corresponding non-media channel.

Field Type Description
value float
function_value NonMediaBaselineFunction

Parameter

A named tensor parameter.

Field Type Description
name string
tensor TensorProto

PriorDistributions

A container for user prior distribution parameters in a Meridian model. These distributions are in their mathematical forms when representing user priors in the model spec and are part of the user input in a pre-fitted model.

After priors sampling, these distributions are broadcast and should all contain Distribution.BatchBroadcast types.

All parameter distributions are optional. If a distribution is left unspecified for a given parameter, Meridian will select its default prior distribution.

See: meridian.model.prior_distribution module. See: https://developers.google.com/meridian/docs/advanced-modeling/default-prior-distributions

Field Type Description
knot_values Distribution
tau_g_excl_baseline Distribution
beta_m Distribution
beta_rf Distribution
eta_m Distribution
eta_rf Distribution
gamma_c Distribution
xi_c Distribution
alpha_m Distribution
alpha_rf Distribution
ec_m Distribution
ec_rf Distribution
slope_m Distribution
slope_rf Distribution
sigma Distribution
roi_m Distribution
roi_rf Distribution
mroi_m Distribution
mroi_rf Distribution
contribution_m Distribution
contribution_rf Distribution
contribution_om Distribution
contribution_orf Distribution
contribution_n Distribution
beta_om Distribution
beta_orf Distribution
eta_om Distribution
eta_orf Distribution
gamma_n Distribution
xi_n Distribution
alpha_om Distribution
alpha_orf Distribution
ec_om Distribution
ec_orf Distribution
slope_om Distribution
slope_orf Distribution

PriorTfpDistributions

A container for user prior distribution parameters in a Meridian model. These distributions are in their mathematical forms when representing user priors in the model spec and are part of the user input in a pre-fitted model.

After priors sampling, these distributions are broadcast and should all contain Distribution.BatchBroadcast types.

All parameter distributions are optional. If a distribution is left unspecified for a given parameter, Meridian will select its default prior distribution.

See: meridian.model.prior_distribution module. See: https://developers.google.com/meridian/docs/advanced-modeling/default-prior-distributions

Field Type Description
knot_values TfpDistribution
tau_g_excl_baseline TfpDistribution
beta_m TfpDistribution
beta_rf TfpDistribution
eta_m TfpDistribution
eta_rf TfpDistribution
gamma_c TfpDistribution
xi_c TfpDistribution
alpha_m TfpDistribution
alpha_rf TfpDistribution
ec_m TfpDistribution
ec_rf TfpDistribution
slope_m TfpDistribution
slope_rf TfpDistribution
sigma TfpDistribution
roi_m TfpDistribution
roi_rf TfpDistribution
mroi_m TfpDistribution
mroi_rf TfpDistribution
contribution_m TfpDistribution
contribution_rf TfpDistribution
contribution_om TfpDistribution
contribution_orf TfpDistribution
contribution_n TfpDistribution
beta_om TfpDistribution
beta_orf TfpDistribution
eta_om TfpDistribution
eta_orf TfpDistribution
gamma_n TfpDistribution
xi_n TfpDistribution
alpha_om TfpDistribution
alpha_orf TfpDistribution
ec_om TfpDistribution
ec_orf TfpDistribution
slope_om TfpDistribution
slope_orf TfpDistribution
function_registry FunctionRegistryEntry Lookup table that contains function names mapped to hashed functions used by various tfp.distributions.

PriorTfpDistributions.FunctionRegistryEntry

Field Type Description
key string
value string

RHatDiagnostic

Diagnostic of MCMC sampling by computing r_hat value for each parameters.

Field Type Description
parameter_r_hats Parameter The r-hat values of model parameters. Current list of parameters: (see InferenceData.parameters above)

TfpBijector

Represents a constructor parameter for a tfp.bijectors class. All fields are required unless otherwise specified. See: https://www.tensorflow.org/probability/api_docs/python/tfp/bijectors

Field Type Description
bijector_type string A tfp.bijectors class name. e.g. "Shift", "Scale", etc.
parameters ParametersEntry Parameters for the specific bijector type.

TfpBijector.ParametersEntry

Field Type Description
key string
value TfpParameterValue

TfpDistribution

Represents TensorFlow statistical distribution spec that are used in user priors in a Meridian model. All fields are required unless otherwise specified. See: https://www.tensorflow.org/probability/api_docs/python/tfp/distributions

Field Type Description
distribution_type string A tfp.distributions class name. e.g. "Normal", "TransformedDistribution", etc.
parameters ParametersEntry Parameters for the specific distribution type.

TfpDistribution.ParametersEntry

Field Type Description
key string
value TfpParameterValue

TfpParameterValue

Represents a constructor parameter for a tfp.distributions class.

Field Type Description
scalar_value float Primitive distribution parameter value types.
int_value int32
bool_value bool
string_value string
none_value bool
distribution_value TfpDistribution For nested distribution parameter (e.g. for TransformedDistribution)
bijector_value TfpBijector For nested bijector parameter (e.g. for TransformedDistribution)
list_value List For a parameter that takes a list of parameters.
dict_value Dict For a parameter that takes a dict.
tensor_value TensorProto For a parameter that takes a Tensor.
fully_reparameterized bool Whether the distribution should be fully reparameterized. See: https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/ReparameterizationType
function_param FunctionParam For a parameter that takes a function.

TfpParameterValue.Dict

For parameter values that are dicts.

Field Type Description
value_map ValueMapEntry

TfpParameterValue.Dict.ValueMapEntry

Field Type Description
key string
value TfpParameterValue

TfpParameterValue.FunctionParam

For parameter values that are functions.

Field Type Description
function_key string A key that maps to a custom function in the user-provided function registry. The registry allows the model to be serialized without including the function's code, enabling a more secure deserialization process.
uses_default bool Whether the Distribution uses the default function implementation.

TfpParameterValue.List

For parameter values that are lists or tuples.

Field Type Description
values TfpParameterValue

MediaEffectsDistribution

Possible distribution types for media random effects across geos.

Name Number Description
MEDIA_EFFECTS_DISTRIBUTION_UNSPECIFIED 0
NORMAL 1
LOG_NORMAL 2

NonMediaBaselineValue.NonMediaBaselineFunction

Possible non-media baseline function values. If used, then the min or max value of the non-media treatment is used as the baseline for the corresponding non-media channel instead of a fixed, user-specified value.

Name Number Description
NON_MEDIA_BASELINE_FUNCTION_UNSPECIFIED 0
MIN 1
MAX 2

NonPaidTreatmentsPriorType

Possible non-paid treatments prior types.

Name Number Description
NON_PAID_TREATMENTS_PRIOR_TYPE_UNSPECIFIED 0
NON_PAID_TREATMENTS_PRIOR_TYPE_COEFFICIENT 1
NON_PAID_TREATMENTS_PRIOR_TYPE_CONTRIBUTION 2

PaidMediaPriorType

Possible paid media prior types.

Name Number Description
PAID_MEDIA_PRIOR_TYPE_UNSPECIFIED 0
ROI 1
MROI 2
COEFFICIENT 3
CONTRIBUTION 4

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-11-10 UTC.