Web Forms
A Web Form exposes any DocType as a public-facing form on your portal. Use for contact forms, job applications, customer signups, support tickets — anywhere external users need to submit data.
Creating one
Web Form → New:
| Field | Notes |
|---|---|
| Title | The form's heading |
| Route | URL path (e.g., contact-us → /contact-us) |
| DocType | Which DocType receives the submission (e.g., Lead, Contact, Job Applicant) |
| Login Required | Toggle — anonymous submission vs requires login |
| Apply Document Permissions | If logged-in: respect normal DocType permissions on the user |
| Allow Multiple Responses | Same logged-in user can submit more than once |
| Allow Edit | Logged-in users can edit their own previous submissions |
Picking fields
Web Form Fields child table — add each field from the target DocType you want exposed. For each:
- Fieldname (matches DocType field)
- Fieldtype (auto-detected; can override)
- Label (what users see; defaults to DocType label)
- Mandatory (required to submit)
- Read Only (visible but not editable — for prefilled values)
- Hidden (kept out of the form; submitted as default)
Only the fields you add show on the form. Other DocType fields take their default values on submit.
Public vs portal
- Login Required = No — anyone can submit. URL works for anonymous visitors. Use for marketing forms (Contact, Newsletter signup).
- Login Required = Yes — only authenticated users (Website User type counts). Use for customer-portal forms (Support Ticket, Order Comment).
After-submit behaviour
Success Message — the HTML / text shown after successful submit. Success URL — alternatively, redirect to another page (e.g., a thank-you landing page).
Multi-step forms
Toggle Is Multi Step to break a long form into pages. Group fields with Page Break field type. Users navigate Previous / Next; the form only submits at the end.
Embedding on another page
The Web Form URL is a normal portal page — link to it from your marketing site, embed in an <iframe>, or link from email.
Spam / abuse
- CAPTCHA — toggle in Web Form Settings; uses reCAPTCHA (configure key in System Settings)
- Rate limit — Frappe applies per-IP throttling on anonymous submissions
- Field validation — built-in Email, URL, Phone validators are picked up automatically
Examples
- Contact form → DocType: Lead, fields: Name + Email + Phone + Message, anonymous
- Job application → DocType: Job Applicant, fields: CV + cover letter + position picker, anonymous
- Customer support ticket → DocType: HD Ticket, login required, prefills Customer from session
Related
- For more complex landing pages (with marketing layout), use Web Pages or the Builder app
- For sending forms via Email, see Email Template