🎉 VaultMail for phpBB is finally here | Get it now →
Premium phpBB Extension

Give your forums
a structured
voice.

Replace the freeform new-topic editor with purpose-built, field-driven forms. Admins design them, users fill them in, phpBB posts them — clean every time.

Paid phpBB 3.3.x PHP 7.2+ Requires VaultBB Core
Coming Soon View Docs →
forum.example.com/postform?f=12
Bug Report
Fill in all fields accurately so we can reproduce your issue.
Bug Title *
Login page throws 500 on submit
Affected Version *
— Select a version —
Severity *
Low
High — site breaking
Critical
Steps to Reproduce
1. Go to /login 2. Enter credentials 3. Click submit
Options
Notify me
Signature
Post Topic
Cancel
* required
9
Field types
text → date
Multi-Form
Per-forum assignments
user picks from list
BBCode Out
Output templates
{field_key} placeholders
0
Extra queries
cache-backed forum map
How it works

Admin designs. User fills.
phpBB posts.

Six clean steps from first setup to a perfectly structured topic — and not one of them touches replies or edits.

01 📋

Create a Form

ACP → VaultBB → Post Forms → Forms. Name it, write a description, define subject and output templates.

02 🔧

Add Fields

Build field by field from 9 types. Set labels, placeholders, validation rules, and display order.

03 📌

Assign to Forums

Link your form to one or more forums by Forum ID. Multiple forms per forum are fully supported.

04 🔀

User is Redirected

“Post New Topic” in an assigned forum lands the user on your custom form — not the standard editor.

05

Form is Validated

Required fields enforced. Lengths checked. Formats verified — URL, email, number, date. Errors shown inline.

06 🚀

Topic Created Natively

Field values assemble into BBCode via your template, then phpBB’s own submit_post() creates the topic.

Field types

Nine ways to collect
exactly what you need.

Every field supports labels, descriptions, placeholders, default values, sort order — and maps to a {field_key} placeholder in your output template.

✏️

Text

Single-line input with min/max length, placeholder and default value. For titles, versions, names, identifiers.

type: text
📝

Textarea

Multi-line text area with the same validation as text. For descriptions, reproduction steps, long-form answers.

type: textarea
🔽

Dropdown

Select from a predefined list. Options entered one per line in ACP. Outputs the selected value to the template.

type: dropdown

Radio

Radio button group built from your options list. One visible selection — ideal for severity, category, priority.

type: radio
☑️

Checkbox

Single on/off toggle. Outputs “yes” or “no” in the assembled post body. For confirmations and boolean flags.

type: checkbox
🔗

URL

Text input with server-side URL format validation. Accepts https:// and http://. Invalid entries clearly rejected.

type: url
📧

Email

Email address input with format validation. Useful when a contact or coordination address needs capturing.

type: email
🔢

Number

Numeric input validated on submission. For counts, order numbers, port numbers, quantities.

type: number
📅

Date

Native date picker stored and validated as YYYY-MM-DD. Perfect for deadlines, events, schedules.

type: date
Output templates

You write the template.
It fills the blanks.

Full control over both the post body and the topic subject via {field_key} placeholders — wrapped in any BBCode you like.

output_template — Bug Report

[Bug] {title} — v{version}


[b]Title:[/b] {title}
[b]Version:[/b] {version}
[b]Severity:[/b] {severity}

[b]Description:[/b]
{description}

[b]Steps to Reproduce:[/b]
[list]
{steps}
[/list]

[b]Repro URL:[/b] {repro_url}
🔑
{field_key} placeholders
Every field gets a key. Use {that_key} anywhere in the output or subject template and it will be swapped with the user’s submitted value on post.
📌
Subject line templates
Define the topic title with the same {field_key} syntax — e.g. [Bug] {title} — v{version}. Leave blank and the first required text field value is used automatically.
Full BBCode freedom
Wrap placeholders in any BBCode — [b], [list], [quote], [url]. The assembled result is standard phpBB post content processed normally.
🔁
Auto-format fallback
Leave the template blank and Post Forms outputs each field as [b]Label:[/b] Value on its own line — clean and readable with zero configuration.
Multi-form support

One forum. Multiple forms.
User’s choice.

