Important note:

  • For security reasons, we strongly recommend that all partners build the integration using the OAuth approach, and request access to only necessary data. Otherwise, we can't verify and promote your integration officially.
  • Partner integrations need to be tested and verified by before any mass promotion.

1. How to integrate with

Step 1: Read our getting started guides

  • Check the table below and find which categories your app integration falls into. Click on the link in each category to jump to detailed guidelines.


How to build integration with

Category 1:

  • Product recommendations & Upselling
  • Smart search & filter
  • Page builders

Use’s cache server (recommended) or widget API. 

Category 2:

  • Rewards
  • Marketing automations
  • Email marketing 
  • Storefront notifications

Create webhook to pull information from 

Category 3: SEO

Add’s code to your product’s snippet. 

Category 4: Shipment tracking

Update delivery status to Shopify, no need to get any data from 

Category 5: Translation

Provide translations on the fly. 

If you are an e-commerce platform, tech app, or agency partner that is not on the list above, you can contact us at to discuss more.

Step 2: Develop your integration

Our guidelines and API documentation should provide you enough information to build your integration. If you have technical questions, send an email to and include relevant screenshots/screencast if possible.

Need a development store?

Step 3: Submit your integration for technical review

When you've finished the integration, submit this technical review form with testing credentials and a demo video including step-by-step instructions to test your integration. We’ll test your integration and get back to you within approximately 2 weeks.

Step 4. Promote the integration

After we finish testing and verifying the integration, we'll move forward with co-marketing activities, please find more details here.

2. Some integration tips for specific apps

In the following sections, we outline some tips and address common questions for specific types of apps:

2.1. For product recommendations and upselling, search apps and page builders

To display widget information (stars, aggregate ratings, review count, carousel, specific product reviews, etc.) as part of your own widget appearing on the store’s front end, you can follow either of these two approaches:

  1. Make a request to our cache server (recommended). It’s not only faster than using API but also allows multiple widgets to be loaded in a single request. This approach only works for’s Awesome paid stores. Widgets are updated (almost) instantly (delay is no more than a few minutes).
  2. Using Widget API via our CDN domain, instead of This approach is available to’s Free stores but only works for those stores with small to medium scale (in terms of traffic). Widgets may not be updated instantly (delay is no more than 20 minutes).

2.2. For rewards, marketing automations, email marketing & storefront notifications apps

If you want to get our review information to perform a specific action, you can create webhooks on your side to pull information from us. 

To build this integration, you'll need to follow our OAuth process and request only the necessary permission scopes from users. Normally, apps falling into this category need read_reviews and read_reviewers permission scopes. If you are requesting more scopes, our QA team will check if those scopes are necessary for your use cases and might ask you more questions to validate the scopes.

Some common use cases are:

  • For reward apps: Users enable the integration and set up the reward campaigns in the partner's apps. When a new review is submitted that satisfy the reward conditions, we'll send an event to the partner apps that trigger a reward (e.g. points, coupon codes, etc.) to the customers. 
  • For marketing automation apps: When a new review is submitted, we'll send an event to the partner apps. Users can use this event to trigger actions in another apps.
  • For email marketing apps: When a new review is submitted, we'll send an event to the partner apps with review information as custom attributes. Users can use these attributes to segment the customers and send follow-up email campaigns.
  • For storefront notification apps: When a new review is submitted, we'll send the review information to the partner apps so they can display a storefront notification of the review content.

2.3. For SEO apps

If you want to get our schema markup to display product reviews in rich snippets, please add these three lines of code in the products' snippet (the #product after @id is optional).

{%- if product.metafields.judgeme -%}

"@id": {{ canonical_url | append: '#product' | json }},

{%- endif -%}

In general, your JSON-LD script needs to have an @id. Our app will detect the @id of your script and replicate it to merge our AggregateRating with the rest of your script. The integration will link your JSON-LD product snippets with our JSON-LD review snippets, helping your users to show ratings in organic search.

2.4. For shipment tracking apps

As a shipment tracking apps, you can update the “Delivered” status to Shopify. We will track that status and schedule the review requests upon order delivery (instead of fulfilment) when merchants enable the Delivery-based requests feature in 

2.5. For translation apps

We already pushed our own translations to Shopify for widgets texts, so integration with a translation app is normally not required anymore (i.e. translation within Shopify secondary languages via translatable resources). The only exception is an integration that provides translations of the page content on the fly like Weglot, and translations out of Shopify secondary languages.

We also don't encourage you to modify/translate our Shopify metafields (any metafield containing "judgeme"), because:

  • Those metafields contain HTML code and it's fairly easy to break them by accident, which means breaking the store pages.
  • We update the content of those metafields every time there is a change in our system. So the translations would have to be updated every time there is a change in the metafield.