<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Junip]]></title><description><![CDATA[Reviews for products worth talking about]]></description><link>https://junip.co/blog/</link><image><url>https://junip.co/blog/favicon.png</url><title>Junip</title><link>https://junip.co/blog/</link></image><generator>Ghost 5.32</generator><lastBuildDate>Wed, 08 Apr 2026 12:20:50 GMT</lastBuildDate><atom:link href="https://junip.co/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip]]></title><description><![CDATA[<p><strong>tl;dr</strong> Pointblank Marketing helped Komodo Pickleball transition from an underperforming review platform to Junip, resulting in a 540% increase in customer reviews and significantly improved email engagement metrics&#x2014;all while future-proofing their review collection strategy.</p><h2 id="the-challenge">The Challenge</h2><p>Komodo Pickleball struggled with Loox as their review platform because:</p><ul><li>Not</li></ul>]]></description><link>https://junip.co/blog/agency-partner-achieves-540-increase-in-customer-reviews-within-3-months-by-migrating-to-junip/</link><guid isPermaLink="false">681bc01dcd94e257856a2116</guid><category><![CDATA[Case study]]></category><dc:creator><![CDATA[Marcus Cardoso]]></dc:creator><pubDate>Wed, 14 May 2025 16:03:03 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2025/05/KomodoP_AndersonScarpa_BlackBG.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2025/05/KomodoP_AndersonScarpa_BlackBG.png" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip"><p><strong>tl;dr</strong> Pointblank Marketing helped Komodo Pickleball transition from an underperforming review platform to Junip, resulting in a 540% increase in customer reviews and significantly improved email engagement metrics&#x2014;all while future-proofing their review collection strategy.</p><h2 id="the-challenge">The Challenge</h2><p>Komodo Pickleball struggled with Loox as their review platform because:</p><ul><li>Not all customers were receiving review requests as they failed to send properly</li><li>Only collected a handful of reviews over 3 months</li><li>Limited customer response due to friction in the review process and missed opportunities to solicit feedback</li></ul><p>They were out of options to fix this in Loox, and were unsure of what a migration to another platform would look like.</p><h2 id="the-solution">The Solution</h2><p>Pointblank Marketing, who manages Komodo&apos;s retention marketing, recommended Junip based on previous success with similar clients. Their implementation included:</p><ul><li><strong>One-day setup</strong>: Drag-and-drop installation of faster, branded review widgets on the website</li><li><strong>Seamless integration</strong>: Connected Junip directly with Klaviyo for centralized marketing automation</li><li><strong>Optimized email flow</strong>: Created a review request flow in Klaviyo triggered by Junip&apos;s events</li></ul><blockquote>&quot;Moving to Junip was strategic for us. We needed a review solution that would give us the flexibility we need to do our best work and also scale with the client&apos;s growth without becoming prohibitively expensive. Junip&apos;s unlimited model ensures predictable costs as sales increase, while giving us more tooling around how we present and collect reviews.&quot; &#x2013; <em>Julien Normand, Co-owner of Pointblank Marketing.</em></blockquote><p>The new review request flow in Klaviyo leverages Junip&apos;s dynamic variables for personalization, includes product-specific copy about paddle performance, and offers an incentive for completing reviews.<br></p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc8BvjXxlaOnSR0pEwRU_ABcB77-Q_tEdprx9XUABnEnbgou836LdRVrjL5I6TqN1mtZRuAOjTQmSWI53KI90qvvAiPgm_k6uMCgDoKxIkGWMt6OZSGPclyQvtLJZLkqyXZUCeVXQ?key=9ZVCTAM1-vapYcj5iZZofA" class="kg-image" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip" loading="lazy" width="273" height="334"></figure><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd8Cg9bxNnEUfcOPNs9xUuJLsXViKLIKemavhgf_7oXRAbDh4SgxbLBT3nNnZFeepq1mhvLGm4cKz2h_WP9zk43ppHvi1N5d7CtIWnvZ3QJWarTOCrhmW6YxMVqzbx35_gIVa5pFA?key=9ZVCTAM1-vapYcj5iZZofA" class="kg-image" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip" loading="lazy" width="343" height="337"></figure><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdShV844zbfknvnkGgVguh2bGmc_pZxdC7YlP26j_zxRMP_3IuvCcajaaTUonGtcLJ8R3SI6yS7QeY1AMvdYPoWe10j4DRmzejYXkGXD2vzJimz66DR-HIEP7Wjq6Zi--d9p9cV0w?key=9ZVCTAM1-vapYcj5iZZofA" class="kg-image" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip" loading="lazy" width="278" height="347"></figure><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc8mqYmrOeZ_gU94PfJj3-d5lAHzZvzkz8S9nxKhQGSg6o1VUeYlu0Upcsr4FLzHiXscaBLo4F-_PXtOiHzaCo2q6qEGAclY6COCyXP-dn8RD5z6tZ6x9P3OL6b2pObhxaHt_9WKQ?key=9ZVCTAM1-vapYcj5iZZofA" class="kg-image" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip" loading="lazy" width="97" height="346"></figure><h2 id="immediate-results">Immediate Results</h2><p>Within just one week of implementing Junip, Komodo Pickleball saw:</p><ul><li>35 new reviews collected (more than their previous 3 months combined)</li><li>60% email open rates</li><li>8.43% click rates (100% increase from previous review flows)<br></li></ul><p>The dramatic improvement stemmed from:</p><ol><li>More intuitive dashboard for setting up and managing reviews</li><li>Giving their agency the tools to create purpose-built review flows in Klaviyo</li><li>Mobile-optimized review forms that make it easier for customers to review<br></li></ol><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2025/05/ezgif.com-crop.gif" class="kg-image" alt="Agency partner achieves 540% increase in reviews within 3 months by migrating to Junip" loading="lazy" width="800" height="1361" srcset="https://junip.co/blog/content/images/size/w600/2025/05/ezgif.com-crop.gif 600w, https://junip.co/blog/content/images/2025/05/ezgif.com-crop.gif 800w" sizes="(min-width: 720px) 720px"></figure><h2 id="impact-after-3-months">Impact After 3 Months</h2><p>After three months with Junip, Komodo Pickleball has achieved:</p><ul><li>Nearly 100 reviews collected (540% increase from previous platform)</li><li>Consistent 21% review submission rate</li><li>7% media attachment rate (customers adding photos/videos)</li><li>Shift from volume-based pricing to Junip&apos;s unlimited plan, allowing for unlimited orders and review requests as they scale</li></ul><h2 id="take-action">Take Action</h2><p>Reviews work well on their own, but they&#x2019;re more powerful with a finely tuned email strategy, when the different parts of your business talk to each other, and when an expert can set up and maintain these flows to ensure they&#x2019;re working at their best. </p><p>Whether you&#x2019;re an existing or new user, a brand with 100 orders per month or 100,000, or a marketer with clients facing similar challenges - work with Junip and Pointblank Marketing to supercharge your reviews today. <a href="https://junip.co/p/marcus">Get started here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to get the most reviews with Klaviyo, advice from one of Klaviyo’s Elite partners]]></title><description><![CDATA[Elite Klaviyo Partner, Ben Zettler, walks us through his strategies for Klaviyo reviews through Junip: including deliverability, A/B testing, SMS]]></description><link>https://junip.co/blog/how-to-get-the-most-reviews-with-klaviyo-advice-from-one-of-klaviyos-elite-partners/</link><guid isPermaLink="false">675c85ddcd94e257856a1e89</guid><category><![CDATA[Review strategy]]></category><category><![CDATA[Ecommerce strategy]]></category><dc:creator><![CDATA[Marcus Cardoso]]></dc:creator><pubDate>Mon, 16 Dec 2024 20:50:31 GMT</pubDate><content:encoded><![CDATA[<p>I managed to steal some time from one of Klaviyo&#x2019;s Elite partners, Ben Zettler of <a href="zettlerdigital.com">Zettler Digital</a>, to find out how brands can best use Junip &amp; Klaviyo together. He sat down with us during the busiest time of the year to talk about his favorite tactics for review messages; specifically around deliverability, A/B testing, SMS sending, and review data in Klaviyo.</p><hr><h3 id="let%E2%80%99s-start-simple-why-might-some-merchants-choose-to-send-review-requests-through-klaviyo-can%E2%80%99t-most-review-apps-send-those-themselves">Let&#x2019;s start simple, why might some merchants choose to send review requests through Klaviyo, can&#x2019;t most review apps send those themselves?</h3><p></p><p>We&#x2019;re advocates of leveraging a single platform for marketing communications because it&#x2019;s beneficial for both branding and performance. Email providers like Gmail, Outlook, and Yahoo favor consistency, so sending all emails from a single server improves deliverability and enhances your brand&#x2019;s reputation.</p><p>Using a tool like Klaviyo provides full visibility into how customers interact with your emails, giving you more control over messaging and their overall experience. It also unlocks advanced features, such as A/B testing, allowing you to analyze how different formats impact engagement and optimize your strategy accordingly.</p><h3 id="i%E2%80%99m-interested-in-the-ab-testing-piece-you-mentioned-we-see-a-lot-of-merchants-talk-about-this-but-often-they-don%E2%80%99t-know-what-to-test-here-what-have-you-found-helpful-with-ab-tests">I&#x2019;m interested in the A/B testing piece you mentioned. We see a lot of merchants talk about this, but often they don&#x2019;t know what to test here. What have you found helpful with A/B tests?</h3><p></p><p>For owned marketing testing (ie. email, SMS, or even push notifications), we recommend structuring tests in a similar way as we do for advertising, where what you test depends on your advertising spend. The higher the spend, the more subtle elements you can test. </p><p>For brands that have large send volume for review flows, they can test minor changes, like a headline at the top of a message, or the words in a CTA button. For brands with lower send volume (a few hundred emails monthly), I&#x2019;d suggest focusing on bigger changes, like testing a letter from the founder highlighting your brand&#x2019;s story and the value of customer feedback, versus offering a giveaway that can be entered by submitting reviews.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/12/a-b-test-format-in-klaviyo.png" class="kg-image" alt loading="lazy" width="1230" height="922" srcset="https://junip.co/blog/content/images/size/w600/2024/12/a-b-test-format-in-klaviyo.png 600w, https://junip.co/blog/content/images/size/w1000/2024/12/a-b-test-format-in-klaviyo.png 1000w, https://junip.co/blog/content/images/2024/12/a-b-test-format-in-klaviyo.png 1230w" sizes="(min-width: 720px) 720px"></figure><h3 id="we-know-that-deliverability-is-an-important-part-of-being-able-to-send-effective-review-requests-what-advice-do-you-have-for-brands-looking-to-improve-the-deliverability-of-klaviyo-review-requests">We know that deliverability is an important part of being able to send effective review requests. What advice do you have for brands looking to improve the deliverability of Klaviyo review requests?</h3><p></p><p>Deliverability is all about targeting users likely to engage and avoiding those who consistently don&#x2019;t. Prioritize sending to users who have placed multiple orders, clicked on previous emails, or recently interacted with your site. Conversely, exclude users who haven&#x2019;t opened or clicked after multiple emails over a long period or who frequently soft bounce.</p><p>I like to think of email deliverability like pouring water into a bottle through a funnel: a slow, measured approach ensures success. Sending emails to your entire list at once (&#x201C;batch and blast&#x201D;) is like nails on a chalkboard for me. Instead, stagger your sends, starting with highly engaged users, and gradually include less active ones to avoid red flags from email providers. For example, during a major sale, send your 9:00AM launch email to the most engaged users first, then use Klaviyo to gradually reach out to less active segments over several hours.</p><p>The same principles apply to review related flows: review requests are triggered for someone that has recently placed an order so they are likely to engage, but if brands are concerned, they can add filters to exclude disengaged users. A thoughtful, segmented approach is key to successful email marketing and strong deliverability.</p><h3 id="is-there-any-benefit-to-building-segments-with-klaviyo-reviews-data">Is there any benefit to building segments with Klaviyo reviews data?</h3><p></p><p>Absolutely - it&apos;s reasonable to assume that users who have left a review previously are more engaged than those that have not. Since Junip can let Klaviyo know when someone leaves a review (and include info like the star rating of the review), you can then use this data to segment these profiles for others actions in the future. For example; you can survey these users, send them limited product releases, give exclusive early access to a sale, or anything else that you may not otherwise send more widely to your entire list.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/12/segment-builder-of-reviewers-klaviyo.png" class="kg-image" alt loading="lazy" width="1850" height="762" srcset="https://junip.co/blog/content/images/size/w600/2024/12/segment-builder-of-reviewers-klaviyo.png 600w, https://junip.co/blog/content/images/size/w1000/2024/12/segment-builder-of-reviewers-klaviyo.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/12/segment-builder-of-reviewers-klaviyo.png 1600w, https://junip.co/blog/content/images/2024/12/segment-builder-of-reviewers-klaviyo.png 1850w" sizes="(min-width: 720px) 720px"></figure><h3 id="sms-is-a-new-channel-that-lots-of-merchants-haven%E2%80%99t-quite-cracked-yet-do-you-have-any-thoughts-on-how-they-should-approach-sms-in-review-messages">SMS is a new channel that lots of merchants haven&#x2019;t quite cracked yet. Do you have any thoughts on how they should approach SMS in review messages?</h3><p></p><p>I am generally not the biggest advocate for sending out a lot of SMS campaign content because it&apos;s expensive and not everyone wants to receive SMS content to begin with. In most cases, users have signed up for SMS to receive a first purchase discount incentive, so outside of major sale announcements or an extremely enticing product launch, our rule of thumb is to avoid sending messaging to your entire list. </p><p>The power of SMS is in triggered messaging and, in particular, transactional content. Review content can offer a good use-case for this, for example, sending a review request via SMS for users that just had their order delivered 5 days before. To make it more personal, use post-purchase survey data: if someone bought a gift, ask how their loved one is enjoying it instead of the standard &#x201C;How do you like the product?&#x201D; to boost engagement.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/12/sms-review-request-flow-example.png" class="kg-image" alt loading="lazy" width="1210" height="940" srcset="https://junip.co/blog/content/images/size/w600/2024/12/sms-review-request-flow-example.png 600w, https://junip.co/blog/content/images/size/w1000/2024/12/sms-review-request-flow-example.png 1000w, https://junip.co/blog/content/images/2024/12/sms-review-request-flow-example.png 1210w" sizes="(min-width: 720px) 720px"></figure><hr><p>Ben - thanks so much for taking the time to chat with us and break down some of these concepts. Brands looking to add more bandwidth to their team and supercharge their marketing can get in touch with him at <a href="http://zettlerdigital.com">zettlerdigital.com</a>. The team knows how to get the most from Klaviyo &amp; Junip, and they&#x2019;ve always been a pleasure to work with. They&#x2019;re currently accepting new clients so you can get in touch with their team to see if it could be a good fit!</p>]]></content:encoded></item><item><title><![CDATA[How Mobile-first Review Forms Increased Koala Eco's Review Submission Rate by 278%]]></title><description><![CDATA[Junip's mobile-first review forms helped Koala Eco increase their review submission rate by 278% and gain deeper customer insights.]]></description><link>https://junip.co/blog/how-mobile-first-review-forms-increased-koala-ecos-review-submission-rate-by-278/</link><guid isPermaLink="false">671bcc54cd94e257856a1b91</guid><category><![CDATA[Case study]]></category><dc:creator><![CDATA[Leah Morassut]]></dc:creator><pubDate>Thu, 07 Nov 2024 21:50:12 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/11/koala-eco-blog-tile.webp" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/11/koala-eco-blog-tile.webp" alt="How Mobile-first Review Forms Increased Koala Eco&apos;s Review Submission Rate by 278%"><p><a href="https://koala.eco/">Koala Eco</a> is an Australian-based brand committed to creating nontoxic, plant-based products for a clean home, mind, and body. Their mission is clear: delivering high-quality products that make a difference. As a best-in-class brand, Koala Eco recognizes the importance of using tools that reflect its values. </p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/image.png" class="kg-image" alt="How Mobile-first Review Forms Increased Koala Eco&apos;s Review Submission Rate by 278%" loading="lazy" width="1920" height="960" srcset="https://junip.co/blog/content/images/size/w600/2024/10/image.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/image.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/10/image.png 1600w, https://junip.co/blog/content/images/2024/10/image.png 1920w" sizes="(min-width: 720px) 720px"></figure><h3 id="the-challenge">The challenge</h3><p>Koala Eco previously used Judge.me to collect reviews from their customers. Claire Dalziel, Koala Eco&apos;s Director of Marketing and eCommerce, referred to the platform as not being &quot;particularly fresh or user-friendly&quot; and said they were ready for a change. In search of a better option, they looked at what other brands they aspired to be like were using and saw that many were using Junip.</p><p>In addition to wanting something a bit more fresh and up-to-date, 2 pain points in specific motivated the switch:</p><ol><li><strong>Judge.me&apos;s review form was unclear</strong>. The form design was confusing, prompting customers to review their entire order instead of specific products. As a result, customers left vague, non-specific reviews.</li><li><strong>Review syndication was broken</strong>. Koala Eco has a US and AUS site selling the same products. It was a huge challenge for the team to manually bring over reviews from one site to another without missing some or including duplicates. At times they had to involve their developer which complicated it even more.</li></ol><h3 id="solution">Solution</h3><p>Junip&apos;s <a href="https://junip.co/blog/why-mobile-first-reviews-matter-for-brands/">mobile-first review forms,</a> which prompt customers to review each item in their order, helped Koala Eco see an immediate difference in their reviews. For starters, the number of reviews they received skyrocketed. <strong>They went from receiving an average of 62 reviews per month with Judge.me to an average of 235 per month with Junip.</strong></p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/Screenshot-2024-10-30-at-4.31.09-PM.png" class="kg-image" alt="How Mobile-first Review Forms Increased Koala Eco&apos;s Review Submission Rate by 278%" loading="lazy" width="1236" height="764" srcset="https://junip.co/blog/content/images/size/w600/2024/10/Screenshot-2024-10-30-at-4.31.09-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/Screenshot-2024-10-30-at-4.31.09-PM.png 1000w, https://junip.co/blog/content/images/2024/10/Screenshot-2024-10-30-at-4.31.09-PM.png 1236w" sizes="(min-width: 720px) 720px"></figure><p>Not only was Koala Eco collecting way more reviews, but the level of clarity and personalization was significantly better.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/j9Wi8i-vKCA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="How Junip helps Koala Eco collect personalized &amp; insightful reviews"></iframe></figure><p><strong>The detailed reviews give the team huge insight into different cohorts</strong>. For example, in some reviews, customers will talk about how they used the products in an Airbnb they stayed in, or some people will talk about how they&apos;re planning to have a family and want to detoxify their homes. All of these details give context into their customers&apos; lifestyles and help Koala Eco better understand their customers.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/Group-48095825.png" class="kg-image" alt="How Mobile-first Review Forms Increased Koala Eco&apos;s Review Submission Rate by 278%" loading="lazy" width="1239" height="340" srcset="https://junip.co/blog/content/images/size/w600/2024/10/Group-48095825.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/Group-48095825.png 1000w, https://junip.co/blog/content/images/2024/10/Group-48095825.png 1239w" sizes="(min-width: 720px) 720px"></figure><p><strong>Junip also solved Koala Eco&apos;s biggest internal problem: review syndication across their AUS and US storefronts</strong>. No more headaches or wasted time trying to figure out how to get reviews from one site to another. Junip&apos;s <a href="https://junip.co/blog/what-is-review-syndication-how-does-it-work/">multi-store syndication</a> automatically shares reviews between their two storefronts.</p><h3 id="results">Results</h3><p>Since switching to Junip in April of 2024, Koala Eco has achieved the following results:</p><ul><li>Increased their review submission rate by 278% &#x2013; from 1.68% with Judge.me to 6.17% with Junip</li><li>Maintained a 4.98 average product rating across 2,900+ reviews </li><li>Koala Eco averaged 62 reviews per month with Judge.me. After switching to Junip, this number increased to 235 reviews per month on average</li></ul><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt="How Mobile-first Review Forms Increased Koala Eco&apos;s Review Submission Rate by 278%" loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure>]]></content:encoded></item><item><title><![CDATA[How the FTC's fake review rule impacts ecommerce stores]]></title><description><![CDATA[<p>As of October 21st, 2024 the FTC has put into effect its &#x201C;<a href="https://www.ftc.gov/system/files/ftc_gov/pdf/r311003consumerreviewstestimonialsfinalrulefrn.pdf">final rule</a>&#x201D; banning fake online reviews &amp; testimonials. Much of the new rule is updating &amp; clarifying previously existing rules to explicitly call them out as fraud. It is also clear the FTC plans to enforce</p>]]></description><link>https://junip.co/blog/the-new-ftc-review-rule-and-what-it-means-for-your-business/</link><guid isPermaLink="false">672143d1cd94e257856a1bea</guid><category><![CDATA[Review strategy]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Tue, 29 Oct 2024 20:44:40 GMT</pubDate><content:encoded><![CDATA[<p>As of October 21st, 2024 the FTC has put into effect its &#x201C;<a href="https://www.ftc.gov/system/files/ftc_gov/pdf/r311003consumerreviewstestimonialsfinalrulefrn.pdf">final rule</a>&#x201D; banning fake online reviews &amp; testimonials. Much of the new rule is updating &amp; clarifying previously existing rules to explicitly call them out as fraud. It is also clear the FTC plans to enforce this rule &#x2014; they are actively solicitation reports of abuse &amp; plan to &#x201C;<a href="https://www.ftc.gov/news-events/news/press-releases/2024/08/federal-trade-commission-announces-final-rule-banning-fake-reviews-testimonials">seek civil penalties against knowing violators</a>&#x201D;.</p><p>The rule is one we largely agree with. Fraudulent review practices waste customers&apos; time &amp; hurt honest businesses &#x2013; this new rule is an important step to maintain the integrity of consumer reviews. But it does put a burden on businesses to understand &amp; make sure they are operating in-line with the new rule.</p><h2 id="what-does-the-ftcs-fake-review-rule-actually-prohibit">What does the FTC&apos;s fake review rule actually prohibit?</h2><p>While we can&apos;t cover everything in the rule (the rule itself is 163 pages long) here, the FTC breaks the new rule out into the following categories:</p><ul><li>Fake or False Consumer Reviews, Consumer Testimonials, and Celebrity Testimonials</li><li>Buying Positive or Negative Reviews</li><li>Insider Reviews and Consumer Testimonials</li><li>Company-Controlled Review Websites</li><li>Review Suppression</li><li>Misuse of Fake Social Media Indicators</li></ul><p>All of these have direct implications for consumer brands. The particular areas that apply to how you use Junip (or other review platforms) are: &quot;Fake or False Consumer Reviews&quot;, &quot;Buying Positive or Negative Reviews&quot;, &quot;Insider Reviews&quot; and &quot;Review Suppression&quot;.</p><h3 id="fake-or-false-consumer-reviews">Fake or False Consumer Reviews</h3><p>This one is easy. You cannot create or purchase fake reviews for your products. The rule also makes clear consumers cannot create false reviews for products they have no experience with. That means you cannot create and submit reviews yourself &amp; you absolutely cannot upload fake reviews to your review platform via import.</p><h3 id="buying-positive-or-negative-reviews">Buying Positive or Negative Reviews</h3><p>You cannot make an incentive (ie discount) conditional on the review being positive. If customers get a $10 discount for leaving a review... they get that discount even if they submit a 1-star review.</p><h3 id="insider-reviews">Insider Reviews</h3><p>If you (or your employees) are leaving a review for your own company or products, you need to disclose that relationship in the review itself.</p><h3 id="review-suppression">Review Suppression</h3><p>You cannot suppress reviews based upon their ratings or negative sentiment (ie hiding 1-star reviews). You also cannot threaten users into removing their review.</p><h2 id="so-what-do-businesses-need-to-do">So what do businesses need to do?</h2><p>If you&apos;re abusing reviews &#x2013; stop. If you&apos;re not, you might need to still triple check your team&apos;s day to day practices (especially as it relates to incentivizing reviews as well as <a href="https://junip.co/blog/how-to-edit-reviews/">responding to negative reviews</a>) to make sure they&apos;re fully compliant.</p><p>Junip is already set up to be in-line with these guidelines, but our moderation (watching out for inappropriate reviews) &amp; migration (moving reviews from a previous vendor) features do have a bit of room for bad actors on your team to potentially put you at risk if they choose to abuse these tools.</p><p>We have updates in beta to completely remove any concerns related to the new rule from your plate (and ensure you stay fully complaint). If you&apos;d like to be a part of the beta &#x2013; please email stuart@juniphq.com.</p>]]></content:encoded></item><item><title><![CDATA[New: manage all your review widgets in one place]]></title><description><![CDATA[<p>Adding reviews to your storefront <em>should</em> be a simple problem. </p><p>Copy some code from Junip and paste it into your theme... but where do you paste the code? And the code for which widget? Why doesn&apos;t Junip just automatically place the code for you? Or why are you</p>]]></description><link>https://junip.co/blog/manage-all-your-review-widgets-in-one-place/</link><guid isPermaLink="false">6707fb78cd94e257856a1ad8</guid><category><![CDATA[Product updates]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Fri, 11 Oct 2024 16:05:27 GMT</pubDate><content:encoded><![CDATA[<p>Adding reviews to your storefront <em>should</em> be a simple problem. </p><p>Copy some code from Junip and paste it into your theme... but where do you paste the code? And the code for which widget? Why doesn&apos;t Junip just automatically place the code for you? Or why are you copying &amp; pasting at all, why not use <a href="https://gadget.dev/blog/understanding-shopify-theme-app-extensions-what-they-are-and-how-to-build-with-them">App Embeds</a>? What if you have a <a href="https://www.shopify.com/enterprise/blog/headless-commerce">headless store</a>? A simple problem (add reviews to your storefront) becomes messy, fast.</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p>Historically we haven&apos;t done a great job of managing this mess. We were <em>okay</em>, but there was not central place to manage it all. With our new <a href="https://admin.juniphq.com/on_site">on-site management section in Admin</a>, adding reviews to your storefront is simple.</p><h3 id="switching-between-installation-methods">Switching between installation methods</h3><p>You now have one single place regardless of installation method. App Embeds, Liquid or HTML &#x2013; you can easily add widgets to your storefront.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-10-at-17.44.36.gif" class="kg-image" alt loading="lazy" width="800" height="437" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-10-at-17.44.36.gif 600w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-10-at-17.44.36.gif 800w" sizes="(min-width: 720px) 720px"></figure><h3 id="finding-the-right-widget">Finding the right widget</h3><p>We&apos;ve also moved all widgets to this screen. If you can add it to your storefront, you&apos;ll find it here. That includes: product page widgets, summary stars, dedicated reviews page, UGC gallery &amp; our review carousel.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-11-at-12.02.57.png" class="kg-image" alt loading="lazy" width="1282" height="856" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-11-at-12.02.57.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-11-at-12.02.57.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-11-at-12.02.57.png 1282w" sizes="(min-width: 720px) 720px"></figure><p>We want to keep the simple things simple so you can get back to work, but we also want to make the complex things possible... our new on-site management allows us to do both.</p><p>Add widgets to your storefront here: <a href="https://admin.juniphq.com/on_site">https://admin.juniphq.com/on_site</a></p>]]></content:encoded></item><item><title><![CDATA[The best way to add reviews to a headless storefront (with 6 examples)]]></title><description><![CDATA[<p>There are two ways to display reviews from Junip on any kind of storefront. The standard method most brands use is our embedded widgets (ie scripts), the secondary method some brands choose to use is our Display API.</p><p>Trying to add any external app to a headless storefront can be</p>]]></description><link>https://junip.co/blog/the-best-way-to-add-reviews-to-a-headless-storefront/</link><guid isPermaLink="false">66fd759acd94e257856a1941</guid><category><![CDATA[Ecommerce strategy]]></category><category><![CDATA[Junip examples]]></category><category><![CDATA[Review strategy]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Wed, 02 Oct 2024 23:26:03 GMT</pubDate><content:encoded><![CDATA[<p>There are two ways to display reviews from Junip on any kind of storefront. The standard method most brands use is our embedded widgets (ie scripts), the secondary method some brands choose to use is our Display API.</p><p>Trying to add any external app to a headless storefront can be pretty confusing. Often apps that are one click installations on Shopify themes simply don&apos;t work in a headless environment, others require complex integrations that can take weeks to complete &amp; don&apos;t follow the normal path. It&apos;s hard to navigate, even more so if you&apos;re not the one that built the storefront.</p><p>With Junip headless is simple. There is very little difference in the installation process with both our embedded widgets &amp; Display API. Both paths are fully available to headless storefronts.</p><h2 id="using-embedded-widgets-to-display-reviews-on-a-headless-storefront">Using embedded widgets to display reviews on a headless storefront</h2><p>Junip has a handful of pre-built, performant widgets that allow you to display reviews across your product pages, homepage, dedicated reviews page &amp; more. </p><p>In order to use our widgets you need to add our Junip script tag &amp; Junip store key to your website. With those in place adding each widget is as simple as adding a line of code. All of our code snippets can be accessed in the On-site section of our Admin (<a href="https://admin.juniphq.com/on_site">https://admin.juniphq.com/on_site</a>).</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p>For instance if I&apos;d like to add a Product Page widget, I just need to add the Product ID &amp; add this line of code, which I can find right within Junip&apos;s Admin:</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-text">&lt;span class=&quot;junip-product-review&quot; data-product-id=&quot;ENTER PRODUCT ID&quot;&gt;&lt;/span&gt;</div></div><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-13.58.20.png" class="kg-image" alt loading="lazy" width="1055" height="416" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-02-at-13.58.20.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-02-at-13.58.20.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-13.58.20.png 1055w" sizes="(min-width: 720px) 720px"></figure><p>This <a href="https://help.junip.co/en/articles/4607115-custom-html-installation">help doc explains the process in full detail</a> &amp; below you&apos;ll find three examples of merchants using these widgets on headless storefronts.</p><h3 id="liquid-iv"><a href="https://www.liquid-iv.com/products/hydration-multiplier-acai-berry-one-time">Liquid IV</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-18.57.41.png" class="kg-image" alt="Liquid I.V." loading="lazy" width="406" height="733"></figure><h3 id="tecovas"><a href="https://www.tecovas.com/products/the-doc?color=gravel-suede">Tecovas</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-18.59.44.png" class="kg-image" alt="Tecovas" loading="lazy" width="1304" height="705" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-02-at-18.59.44.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-02-at-18.59.44.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-18.59.44.png 1304w" sizes="(min-width: 720px) 720px"></figure><h3 id="tracksmith"><a href="https://www.tracksmith.com/products/m-tracksmith-eliot-runner?sku=FT1001070FAWAW">Tracksmith</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.00.37.png" class="kg-image" alt="Tracksmith" loading="lazy" width="1305" height="725" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-02-at-19.00.37.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-02-at-19.00.37.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.00.37.png 1305w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="using-our-display-api-to-add-reviews-to-a-headless-storefront">Using our Display API to add reviews to a headless storefront</h2><p>Some merchants choose to use our Display API (<a href="https://junip.co/docs/api/">https://junip.co/docs/api/</a>) to build a bespoke experience for shoppers to see &amp; interact with reviews. The Display API requires your team to request data from our API &amp; build the frontend experience.</p><p>Below we have three examples of merchants using our Display API to showcase reviews.</p><h3 id="soft-services"><a href="https://softservices.com/products/theraplush-set-extra-refill-pod">Soft Services</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.03.35.png" class="kg-image" alt="Soft Services" loading="lazy" width="1320" height="768" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-02-at-19.03.35.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-02-at-19.03.35.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.03.35.png 1320w" sizes="(min-width: 720px) 720px"></figure><h3 id="shinesty"><a href="https://www.shinesty.com/products/glow-in-the-dark-skeletons-ball-hammock-pouch-underwear#reviews-section">Shinesty</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.05.04.png" class="kg-image" alt="Shinesty" loading="lazy" width="399" height="682"></figure><h3 id="baboon-to-the-moon"><a href="https://baboontothemoon.com/products/go-bag-small-duffle?variant=41111415324743">Baboon to the Moon</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.06.38.png" class="kg-image" alt loading="lazy" width="1306" height="769" srcset="https://junip.co/blog/content/images/size/w600/2024/10/CleanShot-2024-10-02-at-19.06.38.png 600w, https://junip.co/blog/content/images/size/w1000/2024/10/CleanShot-2024-10-02-at-19.06.38.png 1000w, https://junip.co/blog/content/images/2024/10/CleanShot-2024-10-02-at-19.06.38.png 1306w" sizes="(min-width: 720px) 720px"></figure><h3 id="why-you-might-choose-to-use-the-display-api">Why you might choose to use the Display API</h3><p>With the Display API you can do essentially anything you want. The three examples above all vary widely in how they&apos;re choosing to showcase reviews. <br><br>If you have a very particular experience you&apos;re trying to create &amp; you have the development talent + capacity to execute on it, it can make a lot of sense to build out this experience from the ground up using our API instead of trying to work with custom CSS + our embedded widgets.</p><h3 id="why-you-might-choose-to-use-embedded-widgets">Why you might choose to use embedded widgets</h3><p>Our embedded widgets are very fast, they&apos;re optimized for every screen on every browser, they have media containers, they include rich snippets, they&apos;re accessible, they&apos;re searchable, they have filters, they have sorting, they&apos;re customizable with CSS, they keep getting better over time, you don&apos;t need to maintain them &amp; they automatically work with every new feature we release.</p><p>They&apos;re very very good at displaying reviews.</p><h3 id="which-should-i-use">Which should I use?</h3><p><u>99% of stores should use our embedded widgets</u> -- they work great &amp; should be your starting point. Two of the three examples shown using widgets in this article are in the <a href="https://storeleads.app/reports/shopify">top 500 stores on Shopify</a>, so they can work at scale.</p><p>If you have a very specific need &amp; you have the development capacity to both build &amp; maintain (the piece some tend to forget), you may want to consider using our Display API.</p><p>If you&apos;re unsure we recommend the walk, crawl, run approach. Start with our widgets (take minutes to implement), see if you can create the experience you&apos;d like by making some small customizations &amp; then if you&apos;re sure you&apos;d like to go the bespoke route it&apos;s easy to circle back.</p><p>Either way &#x2013; it&apos;s simple to add reviews to your headless storefront on Junip.</p><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure><p></p>]]></content:encoded></item><item><title><![CDATA[Swoveralls reduces return rate by 30% with Custom Questions]]></title><description><![CDATA[Swoveralls switched to Junip for a more affordable solution that helped them collect more reviews and cut return rates by 30%. Read more to learn how they did this!]]></description><link>https://junip.co/blog/swoveralls-reduces-return-rate-30-with-custom-questions/</link><guid isPermaLink="false">66e46b47cd94e257856a1618</guid><category><![CDATA[Case study]]></category><dc:creator><![CDATA[Leah Morassut]]></dc:creator><pubDate>Tue, 17 Sep 2024 18:44:46 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/swoveralls-blog-tile-pic.webp" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/swoveralls-blog-tile-pic.webp" alt="Swoveralls reduces return rate by 30% with Custom Questions"><p><a href="https://swoveralls.com/">Swoveralls</a> is an apparel company that invented the world&#x2019;s first pair of sweatpant overalls. As a small business dedicated to making the comfiest apparel items in the world, the tools in their tech stack must be worth the price and deliver results. </p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/swoveralls-tile-1.webp" class="kg-image" alt="Swoveralls reduces return rate by 30% with Custom Questions" loading="lazy" width="2000" height="1340" srcset="https://junip.co/blog/content/images/size/w600/2024/09/swoveralls-tile-1.webp 600w, https://junip.co/blog/content/images/size/w1000/2024/09/swoveralls-tile-1.webp 1000w, https://junip.co/blog/content/images/size/w1600/2024/09/swoveralls-tile-1.webp 1600w, https://junip.co/blog/content/images/size/w2400/2024/09/swoveralls-tile-1.webp 2400w" sizes="(min-width: 720px) 720px"></figure><h3 id="problem">Problem</h3><p>Swoveralls previously used Yotpo to collect reviews from customers. Kyle Bergman, Founder &amp; Chief Swoveralls Officer, wasn&apos;t happy with how much they were paying for what they were getting.<br></p><blockquote class="kg-blockquote-alt">&quot;The pricing and UX were egregious. The service and product experience did not match what we were paying for&quot;<br>- Kyle Bergman, Chief Swoveralls Officer</blockquote><p>Fed up with Yotpo&apos;s high price tag and mediocre results, a friend of Kyle&apos;s recommended him Junip and he never looked back.</p><h3 id="solution">Solution</h3><p>Junip only cost Swoveralls $74/mo and Kyle was immediately impressed with the sleek &amp; user-friendly admin. The seamless migration also allowed Kyle to revisit Swoveralls&apos; review strategy and level a few things up. &#xA0;</p><ul><li>Swoveralls uses Junip&#x2019;s native email templates to request reviews from customers 2 days after their order is delivered. With more precise timing and a step-by-step review form (different from Yotpo&apos;s crowded in-email form), their <strong>review submission rate jumped from 2.88% to 3.94%</strong>. </li><li>The biggest improvement they saw was with their photo and video reviews. <strong>With Yotpo, Swoveralls didn&#x2019;t collect a single photo or video review</strong>. When they started using Junip&#x2019;s <a href="https://junip.co/blog/why-mobile-first-reviews-matter-for-brands/">mobile-first review forms</a> (designed to make leaving a photo/video review easier)&#x2026;everything changed. Over the last year, about <strong>1 in every 4 review submissions has a photo or video attached</strong>.</li></ul><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/Screenshot-2024-09-17-at-12.42.12-PM.png" class="kg-image" alt="Swoveralls reduces return rate by 30% with Custom Questions" loading="lazy" width="1352" height="374" srcset="https://junip.co/blog/content/images/size/w600/2024/09/Screenshot-2024-09-17-at-12.42.12-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/Screenshot-2024-09-17-at-12.42.12-PM.png 1000w, https://junip.co/blog/content/images/2024/09/Screenshot-2024-09-17-at-12.42.12-PM.png 1352w" sizes="(min-width: 720px) 720px"></figure><h3 id="using-custom-questions-to-reduce-returns-by-30">Using Custom Questions to reduce returns by 30% </h3><p>During the switch, Kyle decided to add custom questions alongside reviews to help address common sizing concerns. &#xA0;In the review form, customers are asked about their usual sweatpants size and whether they think their Swoveralls fit true to size.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/Screenshot-2024-09-17-at-12.22.58-PM.png" class="kg-image" alt="Swoveralls reduces return rate by 30% with Custom Questions" loading="lazy" width="1942" height="1066" srcset="https://junip.co/blog/content/images/size/w600/2024/09/Screenshot-2024-09-17-at-12.22.58-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/Screenshot-2024-09-17-at-12.22.58-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/09/Screenshot-2024-09-17-at-12.22.58-PM.png 1600w, https://junip.co/blog/content/images/2024/09/Screenshot-2024-09-17-at-12.22.58-PM.png 1942w" sizes="(min-width: 720px) 720px"></figure><p>This extra context helped browsing customers choose the right size, and within just three months of adding custom questions next to reviews, <strong>Swoveralls cut their return rate by 30%.</strong></p><h3 id="today">Today</h3><p>Swoveralls now has a review provider that is easy to use and collects way more reviews (especially media reviews), all at a fraction of what they were paying before.</p><p><strong>With Junip, Swoveralls has: </strong></p><ul><li>Achieved a 4.77 average rating across all products</li><li>Collected 577 reviews &amp; 113 media reviews</li><li>Increased their review submission rate by 37%</li><li>Maintained an average submission rate of 20.30%</li></ul><p><em>*metrics based on all-time performance since switching to Junip in May 2023</em></p><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt="Swoveralls reduces return rate by 30% with Custom Questions" loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p></p>]]></content:encoded></item><item><title><![CDATA[How Apparel & Fashion Brands use Product Reviews (with examples)]]></title><description><![CDATA[<p>Reviews help shoppers better understand your products &#x2013; increasing the conversion rate &amp; decreasing returns by helping shoppers know when a product is right for them.</p><p>Customers looking to better understand fashion &amp; apparel want to see products in action. They want photos, videos &amp; specific details like quality, fit</p>]]></description><link>https://junip.co/blog/how-apparel-fashion-brands-use-product-reviews/</link><guid isPermaLink="false">66e9a1cbcd94e257856a16c2</guid><category><![CDATA[Junip examples]]></category><category><![CDATA[Review strategy]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Tue, 17 Sep 2024 03:07:00 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/apparel-collage.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/apparel-collage.png" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)"><p>Reviews help shoppers better understand your products &#x2013; increasing the conversion rate &amp; decreasing returns by helping shoppers know when a product is right for them.</p><p>Customers looking to better understand fashion &amp; apparel want to see products in action. They want photos, videos &amp; specific details like quality, fit &amp; use-case. We put together 6 examples of fast growing apparel brands on Junip &amp; how they&apos;re using reviews to help their customers:</p><h3 id="shefit"><a href="https://shefit.com/en-ca/collections/medium-impact/products/ultimate-flex-sports-bra-blush#junipProductReviews1476727570486">Shefit</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.30.58.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="1456" height="838" srcset="https://junip.co/blog/content/images/size/w600/2024/09/CleanShot-2024-09-17-at-15.30.58.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/CleanShot-2024-09-17-at-15.30.58.png 1000w, https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.30.58.png 1456w" sizes="(min-width: 720px) 720px"></figure><p>Shefit showcases customer photos &amp; videos right off the bat with a media gallery. They also use custom questions to help customers get reviews most relevant to them.</p><p>We see their questions &quot;Body Type&quot; &amp; &quot;Fit&quot; used very commonly across a wide variety of apparel brands. Less common is &quot;Activity&quot;, but it&apos;s proven extremely helpful for certain technical apparel brands that need their products to perform in unique conditions.</p><h3 id="swoveralls"><a href="https://swoveralls.com/">Swoveralls</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.31.39.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="1454" height="829" srcset="https://junip.co/blog/content/images/size/w600/2024/09/CleanShot-2024-09-17-at-15.31.39.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/CleanShot-2024-09-17-at-15.31.39.png 1000w, https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.31.39.png 1454w" sizes="(min-width: 720px) 720px"></figure><p>Swoveralls (the inventors of sweatsuit overalls) have an entirely new kind of product, so they lean in even more on social proof with a review carousel front &amp; center on their homepage. </p><p><a href="https://junip.co/blog/swoveralls-reduces-return-rate-30-with-custom-questions/">This case study</a> from our team covers their experience with reviews in-depth &amp; the unqiue ways they&apos;ve leverage reviews to drive conversions &amp; reduce returns.</p><h3 id="tecovas"><a href="https://www.tecovas.com/products/mens-everyday-standard-jeans?color=sand-twill">Tecovas</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.52.56.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="402" height="751"></figure><p>Tecovas has a minimalist display relative to our previous two examples, but for many brands this is the best way to go (and much better than a cluttered experience). The media gallery at the forefront does a great job of showcasing customer photos &amp; videos.</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><h3 id="modern-citizen"><a href="https://www.moderncitizen.com/products/emmett-structured-sleeve-denim-jacket-indigo">Modern Citizen</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.33.06.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="1453" height="837" srcset="https://junip.co/blog/content/images/size/w600/2024/09/CleanShot-2024-09-17-at-15.33.06.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/CleanShot-2024-09-17-at-15.33.06.png 1000w, https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.33.06.png 1453w" sizes="(min-width: 720px) 720px"></figure><p>Modern Citizen asks a couple of unique questions here (&quot;height&quot; and &quot;typical size&quot;). They&apos;re also are the only example we&apos;ve shown that uses Junip&apos;s Display API, creating a bespoke look &amp; feel to the review section.</p><h3 id="tracksmith"><a href="https://www.tracksmith.com/products/m-van-cortlandt-shorts?sku=MB311001SYR">Tracksmith</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.34.50.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="400" height="709"></figure><p>Tracksmith (performance running gear) certainly fits into the technical apparel category, so we see them use &quot;Favorite Use&quot; in similar way to how Shefit uses &quot;Activity&quot;, we see another use here on Tracksmith alongside &quot;Fit&quot; in their minimalist review section.</p><h3 id="jambys"><a href="https://www.jambys.com/collections/all-products/products/black-black">Jambys</a></h3><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.32.23.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="1454" height="835" srcset="https://junip.co/blog/content/images/size/w600/2024/09/CleanShot-2024-09-17-at-15.32.23.png 600w, https://junip.co/blog/content/images/size/w1000/2024/09/CleanShot-2024-09-17-at-15.32.23.png 1000w, https://junip.co/blog/content/images/2024/09/CleanShot-2024-09-17-at-15.32.23.png 1454w" sizes="(min-width: 720px) 720px"></figure><p>Jambys customers tend to break the normal boundaries of Men&apos;s &amp; Women&apos;s sections that most apparel companies offer and simply buy whatever looks the comfiest &#x2013; so understanding the context of who actually left a review is helpful when shoppers are browsing.</p><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt="How Apparel &amp; Fashion Brands use Product Reviews (with examples)" loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The most popular custom review questions used by apparel brands]]></title><description><![CDATA[<p>Today, we&apos;re looking at the custom questions that apparel brands on Junip use most. We looked at almost 1,000 custom questions and highlighted which are the most popular, as well as shared examples of each below.</p><p>For a bit of context: custom questions are a great way</p>]]></description><link>https://junip.co/blog/top-custom-review-questions-used-by-apparel-brands/</link><guid isPermaLink="false">66cf495ccd94e257856a1490</guid><category><![CDATA[Review strategy]]></category><dc:creator><![CDATA[Marcus Cardoso]]></dc:creator><pubDate>Thu, 29 Aug 2024 17:22:56 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/customq.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/customq.png" alt="The most popular custom review questions used by apparel brands"><p>Today, we&apos;re looking at the custom questions that apparel brands on Junip use most. We looked at almost 1,000 custom questions and highlighted which are the most popular, as well as shared examples of each below.</p><p>For a bit of context: custom questions are a great way to get specific, detailed information as part of the review. Brands can choose to add these in to the review form, on top of the default questions like rating, title, body, and media.</p><p>Let&apos;s get started!</p><hr><h3 id="fit">Fit</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.46.26-PM-1.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="1981" height="423" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-12.46.26-PM-1.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-12.46.26-PM-1.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-12.46.26-PM-1.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.46.26-PM-1.png 1981w" sizes="(min-width: 720px) 720px"><figcaption>Review from the Deux par Deux website</figcaption></figure><ul><li>asked as a linear scale question (with labels such as &quot;too big&quot;, &quot;too small&quot;, and &quot;perfect&quot; or &quot;true to size&quot;)</li><li>this is by far the most used question by apparel brands, likely because of how important it is for shoppers to understand what size to purchase</li><li>if a shirt is &quot;too big&quot; that isn&apos;t necessarily a bad thing - it means that shoppers can size down when selecting a size and reduce returns, they just need to know this before purchasing.</li></ul><hr><h3 id="comfort">Comfort</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.52.46-PM.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="1908" height="434" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-12.52.46-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-12.52.46-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-12.52.46-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.52.46-PM.png 1908w" sizes="(min-width: 720px) 720px"><figcaption>Review from the Sheath Underwear website</figcaption></figure><ul><li>asked as a linear scale question (with labels such as &quot;very comfortable&quot; and &quot;not comfortable&quot; or &quot;excellent&quot; and &quot;poor&quot;)</li><li>ensures that customers always shares about the product&apos;s comfort as part of their review, and also makes it very easy for potential buyers to understand this info when reading reviews. This is a great strategy if comfort is an important selling point for this product.</li></ul><hr><h3 id="size-purchased">Size Purchased </h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.56.34-PM.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="2000" height="443" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-12.56.34-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-12.56.34-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-12.56.34-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-12.56.34-PM.png 2240w" sizes="(min-width: 720px) 720px"><figcaption>Review from the Vessi Canada website</figcaption></figure><ul><li>this question actually came up as two different question types: multiple choice and short answer. The appeal of short answer is likely that a customer can add whatever response they want, but I&apos;ve found that this question works best as a multiple choice with a defined set of sizes to choose from. </li><li>that way, you&apos;re making it easier for customers to respond (click an option vs. type one out), you&apos;re ensuring responses are consistent, and you&apos;re allowing potential buyers on your website to filter by responses to that question (filtering is not an option with short answer questions).</li><li>if your product has variants for each size, then you don&apos;t necessarily need to ask this question for it to display what size they purchased because that will be shown by default at the bottom of the review. However, having this as a custom question allows those engaging with reviews on your website to filter by reviews that talk about a specific size (ie. the one they would be purchasing).</li></ul><hr><h3 id="usual-size">Usual Size</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-1.00.45-PM.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="2000" height="767" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-1.00.45-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-1.00.45-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-1.00.45-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-1.00.45-PM.png 2092w" sizes="(min-width: 720px) 720px"><figcaption>Review from the CHNGE website</figcaption></figure><ul><li>asked as a short answer question</li><li>where the question above wants to know what size of this product the customer purchased &amp; is reviewing, this question is asking what size they normally purchase as a comparison, ie. &quot;I normally buy a M, but for this product, I purchased an L and it fits great.&quot;</li></ul><hr><h3 id="height">Height</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-2.02.33-PM.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="1986" height="506" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-2.02.33-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-2.02.33-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-2.02.33-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-2.02.33-PM.png 1986w" sizes="(min-width: 720px) 720px"><figcaption>Review from the Unique Vintage website</figcaption></figure><ul><li>asked as a short answer question</li><li>height (and weight, mentioned below) are a little trickier to provide options for. They can still be asked as a multiple choice with ranges provided (like in the screenshot above), but many brands allow customers to input their specific height or weight themselves</li><li>keep in mind that we want to keep short answer questions in your review form to a minimum because they require the most work for someone to answer.</li></ul><hr><h3 id="weight">Weight</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-2.06.35-PM.png" class="kg-image" alt="The most popular custom review questions used by apparel brands" loading="lazy" width="2000" height="706" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screen-Shot-2024-08-28-at-2.06.35-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screen-Shot-2024-08-28-at-2.06.35-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screen-Shot-2024-08-28-at-2.06.35-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screen-Shot-2024-08-28-at-2.06.35-PM.png 2062w" sizes="(min-width: 720px) 720px"><figcaption>Review from the Modern Citizen website</figcaption></figure><ul><li>asked as a short answer question</li><li>it&apos;s helpful to note that the measurement used for something like weight can change in different regions (ie. US vs. EU) so it&apos;s worth including that context in your question (or response options) so that people know which is being used.</li></ul><hr><h3 id="whats-next">What&apos;s next?</h3><p><br>If you&apos;re an apparel brand, you may want to consider adding some of these to your review form so that they can do more for you. Keep in mind that I recommend asking four or less custom questions in a review form for a given product, so as to keep it simple for customers to respond to.</p><p>If you aren&apos;t using Junip yet but want to start using custom questions, <a href="https://admin.juniphq.com/login/create">you can sign up here</a>. </p><p>Already using Junip? <a href="https://admin.juniphq.com/forms/questions">You can add them within your admin here</a> (they are available on standard+ plans).</p>]]></content:encoded></item><item><title><![CDATA[Promix increases monthly review submissions by 42%]]></title><description><![CDATA[Switching to Junip allowed Promix to easily syndicate over 5,000 reviews on Google Shopping Ads and integrate with Klaviyo and Postscript. With full control over review requests, they optimized timing and channels, leading to a 42% increase in reviews collected per month.]]></description><link>https://junip.co/blog/promix-increases-monthly-review-submissions-by-42/</link><guid isPermaLink="false">66bbbd78cd94e257856a119f</guid><category><![CDATA[Case study]]></category><dc:creator><![CDATA[Leah Morassut]]></dc:creator><pubDate>Wed, 21 Aug 2024 15:10:15 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/08/promix-nutrition-debloat-hero_1500x-1.webp" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/08/promix-nutrition-debloat-hero_1500x-1.webp" alt="Promix increases monthly review submissions by 42%"><p><a href="https://promixnutrition.com/">Promix Nutrition</a> is a performance-driven supplement brand committed to creating products with the highest quality ingredients. Their dedication to quality extends beyond just their products&#x2014;it&#x2019;s ingrained in every aspect of their operations. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/promix_nutrition_cover.jpeg" class="kg-image" alt="Promix increases monthly review submissions by 42%" loading="lazy" width="2000" height="1125" srcset="https://junip.co/blog/content/images/size/w600/2024/08/promix_nutrition_cover.jpeg 600w, https://junip.co/blog/content/images/size/w1000/2024/08/promix_nutrition_cover.jpeg 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/promix_nutrition_cover.jpeg 1600w, https://junip.co/blog/content/images/size/w2400/2024/08/promix_nutrition_cover.jpeg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Promix products</figcaption></figure><h2 id="the-problem-with-judgeme">The problem with Judge.me</h2><p>Promix was previously using Judge.me, a review platform that Albert Matheny, CEO of Promix, described as &quot;lacking basic functionality&quot;.</p><h3 id="promix-needed-2-things">Promix needed 2 things:</h3><ol><li>A way to automatically display reviews on product listings in Google Shopping</li><li>More control over the timing and customization of review requests (Judge.me&apos;s email templates weren&apos;t cutting it)</li></ol><p>In search of a better review provider with a full feature set, Albert avoided legacy review providers due to their high price point and bloated feature set. He also didn&apos;t have time to waste learning a new platform and needed something easy to use. When Albert came across Junip, he found what he was looking for.</p><h3 id="how-junip-helped">How Junip helped</h3><p>Junip&apos;s intuitive and easy-to-use admin made the switch seamless, there was no learning curve. Albert and the team could immediately manage all of their incoming reviews with ease.</p><ul><li><strong>Syndicating 5,232 reviews on Promix&apos;s Google Shopping Ads:</strong> as an <a href="https://junip.co/blog/junip-google-shopping/">official Google Shopping partner</a>, Junip gave Promix a way to display their reviews on Shopping Ads, which play a key part in improving CTRs on comparison shopping platforms like Google Shopping</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-20-at-1.20.32-PM.png" class="kg-image" alt="Promix increases monthly review submissions by 42%" loading="lazy" width="1958" height="890" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screenshot-2024-08-20-at-1.20.32-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screenshot-2024-08-20-at-1.20.32-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screenshot-2024-08-20-at-1.20.32-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-20-at-1.20.32-PM.png 1958w" sizes="(min-width: 720px) 720px"><figcaption>Junip displaying reviews on Promix Google Shopping Ads</figcaption></figure><ul><li><strong>Providing 2 new channels to request reviews:</strong> Junip&apos;s integrations with <a href="https://junip.co/blog/new-integrations/">Klaviyo</a> and <a href="https://junip.co/blog/how-not-pot-gathered-more-reviews-with-postscript/">Postscript</a> let Promix send review requests from these platforms, giving them full control over the look &amp; feel, and when &amp; how review requests are sent. For example, the biggest advantage for Promix is the advanced segmentation they can leverage. Since their products take time for customers to experience the full benefits, Promix doesn&apos;t ask first-time customers to leave a review. This helps them gather more detailed reviews that speak to the tangible results customers experience (example below)</li></ul><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-21-at-11.06.37-AM.png" class="kg-image" alt="Promix increases monthly review submissions by 42%" loading="lazy" width="1834" height="532" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screenshot-2024-08-21-at-11.06.37-AM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screenshot-2024-08-21-at-11.06.37-AM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screenshot-2024-08-21-at-11.06.37-AM.png 1600w, https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-21-at-11.06.37-AM.png 1834w" sizes="(min-width: 720px) 720px"></figure><h2 id="results">Results</h2><p>Having full control over the timing of review requests and adding SMS as a channel, Promix could get closer to where, when and how a customer is most likely to leave a review. As a result, Promix now <strong>collects 42% more reviews per month with Junip</strong>, compared to Judge.me.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-15-at-5.27.43-PM.png" class="kg-image" alt="Promix increases monthly review submissions by 42%" loading="lazy" width="1436" height="780" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screenshot-2024-08-15-at-5.27.43-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screenshot-2024-08-15-at-5.27.43-PM.png 1000w, https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-15-at-5.27.43-PM.png 1436w" sizes="(min-width: 720px) 720px"><figcaption>Overview of Promix&apos;s review submissions</figcaption></figure><p><strong>Other notable results:</strong></p><ul><li>Achieved a 4.85 average rating across all products</li><li>Collected 3,883 reviews &amp; 125 media reviews with Junip </li><li>Receiving on average 195 reviews per month with Junip. Whereas 6 months before switching to Junip, Promix was only gathering on average, 136 reviews per month, leading to a 42% increase with Junip</li></ul><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt="Promix increases monthly review submissions by 42%" loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure>]]></content:encoded></item><item><title><![CDATA[How WINPRO uses Junip to gather 60% more reviews]]></title><description><![CDATA[Leaving their outdated and clunky review platform behind, WINPRO switched to Junip & has collected over 2,000 reviews from customers. ]]></description><link>https://junip.co/blog/how-winpro-uses-junip-to-gather-60-more-reviews/</link><guid isPermaLink="false">66b65deccd94e257856a0d86</guid><category><![CDATA[Case study]]></category><dc:creator><![CDATA[Leah Morassut]]></dc:creator><pubDate>Wed, 14 Aug 2024 15:10:29 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/08/WINPRO-blog-tile.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/08/WINPRO-blog-tile.png" alt="How WINPRO uses Junip to gather 60% more reviews"><p>Trust is everything when selling pet supplements. Owners want assurance that a product will truly benefit their pet&apos;s life. <a href="https://metabase.juniphq.com/question#eyJkYXRhc2V0X3F1ZXJ5Ijp7ImRhdGFiYXNlIjoyLCJxdWVyeSI6eyJzb3VyY2UtdGFibGUiOjY1LCJmaWx0ZXIiOlsiYW5kIixbIj0iLFsiZmllbGQiLDU5MixudWxsXSwxMTU0NV0sWyIhPSIsWyJmaWVsZCIsNjA0LG51bGxdLCJqdW5pcCJdXSwiYWdncmVnYXRpb24iOltbImNvdW50Il1dLCJicmVha291dCI6W1siZmllbGQiLDYyMyx7InRlbXBvcmFsLXVuaXQiOiJtb250aCJ9XV19LCJ0eXBlIjoicXVlcnkifSwiZGlzcGxheSI6ImxpbmUiLCJ2aXN1YWxpemF0aW9uX3NldHRpbmdzIjp7fX0=">WINPRO</a>, a pet supplement company, knows this better than most. Beyond offering a great product, they understand the need for social proof, customer stories, and an easy way for customers to share their experiences.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/WINPRO-header-img.png" class="kg-image" alt="How WINPRO uses Junip to gather 60% more reviews" loading="lazy" width="1800" height="643" srcset="https://junip.co/blog/content/images/size/w600/2024/08/WINPRO-header-img.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/WINPRO-header-img.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/WINPRO-header-img.png 1600w, https://junip.co/blog/content/images/2024/08/WINPRO-header-img.png 1800w" sizes="(min-width: 720px) 720px"></figure><h3 id="the-problem-with-winpros-former-review-provider">The problem with WINPRO&apos;s former review provider</h3><p>Before finding Junip, WINPRO was using another review provider. However, the outdated and cumbersome review form experience made it difficult for customers to leave a review. This wasn&apos;t just a minor inconvenience, it was a critical barrier that was costing them valuable customer feedback.</p><p>WINPRO needed a system that was not only functional but also easy for customers to use&#x2014;a solution that would help them collect more reviews with less effort.</p><h2 id="solution">Solution</h2><p>In early 2023, WINPRO explored different providers. After a demo with Junip, they were impressed with the simplicity and decided to make the switch.</p><h3 id="how-junip-gave-them-a-functional-system-that-generated-2000-reviews">How Junip gave them a functional system that generated 2,000+ reviews</h3><p>&quot;We were most excited about Junip because of the ease of customers being able to leave reviews on our site,&quot; said &#xA0;Anna Johnson, WINPRO&apos;s Marketing Manager. The whole team quickly realized how many reviews they had been missing out on with their previous provider. Simply by switching to Junip&apos;s mobile-first review forms, they saw a 60% increase in review submissions.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-13-at-11.22.16-AM.png" class="kg-image" alt="How WINPRO uses Junip to gather 60% more reviews" loading="lazy" width="1612" height="832" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screenshot-2024-08-13-at-11.22.16-AM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screenshot-2024-08-13-at-11.22.16-AM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screenshot-2024-08-13-at-11.22.16-AM.png 1600w, https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-13-at-11.22.16-AM.png 1612w" sizes="(min-width: 720px) 720px"></figure><blockquote class="kg-blockquote-alt">&quot;The second we switched over to Junip, we were shocked by how many reviews we were getting without having to change much about our strategy in terms of the timing and channel of review requests&quot; </blockquote><p>It was clear almost immediately that they had made the right decision.</p><h3 id="how-gathering-high-quality-reviews-increased-on-site-conversion-by-22">How gathering high-quality reviews increased on-site conversion by 22%</h3><p>The success didn&#x2019;t just stop at quantity. Junip also helped WINPRO collect better quality reviews. WINPRO leveraged Junip&#x2019;s <a href="https://junip.co/blog/custom-questions-2-0/">Custom Questions</a> to gather specific data alongside reviews. For example, reviews display a dog&apos;s breed, age, and name. This extra context gives customers reading the reviews a better sense of how the product might work for their own dog &#x2013; ultimately giving them the confidence to purchase. </p><blockquote class="kg-blockquote-alt">&quot;Custom questions make the reviews feel just as authentic as they are. They also give people extra information that gives them more confidence to purchase&quot;</blockquote><p>After collecting more reviews, they noticed some customers needed more time to see results before writing a &quot;full review&quot;. By using Junip&apos;s <a href="https://junip.co/blog/flows/">Flow Automation Engine</a>, WINPRO adjusted the timing of review requests and began receiving more in-depth reviews that highlighted the tangible results pet owners were observing.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-13-at-2.43.08-PM.png" class="kg-image" alt="How WINPRO uses Junip to gather 60% more reviews" loading="lazy" width="1892" height="1252" srcset="https://junip.co/blog/content/images/size/w600/2024/08/Screenshot-2024-08-13-at-2.43.08-PM.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/Screenshot-2024-08-13-at-2.43.08-PM.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/Screenshot-2024-08-13-at-2.43.08-PM.png 1600w, https://junip.co/blog/content/images/2024/08/Screenshot-2024-08-13-at-2.43.08-PM.png 1892w" sizes="(min-width: 720px) 720px"><figcaption>Review for WINPRO&apos;s Hip &amp; Joint product</figcaption></figure><p>In just three months of using Junip, the overall increase in review submissions and quality of reviews contributed to WINPRO&apos;s 22% lift in on-site conversion.</p><h2 id="today">Today </h2><p>Since switching to Junip at the beginning of 2023, WINPRO has seen the following results: </p><ul><li>Increased their review submission rate by 60% &amp; collected over 2,000 high-quality reviews</li><li>Media submissions have increased by 58% compared to their previous provider &amp; have collected 300+ media reviews to date</li><li>Bumped on-site conversion by 22% with the addition of high-quality reviews that help convert browsing shoppers</li></ul><p>WINPRO didn&#x2019;t just upgrade their review system&#x2014;they elevated their entire customer experience. Leaving a review is now an enjoyable experience and reviews are no longer slipping through the cracks.</p><figure class="kg-card kg-image-card kg-width-wide"><a href="https://admin.juniphq.com/login/create?_gl=1*ykj9qt*_gcl_au*MTk3MDQ3NjUwMi4xNzAzMDgyMTU2"><img src="https://junip.co/blog/content/images/2023/12/Group-48095754.png" class="kg-image" alt="How WINPRO uses Junip to gather 60% more reviews" loading="lazy" width="2000" height="433" srcset="https://junip.co/blog/content/images/size/w600/2023/12/Group-48095754.png 600w, https://junip.co/blog/content/images/size/w1000/2023/12/Group-48095754.png 1000w, https://junip.co/blog/content/images/size/w1600/2023/12/Group-48095754.png 1600w, https://junip.co/blog/content/images/size/w2400/2023/12/Group-48095754.png 2400w" sizes="(min-width: 1200px) 1200px"></a></figure>]]></content:encoded></item><item><title><![CDATA[The two types of negative reviews & how they impact shoppers]]></title><description><![CDATA[<p>There are two different types of negative reviews (broadly speaking):</p><ol><li>Customer complaints</li><li>Differences of opinion</li></ol><p>Whether you&apos;re dealing with a complaint/issue or a difference of opinion affects how you respond to the review &amp; how it will affect new shoppers that see the review.</p><h2 id="customer-complaints">Customer complaints</h2><p>This</p>]]></description><link>https://junip.co/blog/the-two-kinds-of-negative-reviews/</link><guid isPermaLink="false">66bca45ccd94e257856a11e5</guid><category><![CDATA[Review strategy]]></category><category><![CDATA[Ecommerce strategy]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Wed, 14 Aug 2024 14:40:06 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/negativereview.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/negativereview.png" alt="The two types of negative reviews &amp; how they impact shoppers"><p>There are two different types of negative reviews (broadly speaking):</p><ol><li>Customer complaints</li><li>Differences of opinion</li></ol><p>Whether you&apos;re dealing with a complaint/issue or a difference of opinion affects how you respond to the review &amp; how it will affect new shoppers that see the review.</p><h2 id="customer-complaints">Customer complaints</h2><p>This group of reviews is anything that could be boiled down to &#x201C;I have a problem &amp; want you to solve it&#x201D;, and this is good news! Problems are solvable &amp; often you can work with customers to sort out the issues they were having by:</p><ol><li>Responding privately</li><li>Empathizing with their situation &amp; solve their problem</li><li>Asking them to update their review</li></ol><p>Check out this post if you want to learn more about how to ask customers to edit, update or delete their review:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://junip.co/blog/how-to-edit-reviews/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to ask customers to edit, update &amp; delete reviews</div><div class="kg-bookmark-description">The FTC is clear &#x2013; businesses cannot alter, edit or change the contents of a review on behalf of the reviewer... but reviewers themselves absolutely can! Customers submitting any review is a great opportunity for engagement. If the review is positive, you have an opportunity to recommend other pro&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://junip.co/blog/content/images/size/w256h256/2022/02/touch-icon.png" alt="The two types of negative reviews &amp; how they impact shoppers"><span class="kg-bookmark-author">Junip</span><span class="kg-bookmark-publisher">Stuart</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://junip.co/blog/content/images/2024/08/Untitled-design.png" alt="The two types of negative reviews &amp; how they impact shoppers"></div></a></figure><h3 id="how-customer-complaints-impact-shoppers">How customer complaints impact shoppers</h3><p>In an ideal scenario, you&apos;re going to be able to work with customers to solve their problems &amp; the review will be updated or deleted. If you&apos;re not able to solve the problem with the customer though, it&apos;s important to show that you care by:</p><ol><li>Responding publicly</li><li>Let them know that you are here to help</li></ol><p>New shoppers visiting your store understand that sometimes bad experiences happen &amp; aren&apos;t scared off by these reviews, but they do want to know that if this happens to them too you&apos;ll be here to help them. </p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p>Responding publicly, with empathy &amp; action is important to build trust with customers. Tecovas here does a great job with this <a href="https://www.tecovas.com/products/denim-short-sleeve-pearl-snap?color=medium-wash-denim&amp;#review-section">otherwise highly rated (4.41) denim shirt</a> that didn&apos;t work out for this customer:</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-14-at-10.08.20.png" class="kg-image" alt="The two types of negative reviews &amp; how they impact shoppers" loading="lazy" width="1167" height="468" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-14-at-10.08.20.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-14-at-10.08.20.png 1000w, https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-14-at-10.08.20.png 1167w" sizes="(min-width: 720px) 720px"></figure><h2 id="differences-of-opinion">Differences of opinion</h2><p>At the end of the day some people just see the world differently. This type of review can be described as customers having a fundamental difference of opinion on some aspect of your product.</p><p>These can be genuine, legitimate differences of opinion (I am tall &amp; this shirt doesn&apos;t fit me well, I think it is better for short people) or completely ridiculous differences of opinion... but the point is this is their opinion. You&apos;re unlikely to change it.</p><h3 id="how-differences-of-opinion-impact-new-shoppers">How differences of opinion impact new shoppers</h3><p>Believe it or not, these reviews are <strong>extremely helpful</strong> for new shoppers. Reviews are all about telling more of your product story to make sure customers get the full picture. This helps good fit customers have more confidence to opt-in (increasing conversion rate) and <strong>helps bad fit customers opt-out</strong> (decreasing returns). </p><p>If customers aren&apos;t going to like your product, we want to help them learn that <em>before</em> they make the purchase. It&apos;s important to make sure these reviews are available to customers. Replying can still be helpful &amp; can further illustrate the differences of opinion to try to make sure new shoppers understand.</p><p>Tecovas once again does a wonderful job with this <a href="https://www.tecovas.com/products/mens-goat-belt-ii?color=scotch-goat&amp;#review-section">review of Goat Belt</a>:</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-14-at-10.35.48.png" class="kg-image" alt="The two types of negative reviews &amp; how they impact shoppers" loading="lazy" width="1128" height="570" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-14-at-10.35.48.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-14-at-10.35.48.png 1000w, https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-14-at-10.35.48.png 1128w" sizes="(min-width: 720px) 720px"></figure><p>The customer is upset that their belt aged quickly, Tecovas is letting them know it is literally made with the intention to age quickly. </p><p>&quot;The result is a boo and belt that ages very quickly for a vintage and worn look that takes days to establish instead of years.&quot;</p><p>This is a wonderful review for new shoppers to see, if they want a belt that gets the aged look quickly &#x2013; they&apos;ll be more likely to opt-in &amp; purchase! If they don&apos;t want that type of belt, we want them to know that upfront or else they&apos;ll be very disappointed.</p><p>Reviews are all about telling the full version of the story for your product &amp; negative reviews are part of this story. Treat them correctly!</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p></p>]]></content:encoded></item><item><title><![CDATA[How to ask customers to edit, update & delete reviews]]></title><description><![CDATA[<p>The FTC is clear &#x2013; businesses cannot alter, edit or change the contents of a review on behalf of the reviewer... but reviewers themselves absolutely can!</p><p>Customers submitting any review is a great opportunity for engagement. </p><p>If the review is positive, you have an opportunity to recommend other products or</p>]]></description><link>https://junip.co/blog/how-to-edit-reviews/</link><guid isPermaLink="false">66bb58bbcd94e257856a0e72</guid><category><![CDATA[Review strategy]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Tue, 13 Aug 2024 17:04:58 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/edit-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/edit-1.png" alt="How to ask customers to edit, update &amp; delete reviews"><p>The FTC is clear &#x2013; businesses cannot alter, edit or change the contents of a review on behalf of the reviewer... but reviewers themselves absolutely can!</p><p>Customers submitting any review is a great opportunity for engagement. </p><p>If the review is positive, you have an opportunity to recommend other products or ask customers for more feedback. If the review is negative &#x2013; it&apos;s often the case that your customer has a problem and is asking you to solve it. </p><p>According to BazaarVoice, <a href="https://www.bazaarvoice.com/blog/how-to-respond-to-negative-reviews-examples-and-best-practices/#:~:text=54%25%20of%20shoppers%20say%20that,a%20discount%20for%20future%20purchases.">54% of shoppers</a> say that if they write a negative review they expect a response from the company. Ideally they would have contacted your customer service team with this problem instead of posting about it publicly, but they were frustrated &amp; wanted to make sure they were heard.</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p>Them having a problem is good news &#x2013; it means you can solve their problem &amp; ask them to update their review.</p><h3 id="how-to-know-when-a-negative-review-happens">How to know when a negative review happens</h3><p>It&apos;s important to set up automated notifications to ensure you know when customers submit negative reviews.</p><ol><li><strong>Over email</strong>: most review platforms &amp; customer engagement tools allow you to set up notification emails based on certain types of conditions. In Junip this is managed in <a href="https://help.junip.co/en/articles/4607142-notification-update-emails">notification settings</a> &#x2013; were you can choose to be notified of reviews with certain star ratings, or those with media.</li><li><strong>In Slack</strong>: if your team is working in Slack, it&apos;s helpful to get notifications of new reviews were multiple people can see them. With Junip you can use <a href="https://help.junip.co/en/articles/6882607-shopify-flow-workflows">Shopify Flow</a> to set up this notification. </li><li><strong>On your help desk</strong>: having your CX team aware of &amp; taking action on negative reviews is the best way to ensure they&apos;re handled quickly. With Junip you can <a href="https://junip.co/integrations/gorgias">connect directly to Gorgias</a>, or through <a href="https://junip.co/integrations/shopify-flow">Shopify Flow</a> for other help desk platforms.</li></ol><p>These are the three main ways we see businesses keep a pulse on what their customers are saying in reviews to make sure they can act fast.</p><h3 id="how-to-ask-customers-to-update-or-delete-their-review">How to ask customers to update or delete their review</h3><ol><li><strong>Empathize with their problem</strong>: Jean-Louis Gass&#xE9;e, the former head of Apple France came up with <a href="https://mondaynote.com/united-broken-culture-6b35267c8a10">the &quot;Two Tokens&quot; theory of customer complaints</a> &amp; we think this applies here. In every case where a customer is upset there are two tokens available &#x2013; &quot;it&apos;s awful&quot;* or &quot;it&apos;s nothing&quot;. In every interaction both tokens will always be played so whichever you pick up, you&apos;re forcing the customer to pick the other. <br><br>If a customer submits a 1-star review saying there was a stitch loose in their shirt &amp; you write to say &quot;that happens sometimes, can you remove your review&quot; you&apos;re taking the &quot;it&apos;s nothing&quot; token &amp; the customer <strong>must</strong> take the &quot;it&apos;s awful&quot; token &#x2013; perhaps further updating their review to be even more outraged. <br><br>Whereas if you reach out to the customer &amp; mention that it&apos;s horrible a stitch was loose in their shirt, you&apos;re thankful they noticed it before going out &amp; are going to make a note to check with the production team to make sure they&apos;re double checking... the customer <strong>must</strong> take the &quot;it&apos;s nothing&quot; token. They&apos;d seem insane otherwise!</li><li><strong>If their problem can be solved, actually solve their problem</strong>: pretty straightforward!</li></ol><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><p>If you nail both of these points &#x2013; genuinely empathize with your customer &amp; solve their problem, it&apos;ll be easy to go in for the ask to update their review.</p><h3 id="how-customers-can-update-or-remove-their-review">How customers can update or remove their review</h3><p>On Junip, the platform thousands of ecommerce businesses use to gather, manage &amp; display reviews from customers, you can <a href="https://help.junip.co/en/articles/6027159-can-a-customer-edit-their-review-on-junip">use Review Links</a>. </p><p>Every business using Junip has a &quot;Review Link&quot; that customers can use to submit reviews for products they&apos;ve purchased, and <a href="https://help.junip.co/en/articles/6027159-can-a-customer-edit-their-review-on-junip">edit, update or remove</a> reviews they&apos;ve previously submitted. If you&apos;re using Junip you can <a href="https://admin.juniphq.com/forms">grab yours here</a>.</p><p>If you&apos;re looking for another platform, here&apos;s the documentation on how to edit reviews on <a href="https://www.amazon.ca/gp/help/customer/display.html?nodeId=G5VY882PY3GFTN6Z">Amazon</a>, <a href="https://support.google.com/maps/answer/6230175?hl=en&amp;co=GENIE.Platform%3DDesktop">Google</a>, &#xA0;<a href="https://www.yelp-support.com/article/How-do-I-edit-one-of-my-reviews?l=en_US">Yelp</a> (within 30 days of posting), <a href="https://www.reddit.com/r/Letterboxd/comments/10zch0j/comment/j82rk64/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button">Letterboxd</a>, Some platforms like Yotpo &amp; Okendo that do not allow customers to edit, update or delete reviews.</p><p>To get started with Junip, create an account: <a href="https://admin.juniphq.com/login/create">https://admin.juniphq.com/login/create</a></p><p>*&quot;it&apos;s awful&quot; was later updated to &quot;it&apos;s the end of the world&quot; <a href="https://world.hey.com/jason/no-big-deal-or-the-end-of-the-world-0b0d8619">in this retelling from Jason Fried</a>, which further popularized the concept.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Analytics: Understanding Reviews & How You're Gathering Them]]></title><description><![CDATA[<p>Reviews can help you understand trends across products, how your customers are engaging with your brand &amp; ultimately enable you to make better decisions about your business. Junip&apos;s Analytics Engine helps you understand your reviews &amp; how to gather more of them.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png" class="kg-image" alt="Analytics home" loading="lazy" width="2000" height="1055" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 1600w, https://junip.co/blog/content/images/size/w2400/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Within Analytics you&#x2019;re able</p>]]></description><link>https://junip.co/blog/analytics-understanding-reviews-how-youre-gathering-them/</link><guid isPermaLink="false">65d10760cd94e2578569f9eb</guid><category><![CDATA[Product updates]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Mon, 12 Aug 2024 17:37:03 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/analytics-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/analytics-2.png" alt="Analytics: Understanding Reviews &amp; How You&apos;re Gathering Them"><p>Reviews can help you understand trends across products, how your customers are engaging with your brand &amp; ultimately enable you to make better decisions about your business. Junip&apos;s Analytics Engine helps you understand your reviews &amp; how to gather more of them.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png" class="kg-image" alt="Analytics: Understanding Reviews &amp; How You&apos;re Gathering Them" loading="lazy" width="2000" height="1055" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 1600w, https://junip.co/blog/content/images/size/w2400/2024/08/CleanShot-2024-08-12-at-13.05.06@2x.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Within Analytics you&#x2019;re able to immediately see an overview of key data such as submission rate, top reviewed products &amp; media collected over time. You&#x2019;re able to easily adjust the time period over which to view the data, drill down to see analytics on a specific product vs your whole catalog as well as choose to add a comparison period to put the data in context.</p><h3 id="detailed-reports">Detailed reports</h3><p>Reports give more insights into three key sets of metrics: ratings collected over time, ratings by product, submission rate over time</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-12-at-13.34.54@2x.png" class="kg-image" alt="Analytics: Understanding Reviews &amp; How You&apos;re Gathering Them" loading="lazy" width="2000" height="1059" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-12-at-13.34.54@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-12-at-13.34.54@2x.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/CleanShot-2024-08-12-at-13.34.54@2x.png 1600w, https://junip.co/blog/content/images/size/w2400/2024/08/CleanShot-2024-08-12-at-13.34.54@2x.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>You can export any of these reports if you need to do further analysis in an internal tool or spreadsheet. Use Analytics in your <a href="https://admin.juniphq.com/analytics">Junip Admin today</a>.</p>]]></content:encoded></item><item><title><![CDATA[What is Review Syndication & How Does it Work?]]></title><description><![CDATA[<p>Review Syndication is used to describe a bunch of different things &#x2013; but typically it&apos;s used to talk about reviews for a product displaying somewhere other than the store they were originally submitted to. </p><p>This could be a brand with multiple storefronts sharing reviews between those stores, a</p>]]></description><link>https://junip.co/blog/what-is-review-syndication-how-does-it-work/</link><guid isPermaLink="false">66b36e72cd94e257856a0ca9</guid><category><![CDATA[Review strategy]]></category><category><![CDATA[Ecommerce strategy]]></category><category><![CDATA[Product identifiers]]></category><category><![CDATA[Google shopping]]></category><category><![CDATA[Meta shops]]></category><dc:creator><![CDATA[Stuart]]></dc:creator><pubDate>Wed, 07 Aug 2024 14:49:14 GMT</pubDate><media:content url="https://junip.co/blog/content/images/2024/09/syndication-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://junip.co/blog/content/images/2024/09/syndication-2.png" alt="What is Review Syndication &amp; How Does it Work?"><p>Review Syndication is used to describe a bunch of different things &#x2013; but typically it&apos;s used to talk about reviews for a product displaying somewhere other than the store they were originally submitted to. </p><p>This could be a brand with multiple storefronts sharing reviews between those stores, a brand sharing reviews with an external retailer they&apos;ve partnered with, or a sharing reviews with a third party advertising channel where a brand is displaying their products.</p><p>Great reviews consistently increase conversion rates &amp; reduce return rates when displayed alongside products, so it makes sense to try to display them in as many places as possible.</p><h3 id="multi-store-syndication-sharing-reviews-between-your-own-storefronts">Multi-store Syndication: sharing reviews between your own storefronts</h3><p>Sometimes called &quot;regional syndication&quot;, this is a critical tool brands can use when expanding internationally. Your brand might be selling in the UK for the first time... but your products aren&apos;t starting from scratch! <a href="https://manduka.com/">Manduka</a> uses mult-store syndication to share reviews between three storefronts (Canada, US, EU) ensuring the smaller markets always have great content:</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-07-at-09.09.43@2x.png" class="kg-image" alt="What is Review Syndication &amp; How Does it Work?" loading="lazy" width="2000" height="690" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-07-at-09.09.43@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-07-at-09.09.43@2x.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/CleanShot-2024-08-07-at-09.09.43@2x.png 1600w, https://junip.co/blog/content/images/size/w2400/2024/08/CleanShot-2024-08-07-at-09.09.43@2x.png 2400w" sizes="(min-width: 720px) 720px"></figure><p><strong>When it&apos;s helpful</strong>: for brands expanding internationally with multiple storefronts that have a well maintained product catalog (ie product identifiers) and reviews that will be relevant across regions. </p><p><strong>When it&apos;s a waste of time</strong>: if you don&apos;t have a consistent, well maintained product catalog structure across storefronts it will be very hard for any platform to reliably share reviews &#x2013; it is probably worth circling back down the line.</p><h3 id="retail-syndication-sharing-reviews-between-brands-retailers">Retail syndication: sharing reviews between brands &amp; retailers</h3><p>Retail syndication can sometimes be a cheat code in scaling with certain retail partners, and other times can be a bottomless pit of wasted time, money &amp; resources. It is a helpful way to get reviews from products on your own store into product listings on retail stores (and in some cases, share reviews back from retail stores to your own site), but depending on the retailer it can be an exhausting process to set up &amp; have limited results. Retail syndication often requires you to use multiple review platforms &amp; pay high fees to share reviews into retail partners.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-07-at-09.26.31@2x.png" class="kg-image" alt="What is Review Syndication &amp; How Does it Work?" loading="lazy" width="1636" height="650" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-07-at-09.26.31@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-07-at-09.26.31@2x.png 1000w, https://junip.co/blog/content/images/size/w1600/2024/08/CleanShot-2024-08-07-at-09.26.31@2x.png 1600w, https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-07-at-09.26.31@2x.png 1636w" sizes="(min-width: 720px) 720px"></figure><p><strong>When it&apos;s helpful</strong>: for brands that do the majority of their business in retail, with strong reviews on their products &amp; retailer partners that are requesting they share reviews with them it can be an important way to boost your listings. You&apos;ll also need a strong product catalog to match products.</p><p><strong>When it&apos;s a waste of time</strong>: for brands that are just starting out in retail, where retail is less than 25% of your overall revenue, the costs to syndicate might not be worth the benefits. If you&apos;re prioritizing your DTC experience, you may want to retain those reviews for your own customers.</p><!--kg-card-begin: html--><style>@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');</style><div class="newsletter-form-container"><form class="newsletter-form" action="https://app.loops.so/api/newsletter-form/clwak46v90035mix48v5z6llw" method="POST" style="display: flex; flex-direction: row; align-items: center; justify-content: center; width: 100%;"><input class="newsletter-form-input" name="newsletter-form-input" type="email" placeholder="you@example.com" required style="font-family: Inter, sans-serif; color: rgb(0, 0, 0); font-size: 15px; margin: 0px 10px 0px 0px; width: 100%; max-width: 300px; min-width: 100px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 213, 219); box-sizing: border-box; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; padding: 8px 12px;"><button type="submit" class="newsletter-form-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: flex; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Subscribe</button><button type="button" class="newsletter-loading-button" style="background: rgb(4, 5, 5); font-size: 15px; color: rgb(255, 255, 255); font-family: Inter, sans-serif; display: none; width: min-content; max-width: 300px; white-space: nowrap; height: 38px; align-items: center; justify-content: center; flex-direction: row; padding: 9px 17px; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px; border-radius: 6px; text-align: center; font-style: normal; font-weight: 500; line-height: 20px; border: none; cursor: pointer;">Please wait...</button></form><div class="newsletter-success" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-success-message" style="font-family: Inter, sans-serif; color: rgb(7, 121, 73); font-size: 16px;">Thanks for subscribing!</p></div><div class="newsletter-error" style="display: none; align-items: center; justify-content: center; width: 100%;"><p class="newsletter-error-message" style="font-family: Inter, sans-serif; color: rgb(185, 28, 28); font-size: 16px;">Oops! Something went wrong, please try again</p></div>
<button class="newsletter-back-button" type="button" style="color:#6b7280;font: 14px, Inter, sans-serif;margin:10px auto;text-align:center;display:none;background:transparent;border:none;cursor:pointer" onmouseout="this.style.textDecoration=&quot;none&quot;" onmouseover="this.style.textDecoration=&quot;underline&quot;">
&#x2190; Back
</button>
</div><script>
function submitHandler(event) {
  event.preventDefault();
  var container = event.target.parentNode;
  var form = container.querySelector(".newsletter-form");
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");
  var loadingButton = container.querySelector(".newsletter-loading-button");

  const rateLimit = () => {
    errorContainer.style.display = "flex";
    errorMessage.innerText = "Too many signups, please try again in a little while";
    submitButton.style.display = "none";
    formInput.style.display = "none";
    backButton.style.display = "block";
  }

  // Compare current time with time of previous sign up
  var time = new Date();
  var timestamp = time.valueOf();
  var previousTimestamp = localStorage.getItem("loops-form-timestamp");

  // If last sign up was less than a minute ago
  // display error
  if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) {
    rateLimit();
    return;
  }
  localStorage.setItem("loops-form-timestamp", timestamp);

  submitButton.style.display = "none";
  loadingButton.style.display = "flex";

  var formBody = "userGroup=blog%20subscribers&mailingLists=&email=" + encodeURIComponent(formInput.value);
  fetch(event.target.action, {
    method: "POST",
    body: formBody,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  })
    .then((res) => [res.ok, res.json(), res])
    .then(([ok, dataPromise, res]) => {
      if (ok) {
        // If response successful
        // display success
        success.style.display = "flex";
        form.reset();
      } else {
        // If response unsuccessful
        // display error message or response status
        dataPromise.then(data => {
          errorContainer.style.display = "flex";
          errorMessage.innerText = data.message
            ? data.message
            : res.statusText;
        });
      }
    })
    .catch(error => {
      // check for cloudflare error
      if (error.message === "Failed to fetch") {
        rateLimit();
        return;
      }
      // If error caught
      // display error message if available
      errorContainer.style.display = "flex";
      if (error.message) errorMessage.innerText = error.message;
      localStorage.setItem("loops-form-timestamp", '');
    })
    .finally(() => {
      formInput.style.display = "none";
      loadingButton.style.display = "none";
      backButton.style.display = "block";
    });
}
function resetFormHandler(event) {
  var container = event.target.parentNode;
  var formInput = container.querySelector(".newsletter-form-input");
  var success = container.querySelector(".newsletter-success");
  var errorContainer = container.querySelector(".newsletter-error");
  var errorMessage = container.querySelector(".newsletter-error-message");
  var backButton = container.querySelector(".newsletter-back-button");
  var submitButton = container.querySelector(".newsletter-form-button");

  success.style.display = "none";
  errorContainer.style.display = "none";
  errorMessage.innerText = "Oops! Something went wrong, please try again";
  backButton.style.display = "none";
  formInput.style.display = "flex";
  submitButton.style.display = "flex";
}

