Feedback
Workflow changes now save reliably on large team projects
What we fixed: On projects with a lot of teams, saving a change to a feedback workflow could fail with an error and refuse to go through. The workflow page was sending far more data than it needed on every save, and past a certain team count that payload got large enough to be rejected before the save could even run. We rebuilt the save so it only sends what it actually needs, which means changes go through cleanly now even on the most team-heavy projects.
See it in action:
- Open a project with a large team structure and go to its feedback workflow settings.
- Edit a workflow step. For example, set a state to allow New with no team change.
- Save the change and it goes through without an error. 🎉
Good to know: This also makes the workflow configuration screen a little snappier, since there's less data moving back and forth behind the scenes.
Feedback recommendations stay hidden when a type isn't accessible
What we fixed: When a feedback type was turned off for everyone, the recommendation lightbox and its link could still appear, and selecting that link sent participants to an access-denied page. We updated the prompt so it checks whether the participant can actually submit to the linked type first. If they can't, the prompt stays hidden and no one lands on a dead end.
See it in action:
- Set a feedback type's access to off for all users.
- As a participant, go through the flow where the recommendation lightbox would normally appear.
- Confirm the lightbox and its link no longer show, so there's no access error. 🎉
Integrations
Removing a macro or listener now clears the External Data fields it created
What we fixed: When you removed a Webhook macro or an External destination listener, the External Data fields it had created were left behind. Those orphaned fields still showed up as view columns and dynamic tags, with no way to clean them up on your own. Removing the macro or listener now also removes the External Data fields it created, so they no longer linger in your views or tag pickers.
See it in action:
- Create a macro with a webhook and data return that produces an External Data field, then run it once so the field appears.
- Remove the macro.
- Open a view or the dynamic tag picker and confirm the leftover field is gone. 🎉
Good to know: This kind of cleanup used to require a request to our team. It happens on its own now.
Failed Jira pushes now show a clear error instead of staying pending
What we fixed: When a push of feedback to Jira failed, the tag stayed on Pending indefinitely, so there was no easy way to tell the push had actually failed. Failed pushes now move into a clear error state that links straight to the integration log, so admins can open it and diagnose what went wrong. Pending still shows while a push is in progress and updates on its own once the Jira issue is created.
See it in action:
- As an admin, open a feedback ticket whose Jira push has failed.
- Notice the tag now shows a clear error state instead of Pending.
- Select the error to open the integration log and diagnose the issue. 🎉
Good to know: This error state is admin-only. If you display Jira tags to participants, they'll only ever see a resolved link, never a pending or errored one.
Data Engine & Custom Reports
External Data filters now include records with no value
What we fixed: The Is not equal to and Does not contain filters on External Data fields were skipping records that had no value for that field. Because an empty field has nothing to compare against, those records were dropped from the results, which in some cases made the filters return nothing at all. We corrected the comparison so an empty value now counts as not equal to and does not contain, and those records show up where you'd expect.
See it in action:
- Open a User or Feedback view in a project with an External Data field that's empty on most records.
- Add a filter on that field using Is not equal to or Does not contain.
- Confirm records with no value for the field now appear in the results. 🎉
A completed phase can now be reopened with one action. The new reopen control on closed phases flips the phase's status back to active and reactivates its surveys and activities, so participants can submit data again. Every submission, response, and attachment from the prior window stays intact. The reopened phase resumes its identity rather than starting over. If you've ever spun up new artifacts to run a follow-up round (and lost the historical thread doing it), this one's for you.
Date edits on past phases let you fix what was wrong without rewriting history. Deactivated phases now show the same date-edit controls as active and pending ones. Correcting a typo, retroactively labeling a phase to match what really happened, or aligning a phase to an external timeline is now a self-service edit. Changing a deactivated phase's dates doesn't reactivate it. The phase stays deactivated unless you also choose to reopen it.
Single-day phases finally just work. Set the start date to match the end date, and the platform accepts it cleanly. The timeline view renders the phase visibly rather than as a zero-width sliver, so single-day events stay recognizable next to multi-day ones. Useful for one-day kickoffs, focused field tests, or pinpoint survey distributions that didn't quite belong in a longer window.
Becomes:
---
---



