I'm tracking customer review with Star rating and free text input What is the best approach to analyse and display the results in Mixpanel please provide examples
Analysing Customer Reviews (Star Rating + Free Text) in Mixpanel
Here's a recommended approach based on Mixpanel best practices:
1. Track a Single, Well-Attributed Event
Rather than creating separate events for each rating value, track one event with rich properties. [single event power] Example event:
Property | Type | Example Value |
event name | — | Review Submitted |
star_rating | Numeric | 4 |
review_text | String | "Great experience!" |
product_id | String | "SKU-123" |
review_category | String | "Delivery" |
platform | String | "iOS" |
⚠️ Important: Keep star_rating as a Numeric type so you can calculate averages, medians, and percentiles in Mixpanel. [property data types]
⚠️ For review_text, be mindful that strings are truncated at 255 characters, and free-text fields may contain PII. Consider whether you need to send this to Mixpanel at all — tagging/categorising the text before sending (e.g. review_category) is often more analytically useful. [import events]
2. Analyse in Insights
Use the Insights report to visualise your review data: [Insights overview]
Average Star Rating Over Time
Behavior: Review Submitted
Measurement: Aggregate → Average of star_rating
Visualization: Line chart → shows rating trend over time
Distribution of Star Ratings
Behavior: Review Submitted
Measurement: Total Events
Breakdown: star_rating
Visualization: Bar chart → shows how many 1★, 2★, 3★, 4★, 5★ reviews were submitted
Ratings by Product or Category
Behavior: Review Submitted
Measurement: Average of star_rating
Breakdown: product_id or review_category
Visualization: Bar chart → compare ratings across products/categories
3. Use Custom Buckets for Rating Groups
You can group ratings into sentiment buckets directly in the UI without changing your data: [discover insights]
Negative: 1–2 ★
Neutral: 3 ★
Positive: 4–5 ★
This uses Mixpanel's custom buckets feature on the star_rating numeric property.
4. Filter & Segment for Deeper Analysis
Filter to only show low-rated reviews (star_rating <= 2) and break down by platform or product_id to find problem areas.
Break down by user properties (e.g. subscription plan, country) to see if certain user segments leave lower ratings. [Insights quick start]
Summary
Goal | Report | Key Setting |
Rating trend over time | Insights (Line) | Avg of star_rating |
Rating distribution | Insights (Bar) | Breakdown by star_rating |
Ratings by product | Insights (Bar) | Breakdown by product_id |
Sentiment grouping | Insights | Custom buckets on star_rating |
Low-rating deep dive | Insights | Filter star_rating ≤ 2 |
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Best Practices for Long Text (Free-Text Reviews) in Mixpanel
The knowledge sources do not contain enough information to describe a dedicated "long text display" feature in Mixpanel for free-text review content. However, here is what the knowledge sources do explicitly recommend:
⚠️ Key Limitations to Be Aware Of
String properties are truncated at 255 characters. Any review text longer than that will be cut off. [property data types]
Free-text fields may contain unintentional PII (names, emails, etc.) — Mixpanel's privacy guidance explicitly warns: "Don't send unreviewed free-text." [data privacy guide]
✅ Recommended Approach: Pre-Process Before Sending
Rather than sending raw free-text to Mixpanel, the knowledge sources recommend transforming long strings into structured, analysable properties: [import events]
"Parse the JSON and flatten it into properties... this is much more useful in analysis, as you can filter or breakdown by any key."
Applied to review text, this means categorising or tagging the text before sending it to Mixpanel:
Instead of... | Send this... |
review_text: "Delivery was slow and packaging was damaged" | review_theme: ["Delivery", "Packaging"] |
review_text: "The app crashes on checkout" | review_theme: "Bug", review_sentiment: "Negative" |
This way you can filter, break down, and aggregate review themes meaningfully in Mixpanel reports.
Summary
Mixpanel is not designed as a free-text storage or display tool. The best practice is to process your review text externally (e.g. via sentiment analysis or tagging), and send only the structured outputs (categories, sentiment scores, themes) as properties alongside your star_rating. This gives you far richer analytical capability within Mixpanel's reports.
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Setting Up Average Star Rating Over Time in Insights
Follow these steps in the Insights report: [Insights quick start]
Step-by-Step Setup
1. Select your Event
Click "Select Metrics"
Choose Events → select Review Submitted
2. Change the Measurement
Click on the default "Unique Users" measurement
Select Aggregate Property → Average
Choose star_rating as the property
[measurements] 3. Set the Visualization
Choose a Line chart — this is the best chart type for showing a trend over time [Insights charts]
4. Set your Date Range
Choose a meaningful time window (e.g. last 30, 60, or 90 days)
Set the time interval (daily, weekly, or monthly) depending on your review volume
Optional Enhancements
Enhancement | How |
Smooth out spikes | Enable Rolling Average in Analysis Settings [analysis settings] |
Compare to a previous period | Use Compare to Past (e.g. vs. last month) [time period comparison] |
Break down by product/category | Add a Breakdown on product_id or review_category |
Filter to a platform | Add a Filter on platform = iOS / Android |
Tip: Rolling Average
If your review volume is low and daily averages are noisy, the Rolling Average setting is especially useful — it smooths the line by averaging across a sliding window (e.g. 7 days), giving a clearer picture of the true trend. [analysis settings]
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Excluding Periods Without Feedback from the Average
I'm sorry, but the knowledge sources do not explicitly describe a built-in Mixpanel feature that automatically excludes zero-activity periods from an Aggregate Property Average calculation.
What the Knowledge Sources Do Confirm
The Average measurement in Insights calculates the average of a numeric property across all instances of the event. [aggregate property] This means:
If no Review Submitted events occurred on a given day, that day simply won't have a data point — it is not counted as a zero in the average calculation.
The risk is more about sparse data causing visual gaps or misleading spikes in the line chart, rather than zero-days dragging the average down.
Practical Mitigations
Problem | Suggested Approach |
Noisy spikes on low-volume days | Enable Rolling Average to smooth the trend [analysis settings] |
Too many gaps in the line | Switch the time interval from Daily → Weekly or Monthly to aggregate more reviews per data point [date range] |
Outlier periods skewing results | Use Compare to Past to visually identify anomalous periods [time period comparison] |
Recommendation
Switching to a weekly or monthly interval combined with Rolling Average is likely your best option within Mixpanel's current capabilities to produce a stable, meaningful average rating trend that isn't distorted by low-activity periods. For more precise control (e.g. only averaging days with a minimum number of reviews), this logic would need to be handled outside Mixpanel, such as in a data warehouse or BI tool.
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Preventing Zero-Value Days from Affecting the Average
The knowledge sources do not explicitly describe a built-in Mixpanel mechanism to exclude zero-value days from an Aggregate Property Average calculation. However, based on what the knowledge sources do confirm, here is the key clarification:
The Good News: Mixpanel Doesn't Inject Zeros
When using Aggregate Property → Average on star_rating:
Mixpanel only calculates the average across actual instances of the event Review Submitted
Days where no reviews were submitted simply produce no data point — Mixpanel does not insert a 0 value into the average calculation [aggregate property]
So a rating of 0 should not appear unless your tracking code is explicitly sending star_rating = 0 as a property value.
If You Are Seeing Zero Values
This would most likely mean star_rating = 0 is being tracked in your data. In that case, you can exclude it with an inline filter:
Click the … icon next to your Review Submitted event
Add a filter: star_rating is greater than 0 (or more precisely: star_rating is between 1 and 5)
This ensures only valid ratings are included in the average calculation. [filters]
Summary
Scenario | Solution |
Days with no reviews | No action needed — Mixpanel won't count them as 0 |
star_rating = 0 being tracked | Add an inline filter: star_rating > 0 |
Gaps/spikes from low-volume days | Use Rolling Average to smooth the trend [analysis settings] |
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Changing Property Data Type from String to Number (Typecasting)
You can handle this directly in Mixpanel using Typecasting, without needing to change anything in your integration (e.g. Userflow). [typecasting]
How to Typecast a Property in Reports
Open any report (Insights, Funnels, or Retention)
Add your property as a filter or breakdown
Click the overflow menu (⋯) next to the property
Select "Data Type"
Change the type from String → Number
This forces Mixpanel to interpret the string value as a numeric type, enabling calculations like sum, average, median, and percentile. [typecasting]
Important Caveats
Point | Detail |
Report-level only | Typecasting applies only within that specific report view — it does not change how the data is stored |
String must be numeric | The string value must be interpretable as a number (e.g. "4" → 4). If it cannot be parsed, the value becomes undefined [segmentation expressions] |
Not persistent | You need to reapply the typecast each time you build a new report |
For Your Star Rating Use Case
If star_rating is being sent as a string (e.g. "4") by Userflow:
Add star_rating as your breakdown or measurement property
Typecast it to Number
Then select Aggregate → Average to get your average rating trend
For a Permanent Fix
If you want the property to always behave as a number without manually typecasting each time, the best options are:
Fix it at the source — configure Userflow to send star_rating as a numeric value rather than a string, if the integration allows it
Use a Custom Property in Mixpanel to permanently define the transformation [custom properties]
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
