Structured Snippets

Structured snippets allow your ads to highlight specific aspects of your products and services. These ad extensions provide context on the nature and variety of your products and services before visitors click through to your site.

Each snippet contains a header and list of features you would like to highlight. Up to two headers at a time can show on your ad. We will algorithmically decide the best header combinations to show, so we recommend adding as many headers relevant to your business as possible.

Below is an example of what an ad using snippets might look like. The snippet is outlined with a red rectangle: a "Styles" header with four values (Chukka, Combat, Cowboy, Chelsea).

Header

The header defines the category for your snippet. Your text must match one of the categories in this list exactly (for translations, see Structured Snippet Header Translations). A few examples of headers include: Amenities, Brands, Destinations, Models, and Styles.

Values

The values are a list of featured products/services you would like to highlight. There are a few things to keep in mind:

  • You'll need a minimum of 3 values.
  • Each snippet value has a 25 character limit.
  • For mobile, it's best to limit snippet text to less than 12 characters.
  • The snippet values must adhere to our policy and be family safe.

Adding structured snippets to your ads

Structured snippets can be added at the customer, campaign or ad group level using the extension setting services.

Similar to other ad extensions, you create a feed item and add it to the relevant extension setting. The following code snippet shows how to create a new StructuredSnippetFeedItem and associate it with a campaign.

package adwords.axis.v201710.extensions;

import com.google.api.ads.adwords.axis.factory.AdWordsServices;
import com.google.api.ads.adwords.axis.v201710.cm.ApiException;
import com.google.api.ads.adwords.axis.v201710.cm.CampaignExtensionSetting;
import com.google.api.ads.adwords.axis.v201710.cm.CampaignExtensionSettingOperation;
import com.google.api.ads.adwords.axis.v201710.cm.CampaignExtensionSettingReturnValue;
import com.google.api.ads.adwords.axis.v201710.cm.CampaignExtensionSettingServiceInterface;
import com.google.api.ads.adwords.axis.v201710.cm.ExtensionFeedItem;
import com.google.api.ads.adwords.axis.v201710.cm.ExtensionSetting;
import com.google.api.ads.adwords.axis.v201710.cm.FeedType;
import com.google.api.ads.adwords.axis.v201710.cm.Operator;
import com.google.api.ads.adwords.axis.v201710.cm.StructuredSnippetFeedItem;
import com.google.api.ads.adwords.lib.client.AdWordsSession;
import com.google.api.ads.adwords.lib.factory.AdWordsServicesInterface;
import com.google.api.ads.common.lib.auth.OfflineCredentials;
import com.google.api.ads.common.lib.auth.OfflineCredentials.Api;
import com.google.api.client.auth.oauth2.Credential;
import java.rmi.RemoteException;

/**
 * This example adds structured snippets to a campaign. To create a campaign,
 * run {@code AddCampaigns}.
 *
 * <p>Credentials and properties in {@code fromFile()} are pulled from the
 * "ads.properties" file. See README for more info.
 */
public class AddStructuredSnippets {

  public static void main(String[] args) throws Exception {
    // Generate a refreshable OAuth2 credential.
    Credential oAuth2Credential = new OfflineCredentials.Builder()
        .forApi(Api.ADWORDS)
        .fromFile()
        .build()
        .generateCredential();

    // Construct an AdWordsSession.
    AdWordsSession session = new AdWordsSession.Builder()
        .fromFile()
        .withOAuth2Credential(oAuth2Credential)
        .build();

    AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();

    Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID");
    runExample(adWordsServices, session, campaignId);
  }

  public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session,
      Long campaignId) throws ApiException, RemoteException {

    StructuredSnippetFeedItem amenitiesStructuredSnippetFeedItem = 
        createStructuredSnippetsFeedItem(
        "Amenities", new String[] {"Free Wi-Fi", "Breakfast", "Swimming Pool", "Fitness Center", 
        "Restaurant"});

    StructuredSnippetFeedItem destinationsStructuredSnippetFeedItem = 
        createStructuredSnippetsFeedItem(
        "Destinations", new String[] {"Paris", "London", "Berlin"});

    // Get the CampaignExtensionSettingService.
    CampaignExtensionSettingServiceInterface campaignExtensionSettingService =
        adWordsServices.get(session, CampaignExtensionSettingServiceInterface.class);

    CampaignExtensionSetting campaignExtensionSetting = new CampaignExtensionSetting();
    campaignExtensionSetting.setExtensionType(FeedType.STRUCTURED_SNIPPET);
    ExtensionSetting extensionSetting = new ExtensionSetting();
    extensionSetting.setExtensions(
        new ExtensionFeedItem[] {amenitiesStructuredSnippetFeedItem, 
            destinationsStructuredSnippetFeedItem});
    campaignExtensionSetting.setExtensionSetting(extensionSetting);

    CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation();
    operation.setOperand(campaignExtensionSetting);
    operation.setOperator(Operator.ADD);

    // Create your campaign extension settings. This associates the structured snippet
    // with your campaign.
    campaignExtensionSetting.setCampaignId(campaignId);

    // Add the extensions.
    CampaignExtensionSettingReturnValue returnValue =
        campaignExtensionSettingService.mutate(new CampaignExtensionSettingOperation[] {operation});
    if (returnValue.getValue() != null && returnValue.getValue().length > 0) {
      CampaignExtensionSetting newExtensionSetting = returnValue.getValue(0);
      System.out.printf("Extension setting with type %s was added to campaign ID %d.%n",
          newExtensionSetting.getExtensionType(), newExtensionSetting.getCampaignId());
    } else {
      System.out.println("No extension settings were created.");
    }
  }

  private static StructuredSnippetFeedItem createStructuredSnippetsFeedItem(String header,
      String[] values){
    StructuredSnippetFeedItem structuredSnippetFeedItem = new StructuredSnippetFeedItem();
    structuredSnippetFeedItem.setHeader(header);
    structuredSnippetFeedItem.setValues(values);
    return structuredSnippetFeedItem;
  }
}

Structured snippets reports

The Placeholder Feed Item Report shows performance for feed items and can be used to report statistics for each structured snippet. Additionally, the Placeholder Report shows performance for feed-based ad extensions and can be used to report statistics for all structured snippets. Filter on ExtensionPlaceHolderType where the placeholder type ID is 24 to get only structured snippet ad extensions.

Send feedback about...

AdWords API
AdWords API
Need help? Visit our support page.