Stay organized with collections
Save and categorize content based on your preferences.
To serve ads for your Things to do campaign, you must create an
AdGroup with at least one ad in the ad group. As
shown later, a campaign supports only an ad group of the
TRAVEL_ADS type,
which you can set in the type field.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-03 UTC."],[[["\u003cp\u003eTo run Things to do campaign ads, you need to create an \u003ccode\u003eAdGroup\u003c/code\u003e containing at least one ad.\u003c/p\u003e\n"],["\u003cp\u003eThings to do campaigns exclusively support ad groups of the \u003ccode\u003eTRAVEL_ADS\u003c/code\u003e type, which must be specified in the \u003ccode\u003etype\u003c/code\u003e field.\u003c/p\u003e\n"],["\u003cp\u003eThe provided code snippets demonstrate how to create an ad group with the \u003ccode\u003eTRAVEL_ADS\u003c/code\u003e type using the Google Ads API in various programming languages.\u003c/p\u003e\n"]]],[],null,["# Create a Things to do ad group\n\nTo serve ads for your Things to do campaign, you must create an\n[`AdGroup`](/google-ads/api/reference/rpc/v21/AdGroup) with at least one ad in the ad group. As\nshown later, a campaign supports only an ad group of the\n[`TRAVEL_ADS`](/google-ads/api/reference/rpc/v21/AdGroupTypeEnum.AdGroupType#travel_ads) type,\nwhich you can set in the [`type`](/google-ads/api/reference/rpc/v21/AdGroup#type) field.\n\n\n### Java\n\n```java\nprivate String addAdGroup(\n GoogleAdsClient googleAdsClient, long customerId, String campaignResourceName) {\n // Creates an ad group.\n AdGroup adGroup =\n AdGroup.newBuilder()\n .setName(\"Earth to Mars Cruises #\" + getPrintableDateTime())\n .setCampaign(campaignResourceName)\n // Sets the ad group type to TRAVEL_ADS. This cannot be set to other types.\n .setType(AdGroupType.TRAVEL_ADS)\n .setStatus(AdGroupStatus.ENABLED)\n .build();\n\n // Creates an ad group operation.\n AdGroupOperation operation = AdGroupOperation.newBuilder().setCreate(adGroup).build();\n\n // Issues a mutate request to add an ad group.\n try (AdGroupServiceClient adGroupServiceClient =\n googleAdsClient.getLatestVersion().createAdGroupServiceClient()) {\n MutateAdGroupResult mutateAdGroupResult =\n adGroupServiceClient\n .mutateAdGroups(Long.toString(customerId), Collections.singletonList(operation))\n .getResults(0);\n System.out.printf(\n \"Added an ad group with resource name: '%s'%n\", mutateAdGroupResult.getResourceName());\n return mutateAdGroupResult.getResourceName();\n }\n}https://github.com/googleads/google-ads-java/blob/3c3c1041c2a0ab81553e3b2a79876256649397ed/google-ads-examples/src/main/java/com/google/ads/googleads/examples/travel/AddThingsToDoAd.java#L252-L278\n \n```\n\n### C#\n\n```c#\nprivate static string CreateAdGroup(GoogleAdsClient client, long customerId,\n string campaign)\n{\n // Get the AdGroupService.\n AdGroupServiceClient adGroupService = client.GetService(Services.V21.AdGroupService);\n\n // Create the ad group.\n AdGroup adGroup = new AdGroup()\n {\n Name = $\"Earth to Mars Cruises #{ExampleUtilities.GetRandomString()}\",\n Status = AdGroupStatus.Enabled,\n Campaign = campaign,\n Type = AdGroupType.TravelAds\n };\n\n MutateAdGroupsResponse response = adGroupService.MutateAdGroups(\n customerId.ToString(), new AdGroupOperation[] { new AdGroupOperation() {\n Create = adGroup\n }}\n );\n\n string adGroupResourceName = response.Results[0].ResourceName;\n Console.WriteLine(\"Ad group with resource name = '{0}' was added.\", adGroupResourceName);\n\n return adGroupResourceName;\n}https://github.com/googleads/google-ads-dotnet/blob/ada966e1983b655e82172b6c3e7d9b091b522377/Google.Ads.GoogleAds/examples/Travel/AddThingsToDoAd.cs#L209-L234\n \n```\n\n### PHP\n\n```php\nprivate static function addAdGroup(\n GoogleAdsClient $googleAdsClient,\n int $customerId,\n string $campaignResourceName\n) {\n // Creates an ad group.\n $adGroup = new AdGroup([\n 'name' =\u003e 'Earth to Mars Cruise #' . Helper::getPrintableDatetime(),\n // Sets the campaign.\n 'campaign' =\u003e $campaignResourceName,\n // Sets the ad group type to TRAVEL_ADS. This cannot be set to other types.\n 'type' =\u003e AdGroupType::TRAVEL_ADS,\n 'status' =\u003e AdGroupStatus::ENABLED,\n ]);\n\n // Creates an ad group operation.\n $adGroupOperation = new AdGroupOperation();\n $adGroupOperation-\u003esetCreate($adGroup);\n\n // Issues a mutate request to add an ad group.\n $adGroupServiceClient = $googleAdsClient-\u003egetAdGroupServiceClient();\n $response = $adGroupServiceClient-\u003emutateAdGroups(\n MutateAdGroupsRequest::build($customerId, [$adGroupOperation])\n );\n\n /** @var AdGroup $addedAdGroup */\n $addedAdGroup = $response-\u003egetResults()[0];\n printf(\n \"Added an ad group with resource name '%s'.%s\",\n $addedAdGroup-\u003egetResourceName(),\n PHP_EOL\n );\n\n return $addedAdGroup-\u003egetResourceName();\n} \nhttps://github.com/googleads/google-ads-php/blob/be0249c30c27b4760387bec6682b82c9f4167761/examples/Travel/AddThingsToDoAd.php#L268-L302\n\n \n```\n\n### Python\n\n```python\ndef add_ad_group(\n client: GoogleAdsClient, customer_id: str, campaign_resource_name: str\n) -\u003e str:\n \"\"\"Creates a new ad group in the specified Things to do campaign.\n\n Args:\n client: an initialized GoogleAdsClient instance.\n customer_id: a client customer ID.\n campaign_resource_name: the resource name of campaign that a new ad\n group will belong to.\n\n Returns:\n The resource name of the newly created ad group.\n \"\"\"\n # Creates an ad group operation.\n operation: AdGroupOperation = client.get_type(\"AdGroupOperation\")\n # Creates an ad group.\n ad_group: AdGroup = operation.create\n ad_group.name = f\"Earth to Mars cruise #{get_printable_datetime()}\"\n # Sets the campaign.\n ad_group.campaign = campaign_resource_name\n # Sets the ad group type to TRAVEL_ADS. This is the only value allowed\n # for this field on an ad group for a Things to do campaign.\n ad_group.type_ = client.enums.AdGroupTypeEnum.TRAVEL_ADS\n ad_group.status = client.enums.AdGroupStatusEnum.ENABLED\n\n # Issues a mutate request to add an ad group.\n ad_group_service: AdGroupServiceClient = client.get_service(\n \"AdGroupService\"\n )\n ad_group_response: MutateAdGroupsResponse = (\n ad_group_service.mutate_ad_groups(\n customer_id=customer_id, operations=[operation]\n )\n )\n\n resource_name: str = ad_group_response.results[0].resource_name\n print(f\"Added an ad group with resource name: '{resource_name}'.\")\n return resource_name \nhttps://github.com/googleads/google-ads-python/blob/d0595698b8a7de6cc00684b467462601037c9db9/examples/travel/add_things_to_do_ad.py#L215-L253\n \n```\n\n### Ruby\n\n```ruby\ndef add_ad_group(client, customer_id, campaign_resource)\n # Create an ad group.\n ad_group_operation = client.operation.create_resource.ad_group do |ag|\n ag.name = generate_random_name_field(\"Earth to Mars Cruise\")\n\n # Set the campaign.\n ag.campaign = campaign_resource\n\n # Set the ad group type to TRAVEL_ADS.\n # This cannot be set to other types.\n ag.type = :TRAVEL_ADS\n ag.status = :ENABLED\n end\n\n # Issue a mutate request to add the ad group.\n ad_group_service = client.service.ad_group\n response = ad_group_service.mutate_ad_groups(\n customer_id: customer_id,\n operations: [ad_group_operation]\n )\n\n # Fetch the new ad group's resource name.\n ad_group_resource = response.results.first.resource_name\n\n puts \"Added an ad group with resource name '#{ad_group_resource}'.\"\n\n ad_group_resource\nend \nhttps://github.com/googleads/google-ads-ruby/blob/2752563c7ffd15a4d2238116869f64aea3011cc3/examples/travel/add_things_to_do_ad.rb#L141-L168\n\n \n```\n\n### Perl\n\n```perl\nsub add_ad_group {\n my ($api_client, $customer_id, $campaign_resource_name) = @_;\n\n # Create an ad group.\n my $ad_group = Google::Ads::GoogleAds::V21::Resources::AdGroup-\u003enew({\n name =\u003e \"Earth to Mars Cruise #\" . uniqid(),\n # Set the campaign.\n campaign =\u003e $campaign_resource_name,\n # Set the ad group type to TRAVEL_ADS.\n # This cannot be set to other types.\n type =\u003e TRAVEL_ADS,\n status =\u003e Google::Ads::GoogleAds::V21::Enums::AdGroupStatusEnum::ENABLED\n });\n\n # Create an ad group operation.\n my $ad_group_operation =\n Google::Ads::GoogleAds::V21::Services::AdGroupService::AdGroupOperation-\u003e\n new({create =\u003e $ad_group});\n\n # Add the ad group.\n my $ad_group_resource_name = $api_client-\u003eAdGroupService()-\u003emutate({\n customerId =\u003e $customer_id,\n operations =\u003e [$ad_group_operation]})-\u003e{results}[0]{resourceName};\n\n printf \"Added an ad group with resource name: '%s'.\\n\",\n $ad_group_resource_name;\n\n return $ad_group_resource_name;\n}https://github.com/googleads/google-ads-perl/blob/9abffd69cd856633dfdcee5c636fe9cd0eb4b5ed/examples/travel/add_things_to_do_ad.pl#L178-L206\n \n```\n\n\u003cbr /\u003e"]]