इंट्रा-कैंपेन एक्सपेरिमेंट का इस्तेमाल, किसी एक कैंपेन में किसी खास सुविधा को टेस्ट करने के लिए किया जाता है. सिस्टम से मैनेज किए जाने वाले एक्सपेरिमेंट में, ट्रैफ़िक को कंट्रोल और ट्रीटमेंट कैंपेन के बीच बांटा जाता है. हालांकि, इंट्रा-कैंपेन एक्सपेरिमेंट में ट्रैफ़िक को कैंपेन के अंदर ही बांटा जाता है. यह इस आधार पर तय होता है कि सुविधा चालू है या नहीं.
यह वर्कफ़्लो, ExperimentType की इन वैल्यू के लिए काम करता है:
ADOPT_AI_MAX- सर्च कैंपेन पर, एआई मैक्स की सुविधाओं के असर की जांच करता है.
ADOPT_BROAD_MATCH_KEYWORDS- सर्च कैंपेन पर, ब्रॉड मैच वाले कीवर्ड के असर की जांच करता है.
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION- इसका इस्तेमाल खास तौर पर, परफ़ॉर्मेंस मैक्स कैंपेन की सुविधाओं को टेस्ट करने के लिए किया जाता है. जैसे, पसंद के मुताबिक टेक्स्ट बनाने की सुविधा और फ़ाइनल यूआरएल एक्सपैंशन. इससे Google के एआई को काम के लैंडिंग पेजों पर ट्रैफ़िक भेजने और सर्च क्वेरी से बेहतर तरीके से मैच करने के लिए, टेक्स्ट ऐसेट जनरेट करने की अनुमति मिलती है.
सेटअप
Experimentको तय करें (statusकोENABLEDपर सेट करके). इसके लिए, एक्सपेरिमेंट का टाइप, कंट्रोलExperimentArm, और ट्रीटमेंटExperimentArmदें:ADOPT_AI_MAXऔरADOPT_BROAD_MATCH_KEYWORDSके लिए, कंट्रोल ग्रुप और ट्रीटमेंट ग्रुप, दोनों कोcampaignsमें एक ही कैंपेन का रेफ़रंस देना होगा.PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSIONके लिए, सिर्फ़ ट्रीटमेंट ग्रुप मेंcampaignsमें परफ़ॉर्मेंस मैक्स कैंपेन की जानकारी दी जाती है.campaignsको कंट्रोल ग्रुप पर सेट न करें.
ADOPT_AI_MAXके लिए, फ़ील्ड मास्क के साथCampaignOperationअपडेट बनाएं, ताकिai_max_setting.enable_ai_maxको चालू किया जा सके औरasset_automation_settingsको कॉन्फ़िगर किया जा सके.GoogleAdsService.Mutateअनुरोध भेजें. इसमें एक्सपेरिमेंट और एक्सपेरिमेंट ग्रुप बनाने के लिए, म्यूटेट ऑपरेशन शामिल करें. साथ ही,ADOPT_AI_MAXके लिए, कैंपेन पर टेस्ट की सुविधा चालू करें.
ADOPT_AI_MAX और ADOPT_BROAD_MATCH_KEYWORDS के लिए, कैंपेन में ट्रैफ़िक को बराबर (50/50) बांटा जाना चाहिए, ताकि 50% ट्रैफ़िक को चालू की गई सुविधा (ट्रीटमेंट ग्रुप) और 50% ट्रैफ़िक को बंद की गई सुविधा (कंट्रोल ग्रुप) दिखाई जाए.
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION में, ट्रैफ़िक को कस्टम तरीके से बांटा जा सकता है.
हालांकि, इसका कुल योग 100 होना चाहिए.
Java
// Create the experiment resource name using a temporary ID. String experimentResourceName = ResourceNames.experiment(customerId, -1L); // Create the experiment. Experiment experiment = Experiment.newBuilder() .setResourceName(experimentResourceName) .setName("ADOPT_AI_MAX Experiment #" + UUID.randomUUID()) .setType(ExperimentType.ADOPT_AI_MAX) .build(); MutateOperation experimentOperation = MutateOperation.newBuilder() .setExperimentOperation(ExperimentOperation.newBuilder().setCreate(experiment).build()) .build(); // Create the control arm. Both arms in an intra-campaign experiment reference the same base // campaign. ExperimentArm controlArm = ExperimentArm.newBuilder() .setExperiment(experimentResourceName) .setName("Control Arm") .setControl(true) .setTrafficSplit(50) .addCampaigns(ResourceNames.campaign(customerId, campaignId)) .build(); MutateOperation controlArmOperation = MutateOperation.newBuilder() .setExperimentArmOperation( ExperimentArmOperation.newBuilder().setCreate(controlArm).build()) .build(); // Create the treatment arm. ExperimentArm treatmentArm = ExperimentArm.newBuilder() .setExperiment(experimentResourceName) .setName("Treatment Arm") .setControl(false) .setTrafficSplit(50) .addCampaigns(ResourceNames.campaign(customerId, campaignId)) .build(); MutateOperation treatmentArmOperation = MutateOperation.newBuilder() .setExperimentArmOperation( ExperimentArmOperation.newBuilder().setCreate(treatmentArm).build()) .build(); // Create a campaign operation with an update mask to enable AI Max and configure asset // automation settings. // Note: For intra-campaign experiments, these settings are applied to the base campaign but are // only active for the treatment traffic split. Campaign campaign = Campaign.newBuilder() .setResourceName(ResourceNames.campaign(customerId, campaignId)) .setAiMaxSetting(AiMaxSetting.newBuilder().setEnableAiMax(true).build()) .addAssetAutomationSettings( AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN) .build()) .addAssetAutomationSettings( AssetAutomationSetting.newBuilder() .setAssetAutomationType( AssetAutomationType.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN) .build()) .build(); CampaignOperation campaignOp = CampaignOperation.newBuilder() .setUpdate(campaign) .setUpdateMask(FieldMasks.allSetFieldsOf(campaign)) .build(); MutateOperation campaignMutateOperation = MutateOperation.newBuilder().setCampaignOperation(campaignOp).build(); // Send all mutate operations in a single Mutate request. List<MutateOperation> mutateOperations = ImmutableList.of( experimentOperation, controlArmOperation, treatmentArmOperation, campaignMutateOperation); try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { MutateGoogleAdsRequest request = MutateGoogleAdsRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .addAllMutateOperations(mutateOperations) .build(); MutateGoogleAdsResponse response = googleAdsServiceClient.mutate(request);
C#
// Create the experiment resource name using a temporary ID. string experimentResourceName = ResourceNames.Experiment(customerId, -1); // Create the experiment. MutateOperation experimentOperation = new MutateOperation() { ExperimentOperation = new ExperimentOperation() { Create = new Experiment() { ResourceName = experimentResourceName, Name = $"ADOPT_AI_MAX Experiment #{ExampleUtilities.GetRandomString()}", Type = ExperimentType.AdoptAiMax } } }; // Create the control arm. Both arms in an intra-campaign experiment // reference the same base campaign. MutateOperation controlArmOperation = new MutateOperation() { ExperimentArmOperation = new ExperimentArmOperation() { Create = new ExperimentArm() { Experiment = experimentResourceName, Name = "Control Arm", Control = true, TrafficSplit = 50, Campaigns = { ResourceNames.Campaign(customerId, campaignId) } } } }; // Create the treatment arm. MutateOperation treatmentArmOperation = new MutateOperation() { ExperimentArmOperation = new ExperimentArmOperation() { Create = new ExperimentArm() { Experiment = experimentResourceName, Name = "Treatment Arm", Control = false, TrafficSplit = 50, Campaigns = { ResourceNames.Campaign(customerId, campaignId) } } } }; // Create a campaign operation with an update mask to enable AI Max and // configure asset automation settings. // Note: For intra-campaign experiments, these settings are applied to the // base campaign but are only active for the treatment traffic split. Campaign campaign = new Campaign() { ResourceName = ResourceNames.Campaign(customerId, campaignId), AiMaxSetting = new Campaign.Types.AiMaxSetting { EnableAiMax = true } }; campaign.AssetAutomationSettings.Add(new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.TextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }); campaign.AssetAutomationSettings.Add(new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.FinalUrlExpansionTextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }); MutateOperation campaignOperation = new MutateOperation() { CampaignOperation = new CampaignOperation() { Update = campaign, UpdateMask = FieldMasks.AllSetFieldsOf(campaign) } }; // Send all mutate operations in a single Mutate request. List<MutateOperation> mutateOperations = new List<MutateOperation> { experimentOperation, controlArmOperation, treatmentArmOperation, campaignOperation }; MutateGoogleAdsResponse response = googleAdsService.Mutate( customerId.ToString(), mutateOperations);
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
# Create the experiment resource name using a temporary ID. experiment_resource_name = googleads_service.experiment_path( customer_id, "-1" ) # Create the experiment. experiment_operation = client.get_type("MutateOperation") experiment = experiment_operation.experiment_operation.create experiment.resource_name = experiment_resource_name experiment.name = f"ADOPT_AI_MAX Experiment #{uuid4()}" experiment.type_ = client.enums.ExperimentTypeEnum.ADOPT_AI_MAX # Create the control arm. Both arms in an intra-campaign experiment # reference the same base campaign. control_arm_operation = client.get_type("MutateOperation") control_arm = control_arm_operation.experiment_arm_operation.create control_arm.experiment = experiment_resource_name control_arm.name = "Control Arm" control_arm.control = True control_arm.traffic_split = 50 control_arm.campaigns.append( googleads_service.campaign_path(customer_id, campaign_id) ) # Create the treatment arm. treatment_arm_operation = client.get_type("MutateOperation") treatment_arm = treatment_arm_operation.experiment_arm_operation.create treatment_arm.experiment = experiment_resource_name treatment_arm.name = "Treatment Arm" treatment_arm.control = False treatment_arm.traffic_split = 50 treatment_arm.campaigns.append( googleads_service.campaign_path(customer_id, campaign_id) ) # Create a campaign operation with an update mask to enable AI Max and # configure asset automation settings. # Note: For intra-campaign experiments, these settings are applied to the # base campaign but are only active for the treatment traffic split. campaign_operation = client.get_type("MutateOperation") campaign = campaign_operation.campaign_operation.update campaign.resource_name = googleads_service.campaign_path( customer_id, campaign_id ) campaign.ai_max_setting.enable_ai_max = True for asset_automation_type_enum in [ client.enums.AssetAutomationTypeEnum.TEXT_ASSET_AUTOMATION, client.enums.AssetAutomationTypeEnum.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION, ]: asset_automation_setting = client.get_type( "Campaign" ).AssetAutomationSetting() asset_automation_setting.asset_automation_type = ( asset_automation_type_enum ) asset_automation_setting.asset_automation_status = ( client.enums.AssetAutomationStatusEnum.OPTED_IN ) campaign.asset_automation_settings.append(asset_automation_setting) client.copy_from( campaign_operation.campaign_operation.update_mask, protobuf_helpers.field_mask(None, campaign._pb), ) # Send all mutate operations in a single Mutate request. mutate_operations = [ experiment_operation, control_arm_operation, treatment_arm_operation, campaign_operation, ] response = googleads_service.mutate( customer_id=customer_id, mutate_operations=mutate_operations, )
Ruby
# Create the experiment resource name using a temporary ID. experiment_resource_name = client.path.experiment(customer_id, "-1") # Create the experiment. experiment_operation = client.operation.mutate do |m| m.experiment_operation = client.operation.create_resource.experiment do |e| e.resource_name = experiment_resource_name e.name = "ADOPT_AI_MAX Experiment #{(Time.new.to_f * 1000).to_i}" e.type = :ADOPT_AI_MAX end end # Create the control arm. Both arms in an intra-campaign experiment # reference the same base campaign. campaign_resource_name = client.path.campaign(customer_id, campaign_id) control_arm_operation = client.operation.mutate do |m| m.experiment_arm_operation = client.operation.create_resource.experiment_arm do |arm| arm.experiment = experiment_resource_name arm.name = "Control Arm" arm.control = true arm.traffic_split = 50 arm.campaigns << campaign_resource_name end end # Create the treatment arm. treatment_arm_operation = client.operation.mutate do |m| m.experiment_arm_operation = client.operation.create_resource.experiment_arm do |arm| arm.experiment = experiment_resource_name arm.name = "Treatment Arm" arm.control = false arm.traffic_split = 50 arm.campaigns << campaign_resource_name end end # Create a campaign operation with an update mask to enable AI Max and # configure asset automation settings. # Note: For intra-campaign experiments, these settings are applied to the # base campaign but are only active for the treatment traffic split. campaign_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.update_resource.campaign(campaign_resource_name) do |c| c.ai_max_setting = client.resource.ai_max_setting do |aims| aims.enable_ai_max = true end [:TEXT_ASSET_AUTOMATION, :FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION].each do |type| c.asset_automation_settings << client.resource.asset_automation_setting do |setting| setting.asset_automation_type = type setting.asset_automation_status = :OPTED_IN end end end end # Send all mutate operations in a single Mutate request. mutate_operations = [ experiment_operation, control_arm_operation, treatment_arm_operation, campaign_operation, ] response = client.service.google_ads.mutate( customer_id: customer_id, mutate_operations: mutate_operations, )
Perl
This example is not yet available in Perl; you can take a look at the other languages.
curl
एक्सपेरिमेंट की रिपोर्ट
कंट्रोल और ट्रीटमेंट ग्रुप का ट्रैफ़िक एक ही कैंपेन में मिला होता है. इसलिए, कंट्रोल और ट्रीटमेंट ग्रुप के बीच मेट्रिक की तुलना करने के लिए, आपको डायरेक्ट एक्सपेरिमेंट रिपोर्टिंग का इस्तेमाल करना होगा. कैंपेन-लेवल की स्टैंडर्ड रिपोर्टिंग में, सिर्फ़ पूरे कैंपेन की एग्रीगेट की गई मेट्रिक दिखती हैं. इसमें दोनों ग्रुप के बीच अंतर नहीं किया जा सकता.
यहां दी गई GAQL क्वेरी, पिछले 30 दिनों में ADOPT_AI_MAX
कैंपेन में किए गए एक्सपेरिमेंट के लिए, क्लिक के आंकड़े हासिल करती है:
SELECT
experiment.resource_name,
experiment.name,
metrics.clicks,
metrics.control_clicks,
metrics.clicks_point_estimate,
metrics.clicks_p_value
FROM experiment
WHERE segments.date DURING LAST_30_DAYS
AND experiment.type = 'ADOPT_AI_MAX'
एक्सपेरिमेंट को प्रमोट करना, ग्रैजुएट करना या खत्म करना
नतीजों का आकलन करने के बाद, ExperimentService का इस्तेमाल करके एक्सपेरिमेंट को पूरा किया जा सकता है:
- खत्म करें: अगर आपको नतीजों से संतुष्टि नहीं है, तो
EndExperimentका इस्तेमाल करें. यह सुविधा बंद हो जाती है और कैंपेन, एक्सपेरिमेंट वाली सुविधा के बिना सभी ट्रैफ़िक को विज्ञापन दिखाना शुरू कर देता है. यह एक सिंक्रोनस ऑपरेशन है. - प्रमोट करें (
ADOPT_AI_MAXऔरADOPT_BROAD_MATCH_KEYWORDS): अगर आपको Search Network में मौजूद कैंपेन के अंदर किए गए एक्सपेरिमेंट के नतीजों से संतुष्टि है, तोPromoteExperimentका इस्तेमाल करें. इससे, एक्सपेरिमेंट के लिए किया गया बदलाव, कैंपेन की नई स्थायी स्थिति के तौर पर लागू हो जाता है. यह एक एसिंक्रोनस ऑपरेशन है. ज़्यादा जानकारी के लिए, एसिंक्रोनस गड़बड़ियां देखें. - ग्रेजुएट (
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION):PromoteExperiment,PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSIONके लिए काम नहीं करता. इसके बजाय,GraduateExperimentका इस्तेमाल करके, ट्रीटमेंट ग्रुप की पसंद के मुताबिक टेक्स्ट बनाने की सुविधा और फ़ाइनल यूआरएल एक्सपैंशन की सेटिंग को मौजूदा परफ़ॉर्मेंस मैक्स कैंपेन में लागू करें.campaign_budget_mappingsमेंCampaignBudgetMappingएंट्री शामिल करें. इसमें ट्रीटमेंट ग्रुप के कैंपेन (experiment_campaign) और उसके बजट (campaign_budget) की जानकारी दें. यह एक सिंक्रोनस कार्रवाई है. (GraduateExperimentका इस्तेमालADOPT_AI_MAXयाADOPT_BROAD_MATCH_KEYWORDSके लिए नहीं किया जा सकता, क्योंकि ग्रैजुएट करने के लिए कोई अलग ट्रीटमेंट कैंपेन नहीं है.)