The import feed is an XML document that defines products and the user-generated content that was collected by your homegrown solution or third-party provider. An XML feed file delivered to our Secure File Transfer Protocol (SFTP) server.
Quick links
- Step 1: Create the XML feed file
- Step 2: Check the elements and attributes
- Step 3: Validate and prepare the feed
- Step 4: Upload the feed
- Full feed examples
- Alternate method: .csv file
Create and upload XML feed file
Complete the following steps to create your native content import feed and upload it to Bazaarvoice.
Step 1: Create the XML feed file
How you generate a feed depends on your system and processes. Regardless of your situation, every feed must be an XML file and follow the same structure.
Get started structuring your product catalog by referring to the schema, which defines the feed's structure and contents. Refer to the examples to see complete feeds.
Bazaarvoice recommends the following best practices when you create a feed file:
-
Ensure that the first line of your feed adheres to the following format:
Code<?xml version="1.0" encoding="utf-8"?>
-
The standard character-encoding scheme, such as UTF-8 or Windows-1252, must match the scheme that you use for any special characters in the feed.
-
If you do not have a value for a particular field, omit the field from your feed. Do not include the field with a blank value.
Step 2: Check the elements and attributes
You must use the appropriate elements and attributes to describe products and UGC information. Refer to the following tables for child elements and attributes for the <Feed>, <Product>, <Reviews>, <Questions>, <ReviewStatistics> and <QAStatistics> elements.
Feed element
The following table identifies required attributes for the <Feed> element.
| Attribute | Description |
|---|---|
| xmlns | Schema reference. Set this value to http://www.bazaarvoice.com/xs/PRR/StandardClientFeed/14.8. |
| name | The short version of your Bazaarvoice client name. |
| extractDate |
A timestamp that should be populated automatically in the XML DateTime format |
<Feed xmlns="http://www.bazaarvoice.com/xs/PRR/StandardClientFeed/14.8" name="ABCCompany" extractDate="2016-11-21T22:44:33.179+01:00">
Product element
The <Product> element defines a product in your feed, and it can contain <Reviews> and <Questions> child elements. You can include multiple <Product> elements in your feed, one for each product.
This element must include the following:
- id attribute—Its value must match the product's
ExternalIdvalue in your product catalog. <ExternalId>child element—Its value must match the id attribute's value.
Refer to the feed schema or standard client feed structure for a complete list of available elements.
<Product id="1010"> <ExternalId>1010</ExternalId> <Reviews>...</Reviews> <Questions>...</Questions> </Product>
Reviews and Review elements
This element contains <Review> child elements, one for each piece of content that you want to import and display with your product.
Each <Review> element must include the id attribute, which must be a unique value (integer). Then, specify child elements in each <Review> element. The following table provides the most common elements. Refer to the feed schema or standard client feed structure for a complete list of available elements.
| Element | Value |
|---|---|
|
Required |
The current status of a given review, such as whether a review is waiting for some action from moderators, CMS, or is approved or rejected. Possible values: APPROVED and REJECTED. Type: Enum Affects: Display, Reporting |
|
Required |
Information about a user's profile. If this element is omitted, the review is imported as "Anonymous." This element is required if the review will be syndicated.
For each
|
|
Best practice |
Review title in a form specified by its author. Type: String (varchar(255)) Affects: Display |
|
Best practice |
Full text of the review in a form specified by its author. Type: String (text) Affects: Display |
|
Required |
A rating value chosen by the reviewer (usually this is a reflection of the number of "stars"). Type: Int (int(11)) Affects: Display, reporting |
|
Required |
An IP address of reviewer. This element is required if an existing Bazaarvoice client wants to import content. Type: String (varchar(255)) Affects: Authenticity |
|
Optional |
Whether review is marked with the "Recommended" flag. This means that during review submission, the user confirmed that they will recommend this product to a friend. Type: Boolean Affects: Display, reporting |
|
Best practice |
The user's email address. This element is optional, but it is a best practice to include it. Type: String (varchar(255)) Affects: Reporting, authenticity, platform functionality |
|
Optional |
The user's location. Type: String (varchar(255)) Affects: Display |
|
Required |
The time when the review was submitted by its author (before moderation process). Must be specified in the XML DateTime format Type: Date (Timestamp) Affects: Authenticity, display, reporting |
|
Optional |
Whether this content is especially interesting and well written. This value is assigned during moderation. This element is required. Type: Boolean Affects: Display, reporting |
|
Required |
Locale from which the review was submitted. This element is required. Type: String (varchar(25)) Affects: Display, reporting |
|
Optional |
Number of any feedback entries on a given review (positive + negative). Type: Int (4-byte Integer) Affects: Display, reporting |
|
Optional |
Number of positive feedback entries on a given review. Type: Int (4-byte Integer) Affects: Display, reporting |
|
Optional |
Number of negative feedback entries on a given review. Type: Int (4-byte Integer) Affects: Display, reporting |
|
Optional |
Number of times customers reported that this review has inappropriate or irrelevant content. Type: Int (4-byte Integer) Affects: Display, reporting |
|
Optional |
A list of additional (non-default) free-text questions that the review might include. Specify this element and its child elements if you want to display a free-text review for a product or user.
Each
Affects: Display, reporting |
|
Optional |
A list of client responses from a representative of your company for a consumer comment left on a product. For each
Affects: Display |
|
Optional |
A list of tag dimensions. Specify this element and its child elements if you want to display product tags.
Each
Affects: Display |
|
Optional |
A set of photo references with captions left by the reviewer.
Each
Affects: Display |
|
Optional |
A set of video references with captions left by the reviewer. For each
Affects: Display |
|
Optional |
A list of dropdown questions that a review might include. Specify this element and its child elements if you want to display information collected by a dropdown question for a product or user.
Each
Affects: Display |
|
Optional |
A list of secondary ratings for different dimensions or product qualities. Specify this element and its child elements if you want to display an additional (secondary) rating for a product. For each
Affects: Display |
<Reviews> <Review id="12" removed="false"> <ModerationStatus>APPROVED</ModerationStatus> <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>jimbob101@example.com</UserEmailAddress> <ReviewerLocation>Austin, TX</ReviewerLocation> <SubmissionTime>2012-01-23T04:26:14.000-06:00</SubmissionTime> <Featured>false</Featured> <DisplayLocale>en_US</DisplayLocale> <Photos> <Photo id="104358"> <Caption>Thumbs and some Normal</Caption> <Sizes> <Size id="thumbnail" url="https://ABCCompany.com/commons/5/50/Emoji_Grinning_Face.svg"/> <Size id="normal" url="https://ABCCompany.com/commons/thumb/5/50/Emoji_Grinning_Face.svg/2000px-Emoji_Grinning_Face.svg.png"/> </Sizes> </Photo> </Photos> </Review> ... </Reviews>
Questions and Question elements
This element contains <Question> child elements, one for each piece of content that you want to import and display with your product.
Each <Question> element must include the id attribute, which must be a unique value (integer). Then, specify child elements in each <Question> element. The following table provides the most common elements. Refer to the feed schema or standard client feed structure for a complete list of available elements.
| Element | Value | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SubmissionTime |
The time when the question was submitted by its author (before moderation process). Must be specified in the XML DateTime format Type: Date (Timestamp) |
|||||||||||||
UserNickname |
A nickname chosen by the author of a question. Must be unique across all users specified in the feed, unless duplicate nicknames are allowed. Type: String (varchar(255)) |
|||||||||||||
UserLocation |
The location of the author of a question. Type: String (varchar(255)) |
|||||||||||||
QuestionSummary |
The summary line of the question. Type: String (varchar(255)) |
|||||||||||||
QuestionDetails |
The body of the question. Type: String (text) |
|||||||||||||
DisplayLocale |
Locale from where the question was submitted. This is required if importing content from different locales or languages. Type: String (varchar(25)) |
|||||||||||||
Answers and Answer |
A list of answers to the question. For each
|
|||||||||||||
<Questions> <Question id="44135"> <SubmissionTime>2008-11-21T22:44:33.179+01:00</SubmissionTime> <UserNickname>Dave</UserNickname> <UserLocation>London</UserLocation> <QuestionSummary>Can we import Q&A questions?</QuestionSummary> <QuestionDetails>The reason I ask is that I'm really curious</QuestionDetails> <DisplayLocale>en_GB</DisplayLocale> <Answers> <Answer id="1"> <SubmissionTime>2008-11-22T22:44:33.179+01:00</SubmissionTime> <UserProfileReference id="Tim"> <ExternalId>Tim</ExternalId> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <UserNickname>Tim</UserNickname> <UserLocation>Edinburgh</UserLocation> <AnswerText>I think so</AnswerText> <DisplayLocale>en_GB</DisplayLocale> </Answer> ... </Answers> </Question> ... </Questions>
ReviewStatistics and QAStatistics elements
If you intend to import helpfulness votes, be sure to enable helpfulness voting in the configuration hub. Then, include one or both of these elements in your feed. <ReviewStatistics> displays Ratings & Reviews statistics. <QAStatistics> displays Questions & Answers statistics.
The following table provides the child elements that relate to helpfulness voting. Refer to the feed schema or standard client feed structure for a complete list of available elements.
| Element | Value |
|---|---|
QuestionHelpfulVoteCount |
Number of "Helpful" votes submitted for all user's approved questions. Type: Int (4-byte Integer) |
QuestionNotHelpfulVoteCount |
Number of "Not Helpful" votes submitted for all user's approved questions. Type: Int (4-byte Integer) |
AnswerHelpfulVoteCount |
Number of "Helpful" votes submitted for all user's approved answers. Type: Int (4-byte Integer) |
AnswerNotHelpfulVoteCount |
Number of "Not Helpful" votes submitted for all user's approved answers. Type: Int (4-byte Integer) |
HelpfulVoteCount |
Total number of "Helpful" votes submitted for all user's approved content of a certain type. Type: Int (4-byte Integer) |
NotHelpfulVoteCount |
Total number of "Not Helpful" votes submitted for all user's approved content of a certain type. Type: Int (4-byte Integer) |
<ReviewStatistics> <HelpfulVoteCount>0</HelpfulVoteCount> <NotHelpfulVoteCount>1</NotHelpfulVoteCount> </ReviewStatistics> <QAStatistics> <QuestionHelpfulVoteCount>26</QuestionHelpfulVoteCount> <QuestionNotHelpfulVoteCount>5</QuestionNotHelpfulVoteCount> <AnswerHelpfulVoteCount>145</AnswerHelpfulVoteCount> <AnswerNotHelpfulVoteCount>2</AnswerNotHelpfulVoteCount> <HelpfulVoteCount>178</HelpfulVoteCount> </QAStatistics>
Step 3: Validate and prepare the feed
Your feed needs well-formed XML that works with the Bazaarvoice XML schema. Complete these steps to validate and prepare the feed for Bazaarvoice.
-
Validate your feed against the Bazaarvoice XML schema
before uploading it to Bazaarvoice. You can use an XML validation tool to validate your feed.
- If there are errors or warnings, fix the problems and then revalidate the feed.
-
If the file is larger than 150MB (typically if there are more than 100,000 reviews), split the feed into multiple files. You can do this manually, using a simple text editor, or you can use a command-line tool, such as xmlsplit
.
- If the content is not English, make sure that the XML feed includes the correct language and locale tag.
Step 4: Upload the feed
You must upload the native content import feed to the production server, but Bazaarvoice recommends that you preview and test the feed’s impact on the staging server first.
-
Upload the XML file to the
/nativedirectory of the staging and production SFTP server.-
If your data is hosted in the United States (US), use the following URLs:
- Staging server—sftp-stg.bazaarvoice.com
- Production server—sftp.bazaarvoice.com
-
If your data is hosted in Europe (EU), use the following URLs:
- Staging server—sftp7-stg.bazaarvoice.com
- Production server—sftp7.bazaarvoice.com
Be sure to connect to SFTP using port 22. Contact Bazaarvoice Support if you do not know your SFTP credentials or where your data is hosted.
-
If your data is hosted in the United States (US), use the following URLs:
- Contact Bazaarvoice to let us know that you have validated and uploaded the feed. The content will not be imported until you notify Bazaarvoice.
Full feed examples
The following is a full feed example for Ratings & Reviews:
XML |
<Feed xmlns="http://www.bazaarvoice.com/xs/PRR/StandardClientFeed/14.8" name="ExampleClient" extractDate="2016-02-12T05:17:33.945-06:00"> <Product id="1010"> <ExternalId>1010</ExternalId> <Reviews> <!-- The following is an example of 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"> <ModerationStatus>APPROVED</ModerationStatus> <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>jimbob101@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> <!-- This following is a sample review featuring 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>supermike@example.com</UserEmailAddress> <ReviewerLocation>Austin, TX</ReviewerLocation> <SubmissionTime>2012-01-23T12:59:25.000-06:00</SubmissionTime> <Featured>false</Featured> <DisplayLocale>en_US</DisplayLocale> <!-- See below for the different types of review feedback. - <NumFeedbacks> is the number of any feedbacks on a given review (positive + negative). - <NumPositiveFeedbacks> is the number of positive feedbacks on a given review. - <NumNegativeFeedbacks> is the number of negative feedbacks on a given review. - <NumInappropriateFeedbacks> is the number of times consumers reported that this review has inappropriate content. --> <NumFeedbacks>3</NumFeedbacks> <NumPositiveFeedbacks>2</NumPositiveFeedbacks> <NumNegativeFeedbacks>1</NumNegativeFeedbacks> <NumInappropriateFeedbacks>1</NumInappropriateFeedbacks> <!-- The following field allows you to add a custom question with a free-text response. All listed elements are required. - <DisplayLabel> represents the consumer-facing label of the question - <Value> is where the reviewer's free-text answer is included. --> <AdditionalFields> <AdditionalField id="CustomQuestion"> <DisplayLabel>Custom Question:</DisplayLabel> <Value>This is my custom answer</Value> </AdditionalField> </AdditionalFields> <!-- The following field allows you to add company responses to reviews. All elements listed are required unless otherwise noted. - <ClientResponse> is the field where a representative of your company has responded up to a consumer comment left on a product. - <Department> is not required, but recommended if the responding party's department is available. - <Name> is not required, but recommended if the responding party's name is available. - <Response> is where you include your company's response to a review. This field is required. - <ResponseSource> is not required, but recommended if you have data on where the response from your company's representative was generated. In this example, the response came from 'Workbench', which is where Bazaarvoices' clients generally generate responses to consumer reviews. - <Date> is required in datetime format. --> <ClientResponses> <ClientResponse> <Department>Responding Department's Name</Department> <Name>Respondant's Name</Name> <Response>Our number one priority is to deliver exceptional value to our fantastic customers every day. We will contact you straight away to see how we can improve the outcome for you. </Response> <ResponseSource>Workbench</ResponseSource> <Date>2016-11-12T13:21:43.000-06:00</Date> </ClientResponse> </ClientResponses> <!-- The Tags field allows you to add tags and tag dimensions to the review. All listed elements are required. - <TagDimension><Label> is the client-facing label that the tags live within. - <Tag><Label> are the different tag names that fall underneath <TagDimension><Label> (in the example below, these labels live within the "Pro" or "Con" master label). --> <Tags> <TagDimension id="Pro"> <ExternalId>Pro</ExternalId> <Label>Pros</Label> <Tags> <Tag> <Label>Entertaining Friends</Label> </Tag> <Tag> <Label>Daily practicing</Label> </Tag> <Tag> <Label>Nice sound</Label> </Tag> </Tags> </TagDimension> <TagDimension id="Con"> <ExternalId>Con</ExternalId> <Label>Cons</Label> <Tags> <Tag> <Label>Very loud</Label> </Tag> <Tag> <Label>Requires practice</Label> </Tag> </Tags> </TagDimension> </Tags> <!-- The following fields allow you to add 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 alpha-numeric 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 pre-defined 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. --> <ContextDataValues> <ContextDataValue id="35to44"> <ContextDataDimension id="Age"> <ExternalId>Age</ExternalId> <Label>Age</Label> </ContextDataDimension> <ExternalId>35to44</ExternalId> <Label>35 to 44</Label> </ContextDataValue> <ContextDataValue id="Female"> <ContextDataDimension id="Gender"> <ExternalId>Gender</ExternalId> <Label>Gender</Label> </ContextDataDimension> <ExternalId>Female</ExternalId> <Label>Female</Label> </ContextDataValue> <ContextDataValue id="InStore"> <ContextDataDimension id="ROBO"> <ExternalId>ROBO</ExternalId> <Label>Where Purchased:</Label> </ContextDataDimension> <ExternalId>InStore</ExternalId> <Label>In-Store</Label> </ContextDataValue> <ContextDataValue id="True"> <ExternalId>True</ExternalId> <Label>Yes</Label> <ContextDataDimension id="VerifiedPurchaser"> <ExternalId>VerifiedPurchaser</ExternalId> <Label>Verified Purchaser</Label> </ContextDataDimension> </ContextDataValue> <ContextDataValue id="False"> <ExternalId>False</ExternalId> <Label>No</Label> <ContextDataDimension id="IncentivizedReview"> <ExternalId>IncentivizedReview</ExternalId> <Label>Incentivized Review</Label> </ContextDataDimension> </ContextDataValue> </ContextDataValues> <!-- The following fields add rating values to reviews. - The <Rating> field is the rating given to 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> |
The following is a full feed example for Questions & Answers:
XML |
<Feed xmlns="http://www.bazaarvoice.com/xs/PRR/StandardClientFeed/14.8" name="ExampleClient" extractDate="2016-11-21T22:44:33.179+01:00"> <Product id="1010"> <ExternalId>1010</ExternalId> <Questions> <!-- The following is an example of basic questions and answers. These elements are required for syndication: - <IpAddress> - <DisplayName> - <SubmissionTime> --> <Question id="44135"> <SubmissionTime>2016-11-21T22:44:33.179+01:00</SubmissionTime> <UserProfileReference id="jimbob101"> <ExternalId>jimbob101</ExternalId> <DisplayName>JimBob</DisplayName> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <UserLocation>Austin, TX</UserLocation> <QuestionSummary>Can we import Q&A questions?</QuestionSummary> <QuestionDetails>The reason I ask is that I'm really curious</QuestionDetails> <IpAddress>198.51.100.0</IpAddress> <DisplayLocale>en_US</DisplayLocale> <Answers> <Answer id="1"> <SubmissionTime>2016-11-22T22:44:33.179+01:00</SubmissionTime> <UserProfileReference id="Tim"> <ExternalId>Tim</ExternalId> <DisplayName>Tim</DisplayName> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <UserLocation>Houston, TX</UserLocation> <AnswerText>I think so</AnswerText> <IpAddress>198.51.100.2</IpAddress> <DisplayLocale>en_US</DisplayLocale> </Answer> <Answer id="5"> <SubmissionTime>2016-11-23T22:44:33.179+01:00</SubmissionTime> <UserProfileReference id="becker"> <ExternalId>becker</ExternalId> <DisplayName>Becker</DisplayName> <Anonymous>false</Anonymous> <HyperlinkingEnabled>false</HyperlinkingEnabled> </UserProfileReference> <UserLocation>New York, NY, USA</UserLocation> <AnswerText>A guy I know has done it</AnswerText> <IpAddress>198.51.100.3</IpAddress> <DisplayLocale>en_US</DisplayLocale> </Answer> </Answers> </Question> </Questions> </Product> </Feed> |
Alternate method: .csv file
If you are unable to provide an XML feed of native content, you can provide essential review data in a comma-separated value (.csv) file. Bazaarvoice can then convert the worksheet to XML format for import.
Use the content import worksheet to capture review data. Headings (representing elements) marked with * (asterisk) are required.
Refer to Ratings and Review elements for details about each required element.
