A lightweight form builder — create and manage dynamic forms directly from the Umbraco backoffice with no code required for everyday use. Render any form on the front-end with a single line, and extend it with custom field types without touching the package.
Works with Umbraco 16, 17 and 18 (multi-targeted net9.0 / net10.0).
Database-agnostic: runs on SQL Server, SQLite and PostgreSQL (v2.0.0+).
- Dedicated uTPro Form section with a left Forms tree (like Dictionary)
- Visual builder: groups → 12-column layout → fields, with live settings
- Copy / paste groups, columns and fields across forms (browser
localStorage) - Import / Export form definitions as JSON (layout only — no entries)
- 19 built-in field types + a 2-step custom field type extension point
- Client-side validation with multi-language (Umbraco Dictionary) messages
- Sensitive fields encrypted at rest (ASP.NET Data Protection), masked in the UI
- Entry storage with search, date-range filters, paging and CSV export
- Form Picker property editor (+ ready-made data type) to choose a form from content, with server-side publish validation
- Public REST APIs for submit / render / entries (opt-in per form)
- Role-aware UI driven by Umbraco user groups
Install:
dotnet add package uTPro.Feature.SimpleFormBuilderOn first run it creates its tables and seeds a sample Contact Us form. Grant the uTPro Form section to your user group, build a form, then render it anywhere:
@await Component.InvokeAsync("uTProSimpleForm", new { alias = "contact-us" })| Umbraco | .NET | Target |
|---|---|---|
| 16 | .NET 9 | net9.0 |
| 17 & 18 | .NET 10 | net10.0 |
Runs on SQL Server, SQLite and PostgreSQL. All data access uses NPoco strongly-typed queries and provider-agnostic migrations (large JSON columns use SpecialDbTypes.NVARCHARMAX, which maps to nvarchar(max) on SQL Server and text on SQLite / PostgreSQL), so table/column identifiers and types are handled correctly on every database.
For PostgreSQL, install the community provider Our.Umbraco.PostgreSql, enable it in Program.cs with .AddUmbracoPostgreSqlSupport(), and set provider name Npgsql2 in the connection string. The form builder then runs with full functionality — verified end-to-end (unattended install, migration, seed, form submit, and encrypted sensitive fields):
| Guide | What's inside |
|---|---|
| Getting Started | Install, compatibility, backoffice layout, building a form, copy/paste |
| Rendering a Form | ViewComponent, parameters, template resolution, overriding views, JS hooks |
| Form Picker | Choose a form from content, Allowed-forms setting, publish validation |
| Field Types | Built-in types, custom field types, FieldHelper, Star Rating example |
| Public APIs & Import/Export | submit / render / entries endpoints, JSON import/export |
| Security & Permissions | Roles, sensitive-data encryption (encode/decode), test accounts |
| Reference | Project structure, static assets, database tables, migrations |
MIT © T4VN. Issues and contributions welcome on the GitHub repository.

