---
title: "Web Forms"
space: "Frappe Framework"
url: "https://www.prilk.com/docs/frappe-framework/web-form"
updated: "2026-05-14"
---

## 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](/docs/frappe-ecosystem/customization) or the Builder app
- For sending forms via Email, see [Email Template](/docs/frappe-ecosystem/email-template)
