TYPO3 12 LTS: Build Frontend User Registration with the Built‑in Form Engine
Create a frontend registration form in TYPO3 12 LTS using the built‑in form engine. Learn how to configure a YAML form, assign user groups, send welcome emails, and verify the flow—no custom PHP required.
23 Mar 2026, 11:43 UTC

Why a Built‑in Registration Form?
Many TYPO3 sites still rely on custom PHP extensions or third‑party extensions to handle user sign‑up. That adds maintenance overhead and can break when upgrading the core. TYPO3 12 LTS ships with ext:form, a declarative form engine that can create a full registration flow with minimal code. The engine uses YAML to describe the form, finishers to process data, and integrates directly with the frontend user authentication system.
Core Features You’ll Use
- Declarative YAML – Define fields, validation, and finishers in a single file.
- UserRegistration preset – A ready‑made form that handles user creation, password hashing, and email verification.
- Dynamic group assignment – Assign users to FE groups on the fly using a form finisher.
- Email & redirects – Configure success and error notifications in the same YAML file.
- CSRF protection – Built into the form engine, no extra code required.
Step‑by‑Step: Create a Registration Form
1. Enable the Extension
Ensure ext:form is loaded. In the Extension Manager, the extension should appear as Form and be enabled. No further configuration is needed.
2. Create the YAML File
Place a new file at typo3conf/ext/my_form/Configuration/Framework/Form/Forms/UserRegistration.yaml. The directory structure must exist; create it if necessary.
form:
identifier: user_registration
label: "User Registration"
formType: standard
finishers:
- identifier: UserRegistration
options:
# Store the new user in the fe_users table
storagePid: 123
# Assign the user to the "Registered Users" group (pid 456)
userGroup: 456
# Send a welcome email
mail:
subject: "Welcome to "
template: "EXT:my_form/Resources/Private/Templates/Registration/Welcome.html"
formEngine:
# Optional: enable backend editing of the form
backend:
editing: true
Key points:
storagePidis the page ID where the newfe_usersrecord will be stored.- Use a numeric FE group ID for
userGroupto automatically add the user to that group. - The
mailsection points to an HTML template. Create the template file with a simple message.
3. Add the Form Plugin to a Page
Open the TYPO3 backend, navigate to the page where you want the form, and add a new Form content element. In the Form editor, select the form you just created (identifier: user_registration). The editor will render a preview.
After saving, the form will appear on the frontend. The form automatically includes a CSRF token and validates required fields.
4. Test the Flow
On the frontend, fill out the form and submit. After a successful registration:
- The user record appears in
fe_users(check viaSELECT * FROM fe_users WHERE username='newuser';). - The user is added to the specified FE group.
- They receive the welcome email.
- They can log in using the standard TYPO3 frontend login form.
Limitations & Trade‑offs
- Limited custom logic – While finishers cover most use‑cases, complex business rules (e.g., third‑party API calls) still require a custom PHP finisher.
- Database hooks – If you need to modify the
fe_usersrecord after creation, you’ll have to write a small PHP listener that hooks into theFormEnginefinishers. - Rate limiting & spam protection – The form engine does not provide built‑in rate limiting. Deploy a firewall or TYPO3 extension like
formprotectfor production. - SMTP configuration – Email delivery depends on TYPO3’s mail transport settings. Verify
config.sendmailorconfig.smtpinLocalConfiguration.phpbefore testing.
Practical Checks After Deployment
- Verify CSRF token – Inspect the rendered form; a hidden
__cfrhashfield should be present. - Check group assignment – In the TYPO3 backend, open the new user record and confirm the
usergroupfield contains the expected group ID. - Test email delivery – Use the TYPO3 mail preview or log to confirm the welcome email was sent.
- Login test – After registration, log in with the new credentials to confirm the account is active.
Conclusion & Next Steps
TYPO3 12 LTS’s form engine lets you build a fully functional frontend user registration system without writing PHP. By leveraging the UserRegistration preset and finishers, you keep the core upgrade path clean and maintainable. If you need advanced workflows, extend the finisher chain with a custom PHP finisher or hook into the form engine’s event system.
Ready to try it out? Create your YAML file, drop the form plugin on a page, and watch TYPO3 handle user creation and notifications for you.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.