Track survey completions with the rating attached
Every product survey response sends a custom feedback_submitted event carrying the rating, so respondents become a segment you can analyse.
New submission on your product feedback survey
Send a custom GA4 feedback_submitted event with the rating and topic as event parameters
One-directional. A submission triggers the action — nothing is written back into your form.
Survey answers usually sit in one tool and behaviour sits in another, so a question like whether the people who rate you badly use the product differently takes a week and an export to answer.
Product teams close that gap by sending a small event on each completion. The rating and the product it refers to travel with it, which is enough to build an audience of low scorers in Google Analytics and watch where they go next. The written comments stay in formformform, where they are readable.
Setting it up
- 1
Publish the product feedback survey in formformform and keep the rating scales as fixed options. A scale groups cleanly in a report; an opinion typed into a box does not.
- 2
Agree the event name before building. feedback_submitted is a custom name, so it has to be spelled the same way in every Zap you point at Google Analytics.
- 3
Copy the Measurement ID from your web data stream and create a Measurement Protocol API secret.
- 4
Build the Zap: formformform as the trigger app, New Submission as the event, and the published survey form.
- 5
Add the Measurement Protocol action, set the event name to feedback_submitted, and add parameters for rating, topic, tenure and recommend.
- 6
Map "Ease of use" into rating and "Product Name or Model" into topic. Keep the topic list short — one value per product, not per model variant — so the dimension stays under GA4's limits.
- 7
Register rating, topic, tenure and recommend in Admin → Custom definitions as event-scoped dimensions, then create an audience of anyone whose rating sits at the bottom of the scale.
- 8
Complete the survey once yourself, confirm the event and its parameters in Realtime → Event count, then turn the Zap on and leave the audience to fill.
What maps where
Using the Product Feedback Survey as the starting point. These are its real fields — swap in your own and the mapping works the same way.
| Form field | Google Analytics |
|---|---|
| Ease of use | rating event parameter, the score the audience definition is built on |
| Product Name or Model | topic event parameter, registered as an event-scoped custom dimension |
| Value for money | value_rating event parameter, named apart from GA4's own value field so it is never mistaken for money |
| Would you recommend this product to a friend or colleague? | recommend event parameter, recorded as a short yes or no |
| How long have you been using this product? | tenure event parameter, so new and long-standing users can be compared |
| Email Address | Hashed into user_id where you join sessions; the address itself is kept in formformform |
Variations worth knowing
Once rating is a registered dimension, create a GA4 audience for anyone who sent feedback_submitted with a score at the bottom of the scale. It fills from the day it is created, and explorations can then compare how that group moves through the site against everyone else.
If you also field an onboarding survey and a churn survey, keep feedback_submitted as the single event name and separate them with a survey_name parameter. One event, three sources, and the rating dimension keeps working across all of them.
If something isn't arriving
GA4 treats a parameter as a string unless it is sent as a number. If your scale is worded rather than numbered, add a Zapier formatter lookup that maps each label to a digit before the Analytics step, and register it as a custom metric rather than a dimension.
Audiences are not retroactive and need enough qualifying events to populate. Check the parameter value in Realtime first: a mismatch between the audience condition and the exact string the Zap sends, capital letters included, is the usual reason nothing qualifies.
Frequently asked questions
Can I read what someone wrote inside Google Analytics?
No, and it is not what the event is for. Comments stay in formformform, where you can filter, search and export them. Google Analytics receives the scores as parameters so responses can be counted and segmented without personal detail leaving the form.
Does a custom event name need registering anywhere?
The event name does not — GA4 records whatever it receives. The parameters do. Until each one is registered as a custom dimension or metric in Admin, it is collected but never shown in reports, and registration only applies from the day it is made.
Will anything I tag in Google Analytics update the response?
No. Nothing travels back. The submission fires the event and the connection ends there, so audiences, tags and annotations made inside Google Analytics stay there. Keep the response record in formformform as the source of truth.
Related automations
- Count demo requests as a generate_lead conversion
Each demo request fires a GA4 generate_lead event, so completions sit in your reports next to the campaigns that produced them.
- Log support requests with the issue category attached
Each support request sends a form_submit event carrying the issue category, so you can see which topics drive people off the docs.
- Measure newsletter signups as a sign_up event
Every newsletter subscription sends a GA4 sign_up event, so you can build a funnel from landing page visit to completed signup.
- Record webinar registrations as a conversion event
Every webinar registration fires a GA4 sign_up event carrying the session name, so registrations can be attributed campaign by campaign.
- Weigh quote requests by estimated deal size
Each quote request sends a generate_lead event with a value attached, so pages bringing bigger requests stand out from pages bringing many.
- Add webinar registrants to a remarketing list
Every webinar registration joins a Customer Match audience you can run follow-up campaigns to after the session.
Build the form first
The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.
Start free