Import Reviews via Webhook in WiserReview

Set up webhook-based review imports into WiserReview from external platforms like Kajabi, Zapier, or custom systems. Covers endpoint creation and connection naming.

🛍️ Google Shopping eligibility

Reviews imported from third-party platforms are stored separately and excluded from the Google Product Ratings feed, per Google’s partner content policy. They still display on your storefront and inside your widgets. To syndicate to Google Shopping, collect reviews natively through WiserReview’s email request or on-site form.

See: Which Reviews Are Syndicated to Google →

Import reviews you already have in another platform or your own system into WiserReview by posting them to a webhook endpoint. Use this when your existing reviews live outside WiserReview and you want them displayed and managed alongside your other reviews.

  1. Open the Integrations tab from the left side menu.
  2. Find the webhook integration for importing reviews and click Edit.
Import reviews via webhook in WiserReview

Give the integration a remark or connection name and click Create.

Name the webhook integration and create it
  1. Once the integration is created, WiserReview provides an endpoint URL.
  2. Copy the endpoint URL from the integration.
Copy the endpoint URL from the integration
  1. Send sample data to that endpoint URL so you can map the fields in WiserReview. Once the sample is received, map each field to the matching WiserReview field.
Send sample data to map the fields

Select and map each field as you want, then click Add to save the mapping.

Two fields are required: {{USERNAME}} and {{REVIEW_RATING}}. Reviews will not be saved unless both are mapped.

Required fields for review import mapping How do I use these placeholders in my webhook setup?

This JSON example shows how to map the fields your system sends to the fields WiserReview accepts. Each placeholder inside {{ }} is a variable your system replaces with real review data before sending it to WiserReview.

For example, {{USERNAME}} is replaced with the reviewer’s full name, and {{PRODUCT_NAME}} with the product name. Map each placeholder to the matching data in your source system.

Use this format when setting up your webhook so all review details are sent correctly to WiserReview.


{
  "{{USERNAME}}": "Reviewer full name",
  "{{EMAIL}}": "Reviewer email",
  "{{PHONE}}": "Reviewer phone number",
  "{{STATE}}": "Reviewer state",
  "{{COUNTRY}}": "Reviewer country",
  "{{IP}}": "Reviewer IP address",
  "{{LATITUDE}}": "Reviewer latitude",
  "{{LONGITUDE}}": "Reviewer longitude",
  "{{PRODUCT_NAME}}": "Product name",
  "{{PRODUCT_ID}}": "Product ID",
  "{{PRODUCT_URL}}": "Product detail page URL",
  "{{PRODUCT_IMAGE}}": "Product image",
  "{{REVIEW_TITLE}}": "Review title",
  "{{REVIEW_TEXT}}": "Review text (review body)",
  "{{REVIEW_RATING}}": "Review rating",
  "{{CAPTURE_DATE}}": "Review created date",
  "{{F_NAME}}": "Reviewer first name",
  "{{L_NAME}}": "Reviewer last name",
  "{{SKU}}": "Product SKU",
  "{{VARIANT_ID}}": "Product variant ID",
  "{{REVIEW_SOURCE_ID}}": "Review ID",
  "{{REVIEW_IMAGE}}": "Review image",
  "{{REVIEWER_IMAGE}}": "Reviewer image (user image)"
}
    
After you complete the mapping, you can begin sending the data, and we’ll start saving it in WiserReview.
document.addEventListener(‘DOMContentLoaded’, function() { document.querySelectorAll(‘.copy-button’).forEach(function(button) { button.addEventListener(‘click’, function() { var container = this.closest(‘.response-container’); var range = document.createRange(); range.selectNode(container); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); try { var successful = document.execCommand(‘copy’); var msg = successful ? ‘successful’ : ‘unsuccessful’; console.log(‘Copying text command was ‘ + msg); if (successful) { this.textContent = ‘Copied’; setTimeout(() => { this.textContent = ‘Copy’; }, 2000); } } catch (err) { console.log(‘Oops, unable to copy’, err); } window.getSelection().removeAllRanges(); }); }); });