I wanted to make a custom review app for a sportswear brand. The theme to implement it on is Dawn. I first thought about using Shopify metaobjects, but due to limits in looping through all the "review objects" (50), I decided to instead use a JSON metafield, then I could store all the reviews as JSON and read that JSON from the backend.
Get the Airtable base here.
Architecture
1. Airtable for storing reviews and handling form submissions for new reviews
2. A python script to sync reviews from Airtable to the Shopify metafield, this could "easily" be made an app for the Shopify app store in the future
3. A snippet that is included in the main-product.liquid that displays the data in the metafield as a review section
Airtable
We use form view iframe that is embedded in the review section frontend code.
Get the Airtable base here.
Python script - syncing
I will open source this later, but it works like this:
1. Airtable API to retrieve records
2. Upload image to Shopify if any, and get back cdn url to use in the JSON structure
3. Use Shopify API to update the metafield JSON with the retrieved cdn urls + values from airtable.
The syncing can be optimized further.
Shopify liquid code
Thanks to Billy for the frontend code. All the code for this sportswear brand is open source and can be found on github.
Final result
The result can be seen on the product page for famme.no. When submitting a review, you get a popup with the airtable form in an iframe.