Progressive profiling and UTM capture
Forms can now hide fields they already have answers for and show different fields based on what a visitor previously submitted. Conditional logic reads hidden fields too, so a value passed in from the page can drive what the form asks.
A first-time visitor and a returning one see different fields, and both forms stay short.
UTM capture
UTM parameters and the referrer are captured and stored on the submission itself. First touch source no longer depends on a hidden field somebody remembered to add, and it survives the gap between a visitor landing and converting.
The fields are documented in the forms API reference.
Background jobs
Slow operations run as jobs now. Exports, imports, and large recalculations are queued and tracked rather than holding a request open, so starting one does not tie up the page.
Improvements
- Campaigns Public endpoints for campaign members, including a batch path and batch contact counts.
- Campaigns Campaign type statuses live on the type object rather than being reassigned per campaign.
- CRM Sync Outbound field changes are recorded in Salesforce sync logs.
- Audiences The audiences view has a sortable created date.
Fixes
- CRM Sync Salesforce task dates are formatted the way Salesforce expects.
- Forms Conditional field visibility is stable across re-renders.
- Email The SES event webhook returns a real HTTP status so retries behave.
- Audiences Legacy operand statements are normalized rather than reported as validation errors.