Customer Review System That Generates Valid Review Schema
Build a customer review collection workflow whose output maps cleanly to Schema.org Review and AggregateRating — the structured data Google needs to show star ratings in search and AI answer engines need to cite you confidently. Includes review-request email templates, structured intake form fields, and the JSON-LD generator that turns raw reviews into valid markup.
AggregateRating without backing Review entities is the #1 cause of "invalid structured data" errors in Google Search Console. Many small business sites add stars to their Organization schema without the actual reviews to back them — and Google flags every page. This workflow fixes the root cause: collect reviews in a structured format from day one, then auto-generate matching Review JSON-LD.
How to use this prompt
- Pick your AI model. Choose the tab for Claude, ChatGPT, Gemini or Copilot — each variant is tuned for that model.
- Copy the full prompt. Click Copy Full Prompt to copy the text to your clipboard.
- Paste into your AI tool. Open your chosen model and paste the prompt into a new chat.
- Replace the
[placeholders]. Swap any bracketed fields for your company name, audience, product or tone. - Run and refine. Review the output. If anything is off, ask the AI to tighten tone, length or format.
Prompt Variants by Model
You are a structured-data engineer and customer-marketing strategist. Build me a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show...
You are a structured-data engineer and customer-marketing strategist. Build me a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show stars in Google search and get cited confidently by AI answer engines.
<business_context>
Business: [NAME] — [WHAT YOU DO IN ONE SENTENCE]
What is being reviewed: [pick one — Product / Service / LocalBusiness / SoftwareApplication / Course]
Specific name of the thing being reviewed: [e.g. "13-Week Cash Flow Forecast Template", "Smith Dental — Austin Office", "AcmeCRM Starter Plan"]
Page URL where reviews will be displayed: [https://YOUR-DOMAIN.COM/...]
Rating scale: [pick one — 1–5 stars / 1–10 / thumbs up-down / NPS 0–10]
How customers reach you: [email / SMS / in-app / point-of-sale / post-call follow-up]
When you''ll request reviews (event trigger): [e.g. "7 days after first purchase", "after appointment completion", "on subscription renewal"]
Brand voice: [warm-expert / no-nonsense / playful / premium-restrained / technical-precise / friendly-everyday]
Existing review platforms (if any): [Google Business Profile / Trustpilot / G2 / Capterra / Yelp / NONE]
</business_context>
<workflow_to_build>
Walk through end-to-end, then produce all six artifacts:
1. **Trigger logic** — exactly when to request a review (event + delay).
2. **Review-request message** — the actual email/SMS/in-app copy. ≤120 words. One clear ask.
3. **Structured intake form** — the form fields a customer fills out so the data maps to Schema.org Review fields.
4. **Reviewer-side micro-prompt** — what to put inside the form to help customers write a useful, citable review (length, what to mention, what to skip).
5. **Review-to-JSON-LD generator** — a small script-style template that converts collected reviews into valid Review JSON-LD.
6. **AggregateRating refresh rule** — when and how to update AggregateRating so it always matches the actual count + average of published Review entities.
</workflow_to_build>
<schema_requirements>
Each Review JSON-LD entry MUST have:
- @type: Review
- author: { @type: Person, name: [reviewer name] }
- datePublished: ISO 8601 date
- reviewRating: { @type: Rating, ratingValue: [number], bestRating: [max], worstRating: [min] }
- reviewBody: the reviewer''s text (≥50 chars to be considered substantive)
- itemReviewed: cross-reference via @id to the Product/Service/LocalBusiness entity
The page''s AggregateRating MUST have:
- @type: AggregateRating
- ratingValue: average of all published reviews
- reviewCount: count of published reviews (NOT including unpublished/pending)
- bestRating, worstRating
- itemReviewed: same @id reference
</schema_requirements>
Output exactly six parts:
**PART 1 — Trigger Logic**
One paragraph: event + delay + any qualification rules (e.g. "skip customers who churned in trial").
**PART 2 — Review-Request Message**
Email / SMS / in-app copy in markdown. Subject line if email. ≤120 words. Match brand voice. Include one clear ask + a one-click link to the structured form.
**PART 3 — Structured Intake Form (field spec)**
Markdown table: Field name · Type · Required (y/n) · Maps to Schema.org field · Help text shown to user. Fields must capture everything needed to populate Review JSON-LD (reviewer name, optional company, rating, review body, optional photo URL, consent to publish).
**PART 4 — Reviewer-Side Micro-Prompt**
The 1–2 sentence helper text that appears inside the form to coach the customer toward a useful, citable review (length target, what to mention specifically, what to skip).
**PART 5 — JSON-LD Generator Template**
A code block (Python, Node, or pseudocode — pick what fits the brand''s tech if mentioned, else Python) that takes an array of review objects and outputs:
(a) A Review JSON-LD block per review.
(b) The page''s AggregateRating JSON-LD block, recomputed from the array.
Include input validation: skip reviews with reviewBody under 50 chars or no rating.
**PART 6 — Refresh Rule + Pre-Publish Audit**
- When to recompute AggregateRating (event-driven? daily cron?).
- Pre-publish checklist: ✓/✗ on whether the AggregateRating count matches the visible Review count, every Review has all required fields, no Review references an itemReviewed @id that doesn''t exist on the page.
- The Rich Results Test URL for verification.
- Flag any field where my context was missing (e.g. "you didn''t specify the rating scale — defaulted to 1–5 stars; change if needed").
Act as a structured-data engineer + customer-marketing strategist. Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show stars in...
Act as a structured-data engineer + customer-marketing strategist. Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show stars in Google search and be cited confidently by AI answer engines.
Business context:
- Name + what we do: [NAME — SENTENCE]
- What''s being reviewed: [Product / Service / LocalBusiness / SoftwareApplication / Course]
- Specific name of thing reviewed: [NAME]
- Page URL where reviews display: [https://YOUR-DOMAIN.COM/...]
- Rating scale: [1–5 stars / 1–10 / thumbs / NPS 0–10]
- How customers reach you: [email / SMS / in-app / POS / post-call]
- When you''ll request reviews (trigger): [DESCRIPTION]
- Brand voice: [warm-expert / no-nonsense / playful / premium / technical / friendly-everyday]
- Existing review platforms: [GBP / Trustpilot / G2 / Capterra / Yelp / NONE]
Build six artifacts:
1. Trigger logic — event + delay + qualification rules (one paragraph).
2. Review-request message — email/SMS/in-app copy, ≤120 words, brand-voice, one clear ask + form link.
3. Structured intake form spec — markdown table: Field · Type · Required y/n · Maps to Schema.org field · Help text. Capture everything needed for Review JSON-LD: reviewer name, optional company, rating, review body, optional photo URL, consent to publish.
4. Reviewer-side micro-prompt — 1–2 sentence coaching text shown inside the form (length target, what to mention, what to skip).
5. JSON-LD generator template — code (Python or Node, pick what fits) that takes an array of review objects and outputs (a) Review JSON-LD per review and (b) AggregateRating recomputed from the array. Validate: skip reviews with body <50 chars or missing rating.
6. Refresh rule + pre-publish audit:
- When to recompute AggregateRating.
- Checklist: AggregateRating count = visible Review count, every Review has required fields, no Review.itemReviewed @id missing from the page.
- Rich Results Test URL.
- Flag missing context with defaults applied.
Schema requirements (don''t skip):
Each Review needs @type Review, author { @type Person, name }, datePublished ISO, reviewRating { @type Rating, ratingValue, bestRating, worstRating }, reviewBody (≥50 chars), itemReviewed @id cross-ref.
AggregateRating needs @type AggregateRating, ratingValue (computed avg), reviewCount (published only), bestRating, worstRating, itemReviewed @id matching above.
You are a structured-data engineer + customer-marketing strategist. Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating.
BUSINESS CONTEXT:
•...
You are a structured-data engineer + customer-marketing strategist. Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating.
BUSINESS CONTEXT:
• Name + what we do: [NAME — SENTENCE]
• What''s being reviewed: [Product / Service / LocalBusiness / SoftwareApplication / Course]
• Specific name: [NAME]
• Page URL: [https://YOUR-DOMAIN.COM/...]
• Rating scale: [1–5 stars / 1–10 / thumbs / NPS 0–10]
• Customer reach: [email / SMS / in-app / POS / post-call]
• Review request trigger: [EVENT + DELAY]
• Brand voice: [warm-expert / no-nonsense / playful / premium / technical / friendly-everyday]
• Existing platforms: [GBP / Trustpilot / G2 / Capterra / Yelp / NONE]
BUILD SIX ARTIFACTS:
1. Trigger logic — event + delay + qualification rules.
2. Review-request message — copy ≤120 words, brand-voice, one clear ask + form link.
3. Structured intake form spec — table: Field · Type · Required · Maps to Schema.org field · Help text. Capture: reviewer name, optional company, rating, review body, optional photo URL, publish consent.
4. Reviewer-side micro-prompt — 1–2 sentence coaching shown inside the form.
5. JSON-LD generator — code (Python or Node) that takes review array and outputs Review JSON-LD per review + recomputed AggregateRating. Validation: skip body <50 chars or missing rating.
6. Refresh rule + pre-publish audit:
- When to recompute AggregateRating.
- Checklist: count match, required fields present, no missing @id refs.
- Rich Results Test URL.
- Flag missing context with defaults.
SCHEMA REQUIREMENTS:
Each Review = @type Review, author Person { name }, datePublished ISO, reviewRating Rating { ratingValue, bestRating, worstRating }, reviewBody (≥50 chars), itemReviewed @id.
AggregateRating = @type AggregateRating, ratingValue (avg), reviewCount (published only), bestRating, worstRating, itemReviewed @id.
Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show stars in Google search and be cited confidently by AI answer...
Build a customer review collection system whose output maps cleanly to Schema.org Review + AggregateRating, so I can show stars in Google search and be cited confidently by AI answer engines.
Business context:
• Name + what we do: [NAME — SENTENCE]
• What''s being reviewed: [Product / Service / LocalBusiness / SoftwareApplication / Course]
• Specific name: [NAME]
• Page URL: [https://YOUR-DOMAIN.COM/...]
• Rating scale: [1–5 stars / 1–10 / thumbs / NPS 0–10]
• Customer reach: [email / SMS / in-app / POS / post-call]
• Review request trigger: [EVENT + DELAY]
• Brand voice: [warm-expert / no-nonsense / playful / premium / technical / friendly-everyday]
• Existing platforms: [GBP / Trustpilot / G2 / Capterra / Yelp / NONE]
Build six artifacts:
1. Trigger logic — event + delay + qualification rules.
2. Review-request message — copy ≤120 words, brand-voice, one clear ask + form link.
3. Structured intake form spec — table: Field · Type · Required · Maps to Schema.org field · Help text. Capture reviewer name, company (optional), rating, review body, photo URL (optional), publish consent.
4. Reviewer-side micro-prompt — 1–2 sentence coaching inside the form (length, what to mention, what to skip).
5. JSON-LD generator — code (Python or Node) that takes review array → Review JSON-LD per review + recomputed AggregateRating. Skip reviews with body <50 chars or missing rating.
6. Refresh rule + pre-publish audit:
- When to recompute AggregateRating.
- Checklist: count match, required fields present, no missing @id refs.
- Rich Results Test URL.
- Flag missing context with defaults.
Schema requirements:
Each Review = @type Review, author Person { name }, datePublished ISO, reviewRating Rating { ratingValue, bestRating, worstRating }, reviewBody (≥50 chars), itemReviewed @id.
AggregateRating = @type AggregateRating, ratingValue (avg), reviewCount (published only), bestRating, worstRating, itemReviewed @id.
Frequently Asked Questions
What does the Customer Review System That Generates Valid Review Schema prompt do?
Build a customer review collection workflow whose output maps cleanly to Schema.org Review and AggregateRating — the structured data Google needs to show star ratings in search and AI answer engines need to cite you confidently. Includes review-request email templates, structured intake form fields, and the JSON-LD generator that turns raw reviews into valid markup.
Which AI models is this prompt tested on?
This prompt is field-tested on Claude, ChatGPT, Gemini and Copilot. Each model has its own optimized variant above.
Do I need a paid AI account to use this prompt?
No. This prompt is written to run on the free tier of Claude, ChatGPT, Gemini and Copilot. Paid tiers simply give you longer context windows and faster responses.
Can I customize this prompt for my business?
Yes. Any text inside square brackets is a placeholder you replace with your own business details, such as company name, audience, product or tone. You can also ask the AI to adjust format, length or style after the first output.
When was this prompt last verified?
Each model variant above shows its own freshness stamp. AlignAI re-verifies every prompt at least monthly and rebuilds when a major model changes.
Don’t see what you need? tailored to your use case.