Javascript API Methods

Fetch reviews

See List Reviews

List all reviews

Fetch all reviews, including store reviews and product reviews.

fera.api.listReviews().then(({ meta, reviews }) => {
  console.log(`Found ${ meta.total_count } reviews`);
  
  reviews.forEach((review) => {
    if (review.product) {
    	console.log(`${ review.customer.get('display_name') } rated ${ review.product.get('name') } ${ review.rating }/5.`);
    } else {
    	console.log(`${ review.customer.get('display_name') } rated the store ${ review.rating }/5.`);
    }
  });
});

List reviews for a specific product

List only reviews about a specific product.

fera.api.listProductReviews('PRODUCT_ID').then(({ meta, reviews, product }) => {
  console.log(`Found ${ meta.total_count } reviews for product ${ product.get('name') }`);
  
  reviews.forEach((review) => {
    console.log(`${ review.customer.get('display_name') } rated the product ${ review.rating }/5.`);
  });
});

Fetch ratings

See List ratings

Retrieve product rating

fera.api.retrieveProductRating('PRODUCT_ID').then((rating) => {
	console.log(`That product is rated ${ rating.average }/5 and has ${ rating.count } reviews`);
});

List multiple product ratings

👍

Go ahead, do multiple fera.api.retrieveProductRating

The retrieveProductRating method will automatically combine requests into one if placed within 1ms of each other.


Promise.all(['PRODUCT_ID1', 'PRODUCT_ID2'].map(
  productId => fera.api.retrieveProductRating(productId))
).then((ratings) => {
  ratings.forEach((rating) => {
    console.log(`Product with ID ${ rating.get('external_product_id') } is rated ${ rating.average }/5 and has ${ rating.count } reviews`);
  });
});

Retrieve store's overall rating

fera.api.getRating().then((rating) => {
	console.log(`This store's rated ${ rating.average }/5 and has ${ rating.count } reviews`);
});

Fetch photos & videos (media)

List all photos & videos

fera.api.listMedia().then(({ meta, media }) => {
  console.log(`Found ${ meta.total_count } photos/videos.`);
  
  media.forEach((m) => {
    console.log(`${ m.customer.get('display_name') } submitted ${ m.get('type') }: ${ m.get('url') }.`);
  });
});

List photos and videos for a specific product

fera.api.listProductMedia('PRODUCT_ID').then(({ meta, media }) => {
  console.log(`Found ${ meta.total_count } photos/videos for product.`);
  
  media.forEach((m) => {
    console.log(`${ m.customer.get('display_name') } submitted ${ m.type }: ${ m.url }.`);
  });
});

Show submission modal

Show the review/photo/video submission modal.

fera.showContentSubmitter();

Push conversion event

Let Fera know that a purchase (AKA order) has occurred. This will trigger scheduling of review requests in the future.

fera.push('order', { // FYI fera.push('pushOrder' also works, this is just more readable
  id:            "12345",
  line_items: [{
    name:         "Product 123",
    product_id:   "product-123",
    variant_id:   "variation1", // If variant exists
    total:        100.0
  }],
  customer_id:   "customer-123"
});

Set current state

Set current product

fera.push('setProduct', {
  "id":                   "product-123", // String
  "name":                 "Product 123", // String
  "price":                99.89, // (Optional) Float
  "url":                  "https://www.example.com/products/product-123", // String
  "thumbnail_url":        "https://cdn.example.com/products/product-123/image.png" // String
});

👍

As long as you installed one of our site platform apps (like our Shopify App, Wix App or BigCommerce App) then this is done automatically for you.

Set current customer

Tells Fera who the current customer that is browsing the site is so they can be prefilled into the customer review submission modal (if they didn't click on a review request link).

fera.setCustomer({ 
  name: "Tobias Funke", 
  email: "[email protected]",
});

🚧

This can be untrustworthy

Consider using the URL API instead to confirm that the customer email is actually owned by the current user. Setting the email from the JavaScript side of things can be faked!

Listen to events

Use the on() method to listen to client-side events like this:

fera.on('submitter.show', (submitter) => console.log("Content submission modal was just shown."));

See Javascript API Events for a list of events you can listen for.

Other Methods

Set the current language/locale

fera.setLocale('fr'); // Sets the storefront widget language to French.