Importing Q&A
Last updated: April 23, 2026
If you’ve been collecting Q&A on Okendo or another platform, you can bring your existing questions and answers into BetterReviews without losing them.
Where to find it
In the BetterReviews admin, go to Settings → Import & Export → Import Q&A.
Supported sources
- Okendo — export from Settings → Import/Export → Export Q&A. The importer handles Okendo’s denormalized format (one row per answer, question repeated) automatically.
- Any platform — if your platform can export questions and answers to CSV with identifiable column names, the importer can map them.
The import flow
Q&A import uses the same 7-phase flow as reviews:
- Upload. Drop your CSV file in. Limits: 50 MB, 100,000 rows, one concurrent import per store.
- LLM column mapping. We run an LLM pass to map your columns to BetterReviews fields. It recognises common variations automatically.
- Review the mapping. You see the proposed mapping in an editable table. Override any column you don’t like.
- Dry run. We simulate the import and report how many Q&A pairs would succeed, fail, or deduplicate.
- Dry run preview. Review the summary. If anything looks wrong, go back to step 3.
- Start import. Runs in the background.
- Batch processing. Runs in the background — you can safely close this tab. When the import finishes, we email the store’s admin address with row counts (imported / skipped / errors) and, if there were errors, a link to the error report. If you navigate away and return to Settings → Import & Export, the page picks up the running import automatically.
Q&A canonical columns
We recognise these columns in the mapping step:
Required:
question_text— the question text
Recommended:
answer_text— the answer text (rows without an answer create a question with no answers)product_id— Shopify product ID. Questions without a product ID won’t appear on product pages.questioner_name— display name for the person who asked (defaults to “Anonymous”)questioner_email— stored encrypted at rest; used for deduplicationanswerer_name— display name for the answereranswerer_email— stored encrypted at restanswerer_type—merchant,community, oradmin. If absent, inferred from answerer name (see below).question_date— original question date (ISO 8601 or US/EU date formats)answer_date— original answer date
Optional:
external_question_id— your platform’s question ID, used for deduplicationexternal_answer_id— your platform’s answer ID, used for deduplicationstatus—approved,pending, orrejected(defaults toapproved)is_published—trueorfalse(defaults totrue). Questions whose answers are all unpublished or rejected won’t appear on the storefront.helpful_votes— integerunhelpful_votes— integer
Answerer type inference
When answerer_type is absent or empty, we infer it from the answerer’s name. Names containing any of these terms are classified as merchant: team, support, store, admin, staff, official, owner. Everything else is classified as community.
Examples: “Store Team” → merchant, “Official Response” → merchant, “Jane Smith” → community.
You can always override this by including an explicit answerer_type column.
What gets imported
- Question and answer text
- Questioner and answerer names (preserved as-is from your export)
- Questioner and answerer emails — imported and stored encrypted at rest. Email hashes are used for deduplication.
- Product associations (by Shopify product ID)
- Original dates
- Published and approval status
- Helpful/unhelpful vote counts
- Answerer type (merchant vs community)
What doesn’t get imported
- Q&A media — image attachments on Q&A are not imported
- Threaded replies — BetterReviews stores a flat question + answers structure; nested reply threads are not supported
- Platform-specific fields — any custom attributes specific to your previous tool
Deduplication
It’s safe to import the same file multiple times — duplicates are skipped automatically.
- Questions dedup by
external_question_idfirst, then byquestioner_email_hash + product_id + question_text - Answers dedup by
external_answer_idfirst, then byquestion_id + answerer_email_hash + answer_text
After import: display Q&A on your storefront
Imported Q&A surfaces on product pages via either of two paths:
- Questions tab inside the Reviews widget (default since v2026-05). When you have the BetterReviews Reviews widget on a PDP, a “Questions” tab automatically renders alongside Reviews. The tab carries a count badge showing the number of approved questions that have at least one approved + published answer (the same predicate that controls visibility in the rendered list, so the badge and the panel never disagree). All questions render with all answers visible inline — no chevron, no expand-to-read. Shoppers click between tabs; the widget supports searching question + answer text, sorting (newest, oldest, most helpful, most answered), and pagination on the Q&A side.
- Standalone Q&A widget (
br-qablock). The original block still works for merchants who placed it at a specific position in their theme. New installs don’t need to add it — the inline tab covers the common case.
Either path requires (a) the question has at least one answer with status approved and is_published: true, and (b) the question has product_id populated. Questions with no published answers are hidden from the storefront — they remain importable and visible in your moderation dashboard, but won’t render until at least one answer is approved and published.
To add the standalone block (only if you want Q&A in a custom position outside the Reviews widget):
- Go to your Shopify admin → Online Store → Themes → Customize
- Navigate to a product page template
- Click Add block → find BetterReviews Q&A
- Position it where you want
- Save
Q&A without a product ID is stored but won’t appear anywhere on the storefront until it’s associated with a product.
If you’ve imported questions but they’re not showing on a product page, check three things in this order: the product has either the Reviews widget or a br-qa block in the theme, the question has product_id populated, and at least one of its answers has status: approved and is_published: true. Questions matching the first two but failing the third are intentionally hidden — answer them in the moderation dashboard to publish.
URLs in answer text are automatically rendered as clickable links (showing just the domain or path), open in a new tab, and use rel="nofollow noopener noreferrer ugc" so they don’t pass SEO signal to the destination.
Q&A export
Q&A export is not yet available. Your questions and answers are always accessible via the moderation dashboard and can be exported via the API on request.