Documentation Index
Fetch the complete documentation index at: https://docs.hiveku.com/llms.txt
Use this file to discover all available pages before exploring further.
What this is
Product reviews that work on a headless Next.js storefront. Yotpo, Loox, Stamped, and Okendo — the dominant Shopify review apps — are all Liquid-only and don’t render on a custom storefront. Hiveku ships its own review system that’s headless-native. Three pieces:<ProductReviews>server component on every PDP — rendered into the HTML on first byte, with fullaggregateRatingJSON-LD for Google rich snippets and AI search.- Submission flow — workflow email links shoppers to
/account/write-review?t=<token>. Token is signed (HMAC, 30-day TTL) so we know which order, customer, and product the review is for. - Moderation queue —
/dashboard/commerce/shopify/reviews. Pending submissions go here. One-click approve / reject / mark spam.
Why this is the wedge over Yotpo / Loox / Stamped / Okendo
- All four are Liquid-only. They render via theme injection. Headless storefronts get nothing.
- Their pricing starts at 300+/month for the same merchant features.
- None of them ship
aggregateRatingJSON-LD on a headless storefront because they have no theme to inject into.
What ships server-rendered
<ProductReviews> reads from the public list endpoint at render time. The PDP server component fetches reviews + computes the aggregate, embeds the result into the JSON-LD, and renders the review list:
aggregateRating only renders when at least one approved review exists. Google’s structured-data validator flags ratings with reviewCount: 0 as invalid markup, which can suppress rich snippets across the entire shop.The submission flow
Reviews are collected via the workflow builder — not a separate emailing system. Build a workflow that fires aftershopifyOrderCreatedTrigger, waits N days, and sends an email with a signed review link.
Workflow trigger fires after an order
Use
shopifyOrderCreatedTrigger (already exists from Shopify integration). Configure it with onlyFirstOrders: false (you want all customers, not just new) or scope by product.Wait node delays delivery
Drop in a
wait node with 14 days (or whatever cadence you want). Most merchants use 7–21 days post-purchase.Email step builds the review URL
The email step uses Example output:
buildReviewRequestUrl() from @/lib/shopify/reviews to mint the signed link:https://yourshop.com/account/write-review?t=<token>&handle=coffee-bag&product=Single-Origin%20Coffee%20BagShopper opens the link, fills the form, submits
Star rating (1-5), title, body, optional name. The form posts to Hiveku’s public submit endpoint with the token.
Token is verified, review lands in moderation
Hiveku verifies the HMAC + TTL, decodes the embedded fields (no body fields can override identity), and inserts a
pending review row.Verified-purchase flag
Reviews submitted via a token that carries anorderId are auto-flagged is_verified_purchase: true. The PDP renders a small “Verified” badge next to the rating. This is the gold-standard reviewer trust signal.
Anonymous reviews (no token / token without orderId) are not supported in v1. The signed-link flow is the only submission path.
Moderation queue
/dashboard/commerce/shopify/reviews:
- Tabs: Pending / Approved / Rejected / Spam
- Per row: rating stars, customer name + email, product handle, shop (multi-shop accounts), verified-purchase badge, body excerpt
- Inline actions: Approve / Reject / Mark Spam
- Optimistic UI — moves the row out of the current tab on click, no full refresh
Inbox alerts
When a review landspending, it auto-seeds a row in /dashboard/commerce/inbox:
New review: ★★★★★ from jane@example.com (verified purchase) “These coffee bags arrived right on time and the flavor was…” Approve or reject from the moderation queue.Severity:
urgent for 1-2 star reviews (you want to read those first), suggestion otherwise.
Workflow triggers on review events
Two trigger node types fire on review state changes:| Trigger | Fires on |
|---|---|
shopifyReviewSubmittedTrigger | Every submission (any status, including pending) |
shopifyReviewApprovedTrigger | Moderator approval (the recommended trigger for “rewards” automations) |
shopifyReviewTrigger matches both.
Filter conditions
minRating/maxRating— gate by star valueproductHandles— only react to specific productsconnectionId— multi-shop scopingonlyFirstSubmission— skip resubmissionsonlyVerifiedPurchases— only fire on tokenized submissionsonlyApproved— gate on moderation (recommended for any reward automation)
Example automations
Thank-you discount on a 5-star approved review
Trigger:
shopifyReviewApprovedTrigger
Filter: minRating: 5, onlyApproved: true
Action: send_email “Thanks for the kind words — here’s 15% off your next order”Internal alert on negative reviews
Trigger:
shopifyReviewSubmittedTrigger
Filter: maxRating: 2
Action: notify slack #ops with reviewer email + body excerptUGC pull on photo reviews
Trigger:
shopifyReviewApprovedTrigger
(Phase 2 when photo upload ships)
Action: log_crm_activity tagging contact ‘ugc_eligible’Re-engagement to past reviewers
Use Hiveku CRM segment:
last_review_submitted_at < 90 days ago
Action: send_email about a new product launchWhat gets scaffolded
Reviews ship automatically withshopify_scaffold_product-detail-route (the all-in-one storefront scaffold). For projects with a custom PDP that want to layer reviews in without re-emitting the storefront, run shopify_scaffold_reviews:
<ProductReviews> and feeds it the pre-fetched aggregate data so the JSON-LD reads the same numbers as the visible review list (one fetch, two consumers).
CRM linkage
Every review submission upserts the reviewer as acrm_contacts row (keyed by email). A future segment filter on last_review_submitted_at lets you build “thank-you” sequences targeted at reviewers without writing a new system.
What we did not ship (Phase 2)
- Photo upload on reviews. Database column reserved (
photos JSON); UI + S3 not wired. - Bulk import from Yotpo / Judge.me CSV. Schema supports it; importer not built.
- Q&A (questions and answers on product pages). Adjacent feature, separate scope.
- Auto-approve high-rating reviews from verified purchases. Schema supports it; UI toggle not exposed.
- Cross-product review aggregation (a brand-level rating across all products).
What’s next
Workflow triggers
Build review-collection emails and reward automations.
Subscriptions
Reviews + subscriptions both share the customer-account scaffold.