Webhooks allow Bazaarvoice to send real-time event notifications to your server when specific actions occur. When a configured event triggers, Bazaarvoice sends an HTTPS POST request to the endpoint URL you specify.
This automated push mechanism eliminates the need for constant API polling, ensuring your system stays synchronized with user-generated content as it happens.
Benefits of using Bazaarvoice webhooks
- Instant updates: Receive notifications immediately when specific review-related actions occur (e.g., a new review is submitted or approved).
- Reduced overhead: Save server resources by reacting to events rather than fetching data on a schedule.
- Seamless integration: Trigger downstream workflows, such as sending thank-you emails, updating internal dashboards, or alerting customer service teams to low ratings.
Read the following sections to learn how to manage and optimize your webhooks:
- How webhook works
- Required solutions and roles
- Create webhook
- Payload delivery
- Edit endpoint
- Archive endpoint
- Webhooks FAQs
How webhook works
- Create a webhook: In the Bazaarvoice Portal, create a webhook by adding an endpoint URL and select the required event triggers to activate the endpoint.
- Secret key: A secret key is generated for every webhook. Save it securely immediately, as it cannot be recovered and is required for your developers to authenticate Bazaarvoice event callbacks.
- Event trigger: An action occurs within the Bazaarvoice platform (e.g., a new review is submitted or approved).
- Payload delivery: Bazaarvoice packages the event data into a JSON payload.
- POST request: Bazaarvoice sends this payload via HTTPS to your pre-configured destination URL.
-
Server acknowledgment: Your server receives the data and returns a 2XX OK status code to confirm successful receipt.
To ensure the integrity of the data, it is highly recommended to use a secure HTTPS endpoint and implement signature verification to confirm that the requests are authentically originating from Bazaarvoice.
Required solutions and roles
You must have the following solution and the following roles:
|
Solution
|
Roles
|
Permissions
|
|---|---|---|
|
Account Administrator
| Can create, view, edit, and archive webhooks. |
|
Technical Administrator
|
Can create, view, edit, and archive webhooks.
|
|
|
Technical Contributor
|
Can create and view a webhook.
|
Create webhook
- Sign in to the Bazaarvoice Portal.
- Select the required client instance name from the Instance Selector drop-down list in the upper-right corner.
-
From the upper-right corner, select the settings icon
.
- Go to the Developer section and select Webhooks.
- Select Add endpoint.
-
On the Add Endpoint page, enter the following details:
- Client Instance: Automatically populated based on your selection in the instance selector at the top right of the Portal (Step 2).
- Endpoint name: A name for the webhook used to identify and manage the endpoint in the Portal.
- Endpoint URL: The URL to which Bazaarvoice sends callback requests.
- Description (Optional): A brief description of the endpoint’s purpose for future reference.
-
Select event triggers: The review event that triggers a callback. The Select Events page provides the necessary options to configure your preferred callbacks.
- Select Add events and select the required event types for which you need payloads.
- The "Secret key generated successfully" message is displayed. Please save this secret key securely—once lost, it cannot be recovered. Your developers need it to authenticate Bazaarvoice event callbacks.
Why secret key is needed
The secret key generated during endpoint creation serves two important purposes:
- Decrypting the email address of the reviewer.
- Verifying the authenticity of event callbacks sent to your callback URL.
Decrypt user email address
The UserEmailAddress is treated as Personally Identifiable Information (PII) and is encrypted using the unique webhook secret key generated during registration. To access this data, the client must decrypt the email address using that same secret key. For detailed instructions on how to decrypt PII, refer to the Bazaarvoice Developer Center.
Validate the authenticity of callbacks
When an event is triggered, Bazaarvoice sends the payload to your configured callback URL. Each request includes a custom header: X-BV-Signature
To validate the callbacks:
- Take the raw request payload exactly as received.
- Use the secret key provided at the time of endpoint creation.
- Generate an HMAC using the SHA-256 algorithm. See the next section for algorithms in different languages.
-
Compare your generated signature with the value in the
X-BV-Signatureheader.- If they match, the request is valid.
- If they don’t, reject the request as it may not be from Bazaarvoice.
How to calculate HMAC
The algorithm to calculate the HMAC Sha256 signature using Kotlin is as follows:
Code |
|
The algorithm to calculate the HMAC Sha256 signature using JAVA is as follows:
Java |
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.math.BigInteger; public static String calcHmacSha256(String secretKey, String data) { try { Mac mac = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"); mac.init(secretKeySpec); byte[] hmacSha256 = mac.doFinal(data.getBytes("UTF-8")); return String.format("%064x", new BigInteger(1, hmacSha256)); } catch (Exception e) { throw new RuntimeException("Failed to calculate hmac-sha256", e); } } |
The algorithm to calculate the HMAC Sha256 signature using Python is as follows:
Python |
import hmac import hashlib def calc_hmac_sha256(secret_key, data): try: byte_key = secret_key.encode('utf-8') message = data.encode('utf-8') hmac_sha256 = hmac.new(byte_key, message, hashlib.sha256).hexdigest() return hmac_sha256 except Exception as e: raise RuntimeError("Failed to calculate hmac-sha256") from e |
The algorithm to calculate the HMAC Sha256 signature using JavaScript is as follows:
JavaScript |
const crypto = require('crypto'); function calcHmacSha256(secretKey, data) { try { const hmac = crypto.createHmac('sha256', secretKey); hmac.update(data); return hmac.digest('hex'); } catch (e) { throw new Error('Failed to calculate hmac-sha256: ' + e.message); } } |
The algorithm to calculate the HMAC Sha256 signature using PHP is as follows:
PHP |
|
Payload delivery
When an event occurs on the Bazaarvoice platform—such as a review submission, approval, rejection, or review request—Bazaarvoice packages the event data into a JSON payload and sends it over HTTPS to your configured endpoint.
The table below lists the supported event types:
|
Event category
|
Event name
|
Description |
|---|---|---|
|
Review collection
|
Review requests & reminders
|
Triggered when order data has been processed and is ready to send review request email (RRE) or reminder (RRR) to consumers. Timing depends on the default wait time set in Ratings & Reviews Configuration.
|
|
Native reviews
|
Review submitted
|
Triggered whenever a review is submitted through native submission forms or directly on your webpage.
|
|
Review approved
|
Triggered whenever a native review is approved by Bazaarvoice.
|
|
|
Review rejected
|
Triggered whenever a native review is rejected by Bazaarvoice. | |
Syndicated reviews | Review added | Triggered whenever a review is added and approved for a source syndicated client. |
| Review removed/rejected | Triggered whenever a review that was approved earlier was later rejected or removed for a source syndicated client. |
Sample payloads
Review requests & reminders
Here is the sample payload sent to your configured endpoint when an RRE or RRR is ready to be sent to your consumers.
JSON |
|
Native review
Here is the sample payload sent to your configured endpoint when a native review is rejected.
JSON |
|
Syndicated review added
Here is the sample payload sent to your configured endpoint when a syndicated review is added.
JSON |
|
Syndicated review removed
Here is the sample payload sent to your configured endpoint when a syndicated review is removed.
JSON |
|
Edit endpoint
- Scroll to the endpoint that you want to edit. Select the action button next to it and select Edit.
- In the Edit Endpoint form, update the necessary information.
- Select Update endpoint.
Archive endpoint
- Scroll to the endpoint that you want to edit. Select the action button next to it and select Archive.
- In the modal that appears, select Archive.
Webhook FAQS
What is a webhook and how does it work in Bazaarvoice?
A webhook is an HTTPS callback that Bazaarvoice sends to your specified endpoint URL when a related event occurs. When a configured event triggers — such as a review being submitted or approved — Bazaarvoice sends an automated POST request to your endpoint in real time.
How do I add a webhook endpoint in the Portal?
Select Add endpoint on the Webhooks page and enter the required details: endpoint name, endpoint URL, and event triggers. Once configured, select required events to activate the endpoint.
Which review events can I configure as webhook triggers?
You can configure webhook triggers by selecting from the available options on the Select Events page.
What should I do if my webhook callbacks are failing?
Verify the following:
- The endpoint URL is correct and publicly accessible
- Your server returns an HTTP 2XX response to acknowledge receipt of the callback.
- Your server is not blocking POST requests from Bazaarvoice.
-
If the issue still persists, please contact Bazaarvoice Support with the endpoint name and the date range of the failed attempts for resolution.
Does Bazaarvoice retry failed webhook callbacks?
Yes. Bazaarvoice has a retry window of 24 hours from the time the event callback was triggered.
How to use a secret key?
The secret key provided during endpoint creation serves two important purposes:
- Decrypting the user email of the reviewer.
- Verifying the authenticity of event callbacks sent to your callback URL.
What happens to the archived endpoint?
When an endpoint is archived, the URL specified in the webhook endpoint configuration will no longer receive callbacks for event triggers. However, you can still view the endpoint details in the dashboard.
How to validate the authenticity of callbacks?
When an event is triggered, Bazaarvoice sends the payload to your configured callback URL. Each request includes a custom header:X-BV-Signature
To validate the callbacks, follow these steps:
- Take the raw request payload exactly as received.
- Use the secret key provided at the time of endpoint creation.
- Generate an HMAC using the SHA-256 algorithm
-
Compare your generated signature with the value in the X-BV-Signature header.
- If they match, the request is valid.
- If they don’t, reject the request as it may not be from Bazaarvoice.
Will I receive a callback event in real time when a native review is added or removed for a source syndicated client?
Not necessarily. Callback event timing depends on the syndication delay agreed between the source syndication client and the destination client, plus up to an hour of additional time for data synchronization.
Will I start receiving syndicated review event callbacks as soon as I create a new webhook?
No. It takes approximately 6 to 12 hours for a newly created webhook to begin processing syndicated review events. Additionally, event delivery timing remains subject to the syndication delay.
What syndication events are supported?
Bazaarvoice support two primary syndication events:
- Review added event: Triggered when a review is approved for a source syndicated client.
- Review removed/rejected event: Triggered whenever a review that was approved earlier was later rejected or removed for a source syndicated client.
Can the source syndicated client set up a webhook to push syndicated reviews to a destination client?
No. Webhooks can only be created by the destination client to receive review events.
Can I use the same callback URL for both native and syndicated review events?
Yes, a single callback URL can be used to subscribe to any review events.
Will I receive syndicated review events from all my source syndicated clients for a syndication-enabled webhook?
Yes. The webhook callback URL configured for syndication will receive syndication review events from all the source syndicated clients.
How do I stop webhook syndication?
You can edit the webhook configuration by disabling the syndication event or archive the webhook to stop receiving all events, including syndication events.