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:

  1. Upload. Drop your CSV file in. Limits: 50 MB, 100,000 rows, one concurrent import per store.
  2. LLM column mapping. We run an LLM pass to map your columns to BetterReviews fields. It recognises common variations automatically.
  3. Review the mapping. You see the proposed mapping in an editable table. Override any column you don’t like.
  4. Dry run. We simulate the import and report how many Q&A pairs would succeed, fail, or deduplicate.
  5. Dry run preview. Review the summary. If anything looks wrong, go back to step 3.
  6. Start import. Runs in the background.
  7. 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 deduplication
  • answerer_name — display name for the answerer
  • answerer_email — stored encrypted at rest
  • answerer_typemerchant, community, or admin. 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 deduplication
  • external_answer_id — your platform’s answer ID, used for deduplication
  • statusapproved, pending, or rejected (defaults to approved)
  • is_publishedtrue or false (defaults to true). Questions whose answers are all unpublished or rejected won’t appear on the storefront.
  • helpful_votes — integer
  • unhelpful_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_id first, then by questioner_email_hash + product_id + question_text
  • Answers dedup by external_answer_id first, then by question_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-qa block). 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):

  1. Go to your Shopify admin → Online Store → Themes → Customize
  2. Navigate to a product page template
  3. Click Add block → find BetterReviews Q&A
  4. Position it where you want
  5. 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.