Skip to main content
Reputation Studio captures client reviews through a post-transaction survey that fires automatically when a deal closes. Everything about how clients are asked — the rating control, the routing for unhappy responses, and the platforms they can post to — is configured under Marketing → Reputation → Profile in the Review experience card.

When surveys send

When a deal transitions to won, Winnerr emits a DEAL_WON system event. The reputation survey workflow listens for that event and:
  1. Looks up the active SurveyTemplate matching the trigger (DEAL_WON).
  2. Creates a Survey addressed to the buyer or seller Person on the deal.
  3. Generates a unique accessToken for the public response page.
  4. Schedules the send for now + sendDelayHours (default 168 hours / 7 days after close).
You can also send a survey manually for any Person + Deal pair from the Reputation Studio UI or via the reputation API.

Sentiment style

The sentiment style controls what the client sees when they tap to rate you. Choose the one that fits your brand and your clients’ expectations. All styles normalize to a 1–5 internal rating. The threshold for “happy” is 4 or above on the normalized scale. Below that, the response is routed to the private feedback channel (see Review experience below).

How to set the sentiment style

  1. Go to Marketing → Reputation → Profile.
  2. Open the Review experience card.
  3. Under How clients are asked, select a style: Stars, Thumbs, Faces, NPS, or Number.
  4. Click Save review experience.
The new style is served to all clients who open their survey link after you save. Previously opened survey pages are not affected.

Review experience

The Review experience setting controls what happens when a client’s rating falls below 4 (on the normalized 1–5 scale). Configure it under Marketing → Reputation → Profile in the Review experience card. Unhappy clients receive a private feedback channel and you are alerted (in-app and by email) so you can follow up personally. They are never blocked from leaving a public review — plain links to your platforms remain available with a soft “If you’d also like to share publicly, you can:” message. This stays within Google’s review policies.

Strict

Unhappy clients see no public-review links at all. This is known as “review gating.” Google discourages review gating and it can put your Google Business Profile at risk, including removal of reviews or a Consumer Alert. Use this mode only if you understand and accept that risk.
Strict mode is “review gating” as defined by Google’s review policies. Google can demote, remove, or flag listings that gate reviews. The Compliant mode protects your listing while still capturing unhappy feedback privately.

Review platforms

Platforms are where you send happy clients to post a review after they complete their survey. Configure them under Marketing → Reputation → Profile in the Syndication keys and Review experience cards. Platforms render on the survey thank-you screen in the order: Google → Facebook → Yelp → custom.

Yelp compliance

Yelp’s Terms of Service prohibit businesses from soliciting reviews. A “leave a Yelp review” prompt can result in your Yelp page being filtered, flagged with a Consumer Alert, or penalized. Winnerr makes Yelp available as an opt-in platform, and the Profile UI displays a warning before you can save a Yelp URL. Add Yelp only if you understand this risk and are not directing clients specifically to Yelp.
Yelp prohibits soliciting reviews. Adding a Yelp link to your review request can get your Yelp listing penalized. The Compliant review mode does not make Yelp safe to solicit — that is a Yelp platform rule, not a Winnerr setting.

Finding your Google Place ID

Your Google Place ID is available in the Google Place Finder. Search for your business and copy the Place ID shown — it looks like ChIJN1t_tDeuEmsRUsoyG83frY4.

The public survey page

The survey link in the email opens an unauthenticated, tokenized page:
The page:
  • Resolves the survey strictly by accessToken, server-side — the org is never trusted from the client.
  • Shows the rating control (in the configured sentiment style), an optional comment box, and consent toggles for high ratings.
  • Returns a uniform 404 for unknown, expired, completed, or skipped tokens.
Submissions go to:
The server validates the body, persists a SurveyResponse, flips the survey to COMPLETED, and emits SURVEY_COMPLETED. The body is capped at 64 KB and the endpoint is rate-limited.

Smart Review Composer

After a happy client (rating ≥ 4) submits their survey and at least one platform is configured, they reach the Smart Review Composer instead of a simple thank-you screen. The composer:
  1. Pre-fills an editable text box with the client’s own words from the comment field.
  2. Offers a “Polish with AI” button — this rewrites the client’s own text to be cleaner and more natural. The AI only works with what the client wrote; it never fabricates a review.
  3. Once polished, the button label changes to “Try another version” to generate an alternative phrasing.
  4. A Copy button copies the review text to the clipboard.
  5. For each configured platform, a “Copy & open [Platform]” button copies the text and opens the platform’s review page in a new tab simultaneously, so the client can paste immediately.
The composer is only shown for happy responses and only when at least one review platform is configured. The AI polish is an optional step — clients can copy and post their own unedited words at any time.

AI polish details

  • The AI rewrites the client’s own text only — no fabrication, no invented details.
  • The endpoint (POST /api/public/survey/:token/polish) is rate-limited to 10 requests per minute per token.
  • Input text is capped at 2,000 characters.
  • If polish fails for any reason, the composer stays functional — the client sees a brief error note and can still copy and post their original words.

Survey templates

A SurveyTemplate is your org-authored, reusable questionnaire. Each template carries: Templates are org-scoped. Create, list, and edit them via the survey templates API.

Reminder ladder

By default, an unanswered survey triggers two reminder emails:
  • +3 days after the initial send.
  • +7 days after the initial send.
The Survey.reminderCount field tracks how many reminders have gone out. Surveys expire after expiresAt (default 30 days from creation), at which point reminders stop and the survey can no longer be answered.

Branded email

Survey emails (initial + reminders) are rendered through React Email and pull identity from the agent’s Brand Kit: logo, colors, brokerage info, compliance footer, and social links. The recipient sees:
  • The agent’s headshot and name.
  • A one-tap CTA that opens the tokenized survey page.
  • Brokerage info and compliance disclaimers in the footer.
If the agent has not configured a Brand Kit, the template falls back to Winnerr defaults.

From response to testimonial

When the response comes in, the reputation response consumer:
  1. Stores the answers (npsScore, csatScore, starRating, free text) on SurveyResponse.
  2. Runs AI sentiment analysis and writes the score back to SurveyResponse.sentiment.
  3. If the client opted in (testimonialOptIn) and the rating is high enough (≥ 4), promotes the response into a Testimonial row with status PENDING and visibility PRIVATE.
  4. Captures the consent snapshot (use name, use photo, public) onto the testimonial.
The testimonial then waits for the agent in the approval inbox. Nothing is public until the agent approves and publishes it.

Manual sends

To send a survey outside of the auto-trigger, POST /api/reputation/surveys with a templateId, recipientPersonId, agentUserId, and optional dealId. The endpoint generates a fresh accessToken, schedules the send, and emits the same downstream events as the auto-flow.

Survey lifecycle