Forms
Pre-built contact, quote, booking, and registration forms. The AI drops one in with a single component — no submit handler to write — and every submission lands in your app’s submissions inbox.
Forms on Proyecta are a capability, not something the AI hand-codes. When your app needs a way for visitors to reach you — a contact form, a quote request, an appointment booking, an event sign-up — Proyecta provisions a ready-made form definition and renders it through a template-owned block. Validation, the success state, submission storage, and the owner notification all come for free.
The presets
Section titled “The presets”Every form starts from one of five built-in presets. Describe the form you want and Proyecta picks (and adapts) the right one — you never build fields from scratch.
| Preset | form api id |
What it’s for | Pairs with |
|---|---|---|---|
| Contact | contactForm |
General “get in touch”: name, email, optional phone, message | Business info |
| Quote | quoteForm |
Cotización request: contact data + which service + job details | Services |
| Booking | bookingForm |
Appointment / cita: service, preferred date & time, contact data | Services |
| Registration | registrationForm |
Event or course sign-up (inscripción / RSVP): attendee data + a note | Events |
| Order | orderForm |
Order intake (pedido): what the customer wants, contact data, notes | Menu, catalog |
You can have several forms in one app (e.g. a contact form and a booking form), and the AI can add, rename, or reshape fields on any of them.
How the AI wires it up
Section titled “How the AI wires it up”The AI never hand-builds a form or a submit handler. It drops in the template-owned <FormBlock/> and points it at a form by id or api id:
import { FormBlock } from '@/components/blocks/FormBlock';
// Anywhere on a public page — a contact section, a "request a quote" panel, etc.<FormBlock form="contactForm" />;<FormBlock/> does everything on its own:
- Renders the fields by type — text / email / phone as inputs, long text as a textarea, choices as a dropdown, opt-ins as a checkbox, dates and times as native pickers, and file fields as an “attach file” control.
- Validates in the browser — required fields are checked before anything is sent.
- Validates on the server — if the server rejects a value, the specific error renders inline next to that field (no lost submissions, no silent failures).
- Shows a success state — on submit, the form is replaced by a friendly confirmation (the form’s own confirmation message) with an option to send another response.
- Fails safe — if the form doesn’t exist or has been deactivated, the block renders nothing, so it can never break a public page.
Because the block is template-owned, the AI’s job is just to place it and style the surrounding section — the plumbing behind it is fixed and correct.
File attachments
Section titled “File attachments”Forms can accept an uploaded file (a receipt, a reference photo, a brief). File fields render an “attach file” button, upload the file to storage, and put its public URL into the submission. Limits are enforced for you:
- Images and PDF only, up to 5 MB (large images are downscaled in the browser first).
- The submit button is disabled while a file is uploading, so a submission never goes out half-finished.
Where submissions go
Section titled “Where submissions go”Every submission is stored and shows up in your app’s submissions inbox — part of the admin panel, rendered by the template’s <SubmissionsInbox/>. From there you (the owner) can:
- Browse submissions under New / Read / Archived tabs, with an unread badge on New.
- Open any submission to see the submitted field values, the page it came from, and the date.
- Mark a submission read, move it back to new, or archive it.
- Scope the inbox to a single form, or see every form’s submissions in one list.
The inbox is admin-only — the reader must be signed in with an admin account (enforced on the server).
Getting an email on every submission
Section titled “Getting an email on every submission”Forms can notify you by email whenever someone submits — turn on owner notifications and set the address that should receive them. You get the lead in your inbox without opening the app. The email itself is sent through Proyecta’s email capability, so it works with no extra setup.
Common patterns (let the AI wire it up)
Section titled “Common patterns (let the AI wire it up)”"Add a contact form to the footer with name, email, and message, and email me at hello@mybiz.com whenever someone submits.""Put a 'Request a quote' form on each service page that asks which service they need and the job details.""Add a booking form so clients can request an appointment with a preferred date and time.""Create an event registration form for the workshop page and let attendees attach a PDF.""Show me the submissions inbox and only the ones I haven't read yet."
Related
Section titled “Related”- Content Management — forms live alongside your collections in the same content model.
- Admin Panel — where submissions are reviewed.
- Emails — how owner-notification emails are sent.