Assign as many forms as you need to a single forum. When a user starts a new topic, they see a clean selection page — or land directly on the form if only one is active.

1
Assign as many forms as needed
From ACP → Assign to Forums, link any number of forms to a forum. Sort order controls how they appear to the user.
2
Single form? Direct redirect.
When only one active form is assigned, users skip the picker entirely. The selection page only appears with two or more active forms.
3
Disable without unassigning
Toggling a form’s Enabled switch off removes it from user-facing views instantly. The assignment is preserved — toggle it back on when ready.
4
Replies and edits? Untouched.
The redirect fires on new topic creation only. Replies, quote-replies, and post edits always use the standard phpBB editor.
Validation

Server-side. Always.
No workarounds.

Every field validated on submission regardless of client-side state. Errors surface inline per-field and as a top-level summary banner.

Please correct the following errors:
Some required fields are missing or contain invalid values.
Bug Title *
 
⚠ This field is required.
Reproduction URL
not-a-valid-url
⚠ Please enter a valid URL (e.g. https://example.com).
Steps to Reproduce
1. Open settings…
🔒
Required / optional per field
Mark any field as required. The form will not submit until every required field has a valid, non-empty value.
📏
Min / max character length
Set character limits on text, textarea, url, and email fields. A hint is shown below the input. Set to 0 to disable either limit independently.
🎯
Format checks
URL, email, number, and date fields each carry a dedicated server-side format validator with clear, localised error messages.
📍
Inline per-field errors
Each error is attached to the specific field that failed — users know exactly what to fix without scanning the entire form.
Developer reference

Injectable service. Clean API.
Full extensibility.

The central vaultbb.postforms.manager service is injectable into any Symfony DI-aware service. Build on top of forms, fields, and assignments programmatically.

form_manager — public API
MethodReturnsDescription
get_forms_for_forum($forum_id)arrayActive forms for a forum — cached
forum_has_forms($forum_id)boolFast cached presence check
create_form($data)intCreates a form, returns its ID
create_field($form_id, $data)intAdds a field to a form
validate_submission($fields, $values)arrayReturns error keys by field_key
assemble_post_body($form, $fields, $values)stringRenders the BBCode post body
assemble_subject($form, $fields, $values)stringRenders the topic subject
assign_forum($forum_id, $form_id, $sort)voidAdds a forum↔form assignment
phpBB Events
vaultbb.postforms.form_submitted
Fires after a validated submission — the topic has already been created via submit_post(). React to new structured posts from your own extension.
form_idforum_iduser_idpost_bodysubject
core.posting_modify_template_vars
Post Forms listens here to detect new-topic mode in assigned forums and fire the redirect — no core hacks, no file edits.
native phpBBhook-based
Cache-backed forum map — zero query overhead
The forum↔form lookup is cached under _vaultbb_postforms_forum_map with a 30-minute TTL. Normal page loads add exactly zero extra queries. Any write operation invalidates the cache automatically.
Installation

Standard install.
Up in minutes.

No Composer, no shell access required. Standard phpBB extension install — but make sure VaultBB Core is running first.

VaultBB Core is required
Post Forms depends on VaultBB Core for its admin UI integration, registry, and license layer. Install and enable Core first — it’s free.
Get Core — Free →
1
Install and enable VaultBB Core first if you haven’t already.
2
Download and unzip the Post Forms package.
3
Upload the vaultbb/postforms folder to ext/vaultbb/postforms/ on your phpBB board.
4
Go to ACP → Customise → Manage Extensions, find Post Forms, click Enable. Migrations run automatically.
5
Open ACP → VaultBB → Post Forms, create your first form, add fields, and assign it to a forum.

Requirements

phpBB3.3.x
PHP7.2+
VaultBB Core1.0.0 or higher
LicenseProprietary

Package

Composer namevaultbb/postforms
Install pathext/vaultbb/postforms/
Version1.0.0
Release Notes

What’s changed.

Compact view of the latest Post Forms releases.

dev.0.1 Current Jan 20, 2026
  • AddedInitial Developement

Structured topics.
Happier moderators.

Stop reading half-formed posts. Give your community the forms they need to say it right the first time.

Coming Soon Get Support →