var formContainers = document.getElementsByClassName(
  "newsletter-form-container"
);

for (var i = 0; i < formContainers.length; i++) {
  var formContainer = formContainers[i]
  var handlersAdded = formContainer.classList.contains('newsletter-handlers-added')
  if (handlersAdded) continue;
  formContainer
    .querySelector(".newsletter-form")
    .addEventListener("submit", submitHandler);
  formContainer
    .querySelector(".newsletter-back-button")
    .addEventListener("click", resetFormHandler);
  formContainer.classList.add("newsletter-handlers-added");
}
</script><!--kg-card-end: html--><h3 id="advertising-syndication-sharing-reviews-to-google-shopping-meta-shops-more">Advertising Syndication: sharing reviews to Google Shopping, Meta Shops &amp; more</h3><p>If you&apos;re spending money to advertise on Google Shopping (Product Listing Ads etc), Instagram Shops or Facebook Shops, sharing reviews to these channels can have a double digit impact on your conversion rate.<em> </em>Conversely not having reviews on Product Listings makes it hard to standout next to competitors who do. </p><p>Reviews are particularly important in search based ads where your products will be displayed next to competitive products (ie Google Shopping) and slightly less important when your products will be displayed by themselves.</p><figure class="kg-card kg-image-card"><img src="https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-07-at-10.42.02@2x.png" class="kg-image" alt="What is Review Syndication &amp; How Does it Work?" loading="lazy" width="1150" height="998" srcset="https://junip.co/blog/content/images/size/w600/2024/08/CleanShot-2024-08-07-at-10.42.02@2x.png 600w, https://junip.co/blog/content/images/size/w1000/2024/08/CleanShot-2024-08-07-at-10.42.02@2x.png 1000w, https://junip.co/blog/content/images/2024/08/CleanShot-2024-08-07-at-10.42.02@2x.png 1150w" sizes="(min-width: 720px) 720px"></figure><p><strong>When it&apos;s helpful</strong>: if you&apos;re spending meaningful money in a given channel and have products displayed next to competitors, it&apos;s important to display reviews alongside your products.</p><p><strong>When it&apos;s a waste of time</strong>: if you don&apos;t have strong product identifiers, consistent product catalog structure &amp; aren&apos;t spending a lot of money in a given channel, it might not make sense to focus on syndication.</p><h3 id="maintaining-your-product-catalog">Maintaining Your Product Catalog</h3><p>Every form of syndication (multi-store, retail &amp; advertising) requires matching products from your store with products in the destination you&apos;re trying to share reviews with. In order to do this, you need to maintain a high quality product catalog with strong identifiers (UPCs, barcodes) that persist everywhere products go.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://junip.co/blog/product-identifiers-for-ecommerce-brands/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Product Identifiers For Ecommerce Explained (SKU, MPN, GTIN)</div><div class="kg-bookmark-description">Product Identifiers are a series of numbers or letters used to identify and differentiate products in the global marketplace.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://junip.co/blog/content/images/size/w256h256/2022/02/touch-icon.png" alt="What is Review Syndication &amp; How Does it Work?"><span class="kg-bookmark-author">Junip</span><span class="kg-bookmark-publisher">Leah Morassut</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://junip.co/blog/content/images/2023/10/Copy-of-Junip---AfterSell.png" alt="What is Review Syndication &amp; How Does it Work?"></div></a></figure><p><a href="https://admin.juniphq.com/login/create">Install Junip</a> to get started with Syndication today, or for those already using Junip <a href="https://admin.juniphq.com/syndication">head to your Admin</a>.</p><div class="kg-card kg-button-card kg-align-center"><a href="https://admin.juniphq.com/login/create" class="kg-btn kg-btn-accent">Install Junip</a></div>]]></content:encoded></item></channel></rss>