Once you've created an experiment, you need to create multiple experiment arms in order to give the experiment more information about what exactly you're testing.
The ExperimentArm
represents one part of the
comparison you're performing for the experiment. All experiments must always
have exactly one control arm. This arm will be an existing campaign, and is
the basis against which you will compare the other arm. The other arm is called
a treatment arm, and in these arms you will be able to make some changes to
the campaign before beginning the experiment.
The ExperimentArm
also contains the traffic_split
setting. This lets you
specify what percentage of traffic will be directed to each arm of the
experiment. Each arm must specify a traffic split, and the sum of traffic split
values in all arms must add up to 100.
Because of this restriction to traffic split, all experiment arms must be created in the same request:
operations = []
operations << client.operation.create_resource.experiment_arm do |ea|
ea.trial = client.path.experiment(customer_id, experiment_id)
ea.name = 'control arm'
ea.control = true
ea.traffic_split = 40
ea.campaigns << client.path.campaign(customer_id, campaign_id)
end
operations << client.operation.create_resource.experiment_arm do |ea|
ea.trial = client.path.experiment(customer_id, experiment_id)
ea.name = 'treatment arm'
ea.control = false
ea.traffic_split = 60
end
response = client.service.experiment_arm.mutate_experiment_arms(
customer_id: customer_id,
operations: operations,
)
A few key points about the example above:
- The
name
of each arm must be unique within theExperiment
- Exactly one arm must have
control
set to true. All other arms must have it set to false. - The
traffic_split
must add up to 100 across all arms. - Only the control arm specifies
campaigns
. Only one campaign may be specified.
Treatment arms
Once you've created the experiment arms, the treatment arm (that is, the arm
where control
is set to false) will automatically populate its
in_design_campaigns
. You need to fetch that info from
GoogleAdsService
to make changes to the
campaign for the treatment arm.
SELECT experiment_arm.in_design_campaigns
FROM experiment_arm
WHERE experiment_arm.resource_name = "customers/xxxx/experimentArms/xxxx"
Replace the resource name in the above query with the resource name for the treatment arm you just created.
You can treat these in design campaigns as regular campaigns. Make whatever changes you want to test in your experiment to these campaigns. The control campaign will not be affected. Once you schedule the experiment, these changes will be materialized into a real campaign that can serve ads.
These "in design" campaigns are technically draft campaigns. If you want to
find them in GoogleAdsService
, you will need to include the
include_drafts=true
parameter in the
query.
At least one change must be made to the in design campaign before you will be able to schedule the experiment.