Content collection partners
Through the Bazaarvoice Partner Program, content collection partners can provide Bazaarvoice Network Distribution to brands that don’t use Bazaarvoice collect and display solutions. To participate in the program alongside a content collection partner, the brand needs to become a Bazaarvoice client. Then, using Bazaarvoice API tools, user-generated content (UGC) collected by the partner for the brand can be submitted directly by the partner to the brand’s Bazaarvoice account. Because this process complies fully with all Bazaarvoice Network policies, content acquired through the program is eligible for syndication across the Bazaarvoice Network.
Join the Bazaarvoice Partner Program .
Our policy ensures that consumers are confident that they can trust the authenticity of ratings, reviews, answers, and other UGC. Refer to the Bazaarvoice Authenticity Policy for more information about content authenticity guidelines.
Partners and brands new to the program must complete an initial onboarding phase before syndicating to the Bazaarvoice Network. Expand the following sections to see an overview of onboarding steps.
Bazaarvoice supports the initial partner onboarding process as follows:
- Signs an agreement and onboarding statement of work with the partner.
- Hosts a kickoff meeting.
- Sets up a sandbox environment and provides the partner with API keys.
- Hosts a series of technical training sessions to help the partner understand important requirements for participation, such as our authenticity requirements, syndication, product catalogs, and using the API.
- Consults with the partner team as they build the solution in the sandbox environment.
- Tests and certifies that the partner's completed solution meets our requirements.
For all brands wanting to participate in this partnership, the process is as follows:
- The brand signs a contract with Bazaarvoice to distribute content to the Bazaarvoice Network. The brand must sign an agreement with the partner if one is not already in place.
- Bazaarvoice provisions a brand account and provides the brand’s API keys and Secure File Transfer Protocol (SFTP) folder access credentials to the partner. Refer to Technical credentials for an example of information that we provide.
- The partner sends the brand’s product catalog with all necessary product information to the brand-specific SFTP location.
- Bazaarvoice enables and configures product matching between the brand’s product catalog and the Network.
- The partner enables ongoing content submission to Bazaarvoice through the API.
- As part of the contract agreement between Bazaarvoice and the brand, the partner sends an export of all historical content to the brand-specific SFTP location. We import and moderate all historical content.
- Bazaarvoice certifies that all required product catalog and review data is being received and that syndication is enabled and correct once the brand is live with the integration.
- Bazaarvoice moderates all content and distributes approved content to the Network.
- Bazaarvoice administers a formal quality review and coordinates adjustments to flagged items with the partner.
Once Bazaarvoice has completed provisioning, the partner will receive the following information to complete the setup process on its platform.
SFTP Credentials for Product Catalog and Content Import
- Staging: sftp-stg.bazaarvoice.com
- Production: sftp.bazaarvoice.com
- Username: The username provided during onboarding
- Password: The password provided in email
- Port: 22
Deliver the product feed to the
Deliver the content import file to the
API Keys and Encoding Key:
- Production API Key: production_api_key
- Staging API Key: staging_api_key
- Shared Encoding Key: shared_encoding_key
For a brand to recognize optimal value from the Bazaarvoice Network, it must provide data about its product catalog to Bazaarvoice. This includes data about the brand and the products the brand offers.
Providing a complete view of the brand’s product catalog is critical for success. Think of the product catalog as a translator between retailers and brands. Retailers and brands often use different identifiers and metadata to describe the same product. To match product reviews between a brand and retailer, Bazaarvoice needs to correlate the identifiers and metadata describing the product.
To ensure a brand’s content reaches as many shoppers as possible, the brand must provide Global Trade Item Numbers (GTINs), which include Universal Product Codes (UPCs), European Article Numbers (EANs), and International Standard Book Numbers (ISBNs).
The product catalog is an Extensible Markup Language (XML) file that is delivered to a brand-specific SFTP location for Bazaarvoice to process. A brand should upload its catalog to Bazaarvoice daily to ensure the most recent and relevant product data is used to match products across the Network.
So that Bazaarvoice can easily identify which content partner provided the catalog, prefix the file name with your partner’s name. For example, if the name of the partner is Super Reviews, we would expect a file name similar to:
Each product in the catalog should include the following information. If certain product information cannot be provided due to platform limitations, confirm with the Bazaarvoice partnership team that no functionality will be lost.
- ExternalId—Unique product ID. The ID can contain only alphanumeric characters, hyphens (–), and underscores (_).
- Description—Description of the product. Bazaarvoice recommends product descriptions be at least three sentences or 300 characters long.
- Name—Name of the product.
- Brand—Name of the brand to which the product belongs.
- ProductPageUrl—Unique, uncorrupted URL for a product page. Do not include extraneous query string parameters that you might use for tracking and partnership codes.
- ImageUrl—Unique URL for the product image.
- ManufacturerPartNumbers—Manufacturer-specific part number. Specify a
child element for each part number you want to define. Part numbers can contain letters, numerals, and characters.
EAN—Used worldwide for marking retail goods. Specify an
<EAN>child element for each EAN you want to define, which must be a string of eight numerals or 13 numerals. No letters or other characters are allowed. Remove spaces and hyphens because they disrupt syndication matching.
To aid in product matching, supply EANs in addition to UPC data. To convert a UPC to an EAN, add a leading 0 (zero) to the UPC. This indicates the country code of the product to be US or Canada.
If your system has EAN data, also include this value as a UPC to increase product matching potential. To convert an EAN to a UPC, remove the leading 0. This applies only to products with EANs that begin with 0.
UPC—6- or 12-digit bar code used for standard retail packaging in the United States. Specify a
<UPC>child element for each UPC you want to define. UPCs can contain only numerals. Remove spaces and hyphens because they disrupt syndication matching.
To aid in product matching, supply EANs in addition to UPC data. To convert a UPC to an EAN, add a leading 0 (zero) to the UPC. This indicates the country code of the product to be US or Canada.
If your system has EAN data, also include this value as a UPC to increase product matching potential. To convert an EAN to a UPC, remove the leading 0. This applies only to products with EANs that begin with 0 (zero).
- ISBN—10- or 13-character value used predominantly for media products such as books, music, and videos. Specify an
<ISBN>child element for each ISBN you want to define.
Including multiple GTINs for a single product
For Global Trade Item Number (GTIN) data, it may be helpful to add multiple GTINs for a product. For example, a brand sells diapers in different quantity variants: 10-count, 50-count, and 100-count. Each variant has its own UPC. We want to ensure that a review left on any quantity variant syndicates to a retailer, regardless of the quantity of diapers the retailer sells. For this, we would expect each quantity variant listed in the catalog to have all three UPCs associated with it. The
<UPCs> section of the product element would look similar to the following example:
<UPCs> <!--UPC for 10 count--> <UPC>123456789123</UPC> <!--UPC for 50 count--> <UPC>987654321987</UPC> <!--UPC for 100 count--> <UPC>456456456456</UPC> </UPCs>
Include multiple GTINs for a single product when:
- The products are identical, meaning the products are the same in all aspects.
- The only difference between the products is size, and the size does not affect the functionality of the product or the consumer experience. For example, we would match a small shirt to a large shirt when the material and composition is the same in every other way.
- The only difference between the products is the color, and the color does not affect the functionality of the product or the consumer experience. For example, we would match a black metal toaster to a white metal toaster that is otherwise identical.
- The only difference between the products is packaging, packaging size, or quantity included in the package. For example, we would match a package of 10 diapers with a package of 50 diapers, assuming the individual diapers themselves are identical.
Including inactive products
A brand should include all product data from its system even if the products are not active on the brand’s site. Each inactive product should have a
removed=”true” attribute to ensure the proper product status is reflected in the Bazaarvoice system.
The following example shows an XML product catalog with one active product and one inactive product.
<?xml version="1.0" encoding="UTF-8" ?> <Feed extractDate="2017-12-01T14:52:18.649518" incremental="false" name="client_name" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/14.8"> <Products> <Product> <ExternalId>product1</ExternalId> <Name>First Product Name</Name> <Description>First Product Description Text</Description> <Brand> <Name>brand-123</Name> </Brand> <ProductPageUrl>https://www.example.com/product2.htm</ProductPageUrl> <ImageUrl>https://www.example.com/image1.png</ImageUrl> <ManufacturerPartNumbers> <ManufacturerPartNumber>26-12345-8Z</ManufacturerPartNumber> </ManufacturerPartNumbers> <EANs> <EAN>0522001710187</EAN> <EAN>0188173724035</EAN> </EANs> <UPCs> <UPC>382157229387</UPC> <UPC>283929327285</UPC> </UPCs> </Product> <Product removed="”true”"> <ExternalId>product2</ExternalId> <Name>Second Product Name</Name> <Description>Second Product Description Text</Description> <Brand> <Name>brand-123</Name> </Brand> <ProductPageUrl>https://www.example.com/product2.htm</ProductPageUrl> <ImageUrl>https://www.example.com/image2.png</ImageUrl> <ManufacturerPartNumbers> <ManufacturerPartNumber>26-12345-8Z</ManufacturerPartNumber> </ManufacturerPartNumbers> <EANs> <EAN>0522001710188</EAN> <EAN>0188173724034</EAN> </EANs> <UPCs> <UPC>382157229389</UPC> <UPC>283929327284</UPC> </UPCs> </Product> </Products> </Feed>
For detailed information about creating a product catalog, read Create an XML product catalog feed.
When a brand’s content is displayed through the Network, a note is added to each review clearly stating that it was collected from another website. At most destinations, we can display the logo of the brand next to the syndicated content. The brand can provide an image file of the logo, or Bazaarvoice can use the logo from the brand’s website. The image file must meet the following specifications:
- File types: PNG, GIF, JPG, JPEG
- Size: 300 pixels wide by 100 pixels high
Historical content distribution
The brand might wish to distribute content that was collected before the partner program was set up. To enable Network distribution of historical content, Bazaarvoice offers a one-time content import solution. The import is completed via the native content import feed, which is an XML document that defines products and UGC that was collected on platforms other than the Bazaarvoice platform. Content partners can use the native content import feed to import content for Bazaarvoice moderation and Network distribution.
Each product listed in the file will have its reviews nested inside it. For more information, refer to the full XML schema.
The following example shows a product with two reviews.
<?xml version="1.0" encoding="utf-8"?> <Feed xmlns="http://www.bazaarvoice.com/xs/PRR/StandardClientFeed/14.8" name="client_name" extractDate="2016-02-12T05:17:33.945-06:00"> <Product id="1010"> <ExternalId>1010</ExternalId> <Reviews> <!-- The following example shows a basic review. It features the most common elements included in import feeds. These elements are required for syndication: - <IpAddress> - <DisplayName> - <SubmissionTime> --> <Review id="12" removed="false"> <UserProfileReference id="jimbob101"> <ExternalId>jimbob101</ExternalId> <DisplayName>JimBob</DisplayName> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <title>What an amazing product!</title> <ReviewText>This product is great and I'll definitely recommend it to my friends!</ReviewText> <Rating>4</Rating> <IpAddress>198.51.100.0</IpAddress> <Recommended>true</Recommended> <UserEmailAddress>email@example.com</UserEmailAddress> <ReviewerLocation>Austin, TX</ReviewerLocation> <SubmissionTime>2012-01-23T04:26:14.000-06:00</SubmissionTime> <Featured>false</Featured> <DisplayLocale>en_US</DisplayLocale> </Review> <!-- The following sample review features additional attributes that can be included in this file. --> <Review id="11" removed="false"> <ModerationStatus>APPROVED</ModerationStatus> <UserProfileReference id="miketester112"> <ExternalId>miketester112</ExternalId> <DisplayName>supermike</DisplayName> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <title>Best product ever!</title> <ReviewText>This product truly changed my life; I don't know what I'd do without it.</ReviewText> <Rating>5</Rating> <IpAddress>198.51.100.1</IpAddress> <Recommended>true</Recommended> <UserEmailAddress>firstname.lastname@example.org</UserEmailAddress> <ReviewerLocation>Austin, TX</ReviewerLocation> <SubmissionTime>2012-01-23T12:59:25.000-06:00</SubmissionTime> <Featured>false</Featured> <DisplayLocale>en_US</DisplayLocale> <!-- The following fields allow you to add photos or videos included in a review. All elements listed are required unless otherwise noted. - <Photo id="___"> and <VideoId> are both required. You can include any alphanumeric ID you'd like here, ensuring that each ID is unique. - <Caption> is an optional field. --> <Photos> <Photo id="104358"> <caption> Thumbs and some Normal </caption> <Sizes> <Size id="thumbnail" url="https://upload.wikimedia.org/wikipedia/commons/5/50/Emoji_Grinning_Face.svg"/> <Size id="normal" url="https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Emoji_Grinning_Face.svg/2000px-Emoji_Grinning_Face.svg.png"/> </Sizes> </Photo> </Photos> <Videos> <video> <caption>Burgers and Fries</caption> <VideoHost>www.youtube.com</VideoHost> <VideoId>burgersandfries</VideoId> <RawUrlInput>https://www.youtube.com/watch?v=DcJFdCmN98s</RawUrlInput> </video> </Videos> <!-- Context data values are custom fields with predefined answers that a user can choose from. All listed fields are required. - <ContextDataValue> is the response to the ContextDataDimension. - <ContextDataDimension> is the label/question being responded to. - <Label> is the client-facing label. --> <ContextDataValue id="True"> <ExternalId>True</ExternalId> <label>Yes</label> <ContextDataDimension id="IncentivizedReview"> <ExternalId>IncentivizedReview</ExternalId> <label>Incentivized Review</label> </ContextDataDimension> </ContextDataValue> <!-- The following fields add rating values to reviews. - The <Rating> field is the rating given to the value listed below. - The <RatingDimension> field contains the following: - The displayType indicates the type of tool used to provide the rating value (see below for additional examples.) - The selectedValueInDisplayEnabled indicates whether the value should be shown in display or hidden. - <ExternalId> represents the value being rated. - <Label> is the client-facing label of value being rated. - <RatingRange> represents the total rating-range available. --> <RatingValues> <RatingValue> <Rating>5</Rating> <RatingDimension displayType="NORMAL" id="Quality" selectedValueInDisplayEnabled="false"> <ExternalId>Quality</ExternalId> <label>Quality</label> <RatingRange>5</RatingRange> </RatingDimension> </RatingValue> <RatingValue> <Rating>5</Rating> <RatingDimension displayType="SLIDER" id="Fragrance" selectedValueInDisplayEnabled="false"> <ExternalId>Fragrance</ExternalId> <label>Fragrance</label> <RatingRange>5</RatingRange> </RatingDimension> </RatingValue> <RatingValue> <Rating>5</Rating> <RatingDimension displayType="RADIO" id="Effectiveness" selectedValueInDisplayEnabled="false"> <ExternalId>Effectiveness</ExternalId> <label>Effectiveness</label> <RatingRange>5</RatingRange> </RatingDimension> </RatingValue> </RatingValues> </Review> </Reviews> </Product> </Feed>
For detailed information about creating a native content import feed, read Native content import.
Ongoing content distribution
For ongoing content distribution, the reviews will be passed from the content collection partner to Bazaarvoice in real time through the Bazaarvoice Conversations API. Bazaarvoice will provide the Conversations API passkeys once the brand’s Bazaarvoice account is provisioned.
Once you have your Conversations API passkeys, use the
submitreview endpoint to submit the content to Bazaarvoice.
Fields marked with an asterisk (∗) are required. If your platform does not collect some of the required information, or it collects additional information from the user that is not included in the following list, discuss this with the Bazaarvoice partnership team.
- Review Title∗
- Review Text∗
- Would you recommend?
- Photos and Videos
In addition to data collected from users, you must submit this information with each review:
- Incentivized Review∗
- Campaign ID∗
- Author IP Address and Device Fingerprint∗
A Campaign ID is a text string identifying the action that originated a piece of content. This crucial field allows brands to measure the success of their different content collection sources.
Your campaign ID must be:
- Unique to you.
- Similar for every submission you make for every brand client participating in the program.
- Prefixed with your company name without any symbols or spaces (for example,
campaignid=[PARTNER]). This will help your clients identify the content they collected via your platform in their Bazaarvoice account, and will also help in any future reporting across Bazaarvoice.
Example submission request
A complete submission request should look similar to the following example.
POST /data/submitreview.json HTTP/1.1 Host: [stg.]api.bazaarvoice.com Content-Type: application/x-www-form-urlencoded X-Forwarded-For: [AuthorIPAddress] ... ApiVersion=5.4&ProductId=[productId]&Action=submit&CampaignId=[campaignid]&L ocale=[locale]&Rating=[rating]&ReviewText=[reviewText]&Title=[title]&UserNickname =[nickname]&UserEmail=[emailaddress]&UserLocation=[location]&IsRecommended=[ true/false]&contextdatavalue_IncentivizedReview=[True/False]&PassKey=[yourKey]&f p=[deviceFingerprint]
For more information about submitting reviews, refer to Review Submission .
User authentication strings
A user authentication string (UAS) is required if a user must be logged in before writing and submitting a review. This requirement applies, for example, to sampling providers or sites requiring site authentication.
User authentication strings comprise
key=value pairs that are hashed and encoded, but not encrypted. Prior to submission, a UAS is signed and encoded using a shared secret key, resulting in a UAS token. This process allows Bazaarvoice to verify that the submission comes from a trusted source, thereby preventing third parties from fabricating content or impersonating users.
When a UAS token does not exist, the partner must follow these guidelines to create and submit it:
- Send User IDs to consolidate that on the Bazaarvoice side.
- Prefix User IDs so that they do not conflict with our data for users (for example:
For more information about how to encode a UAS, read Creating and encoding the UAS .
At Bazaarvoice, we believe that UGC should represent the genuine, unbiased, and transparent opinion about the author’s experience with a product or service. These are the three main characteristics of authentic UGC:
- Free from fraud and spam, including disruptive or trolling behavior, commercial messages, automated submissions (bots and scripts), content from a client’s competitor, and undisclosed self-promotion.
- Free from edits, classification, and alteration by anyone other than the original author, including corrections for spelling or grammar.
- Free from inappropriate influence. We do not allow companies to directly ask for positive reviews. If consumers are offered money or promotional material (such as discounts or coupons) in exchange for providing an unbiased review, then the review must note this fact. Further, employees and vendors of the organization may not submit content without disclosing their relationship to the product or service.
Author IP address and device fingerprint
Mass advertising campaigns, trolling, and attempts at automated content submission are all sources of inauthentic content. To combat them, Bazaarvoice has partnered with iovation, an industry leader in device reputation technology. Their technology enables the collection of information about the author’s device, which can then be used in conjunction with sophisticated algorithms that allow Bazaarvoice to identify, flag, and report suspicious content.
- Author IP address—Must be the IP address for the author of the review.
- Device fingerprint—Passed as a parameter in the review submission request.
Follow these steps to generate the device fingerprint:
- Wait for the script to analyze the user agent and create a device fingerprint black box string.
- Submit the user-submitted review with the Bazaarvoice Conversations API including the
fpparameter with the device fingerprint black box string.
Read iovation - web for more information about generating and sending the device fingerprint.
Badging incentives (incentivized reviews)
The Bazaarvoice Authenticity Policy requires that reviews display a notification (either as a graphic badge or plain text) any time the consumer has received or been offered material compensation for writing a review. This includes, but is not limited to, any of the following being provided to the consumer in exchange for writing a review:
- Entry into a sweepstakes
- Coupons or discounts
- Loyalty reward points
- Free products, either before as in a sampling program or after, as a “thank you” gift
Bazaarvoice uses a universal value with each incentivized submission to properly display a disclosure to end consumers. For more information on how to include this value with all submissions, refer to the submission form details in Incentivized Reviews .
The goal of the partnership program is to allow brands to distribute their content to the Network regardless of their collection and display platform. Understanding how Bazaarvoice syndication works is helpful.
A syndication edge is a connection between a source (typically a brand) and a destination (typically a retailer). For syndication between a brand and a retailer to be successful, an edge must be created for content to flow between these two sites.
Edges are created any time a brand or retailer has joined the Network or any time a brand or retailer explicitly requests a new connection. The partner normally does not make requests for edges.
Syndication product matching
Product matching is the process of identifying two or more products in the Network that are eligible to share content. After a syndication edge has been created, Bazaarvoice will look for products at the brand and retailer that match. Once a product from the brand site is matched to a product on the retail site, content can be syndicated. Products are normally matched automatically based on unique identifiers like UPCs and EANs. They also may be matched by brand name, product name, and product description, among other key identifiers.
For Bazaarvoice to proceed with product matching, the product catalog must meet the following minimum requirements:
<Brand>attribute must be included for all active products.
- A valid GTIN, UPC, EAN, or ISBN must be included for at least 80% of active products.
- A product page URL must be included for at least 80% of active products.
If these requirements are not met, Bazaarvoice cannot proceed with product matching and content will not syndicate.
Syndication guidelines for the Bazaarvoice Network outline the requirements, rights, and obligations of all parties participating in the Bazaarvoice Network.
The long-term support of brands leveraging this integration will be handled collaboratively by the partner and Bazaarvoice. Typically, a brand might contact the partner or Bazaarvoice for the following reasons:
- The brand’s content is not displayed on an expected destination’s site.
- A review is mistakenly displayed on a destination’s site.
- A review should not be displayed at all.
- A review displays for the wrong product.
When a brand contacts a partner for support, the partner should confirm that a review was submitted successfully to Bazaarvoice. Once the partner confirms that the review was sent successfully, the partner should direct the brand to Bazaarvoice Client Care (email@example.com) for further assistance.
If the brand contacts Bazaarvoice Client Care, and we determine that the partner needs to fix the issue, we will direct the brand to the partner’s support department. As part of the onboarding process, the partner provides Bazaarvoice standard messaging containing steps for a brand to contact the partner’s support department.
We may direct a brand back to a partner for support for multiple reasons, such as:
- The review in question does not exist in the Bazaarvoice system.
- The solution for the issue requires an update to the product information that the partner supplies Bazaarvoice.