review-forms and review_forms names for compatibility.
Common use cases include post-purchase ratings, NPS-style surveys, comment threads, and custom feedback flows.
To create and manage service forms in the dashboard, see the Create and manage service forms guide. To integrate programmatically, see Submit reviews.
Form types vs field types
Form type describes the overall intent of the review form. It is metadata for your team and does not change API validation by itself:
Field types define how each answer is validated when a review is submitted. Answers are always keyed by the field
name (not an internal id).
Field images
Each field can include up to 5 images (for example, icons for a score scale). Images are stored as public URLs from your account multimedia library, plus an optionalalt text for accessibility.
Lifecycle and visibility
Deleting a review form in the dashboard performs a soft delete and sets the form to inactive.
Ticket automation
Service forms can open a support ticket from the responses they receive. Enable Ticket automation in the form settings, pick the pipeline and priority the generated tickets should use, and decide which responses deserve a ticket.
The ticket title comes from the form name and the description is a recap of the submitted answers. The response is linked to the ticket, so agents can open the original submission from the ticket detail.
Conditions
Conditions use the same rule set as campaigns, rewards, and journeys:conditions is a list of groups, every condition inside a group must match (AND), and any group matching is enough to open the ticket (OR).
Response answer is only offered when the form has at least one field, and the operators follow the type of the answer you pick:
Answers that arrive empty never match, so a missing field cannot open a ticket on its own. On multi-select answers,
equal to matches when the value is one of the selected options. Text comparisons ignore letter casing.
201.
New tickets are assigned to the available agent with the lightest open load, respecting each agent’s maximum open tickets. Accounts without a configured agent roster get unassigned tickets.
Events and analytics
Every successful review submission creates a resolvedREVIEW customer event linked to the review. You can use source, platform, brand_id, store_id, and channel_id on the review for attribution, similar to other storefront activity.
Anonymous reviews are supported: omit customer_id in the API request. The review row stores customer_id as null, while the linked event uses the review id as the customer identifier for tracking.
Review analysis operations
Masivo can process submitted reviews with an internal AI cron route and store validated review analysis in thereviews.review_analysis JSON column. The job is not trigger-based. It is designed to be scheduled externally, typically every five minutes, and processes up to 50 reviews per run using a Redis cursor.
The processor:
- reads new review rows from
reviews - analyzes answer content, including score-only reviews
- validates strict JSON output against the configured analysis catalog
- stores
pending,processed, orfailedstatus per review - updates the source review row, including
updated_at, so review backfills can sync AI changes - records AI validation errors for debugging
failed, and those stuck in pending because a previous run was interrupted. Each attempt increases retryCount, and a review stops being picked up after 3 of them, so a permanently broken response cannot block the queue. A successful analysis resets retryCount to 0. Because ticket automation runs right after the analysis, recovering a failed analysis also recovers the ticket that was waiting for it.
The operational route is:
POST /api/cron/analytics/review-analysis
It requires the standard x-masivo-cron-auth header. Passing force: true resets the Redis cursor so processing starts from the beginning again.
Permissions
Access to the Service forms section in the dashboard is controlled by thereview_forms role resource:
- read — view service forms and reviews
- write — create and edit service forms
- delete — delete service forms