What is Formulir
Formulir is Sawala Cloud's form builder and submission inbox — create forms, embed them anywhere, and collect responses without writing a backend.
TODO: translate to Indonesian. English source is authoritative; render it into Indonesian below.
Formulir is Sawala Cloud's form builder and submission inbox. You define a form's fields and settings in the dashboard, embed the form on your site or app, and every response lands in your dashboard inbox. There is no server to run — Formulir stores submissions, handles file uploads, and protects against spam for you.
When to choose Formulir
- You need a contact, signup, or lead-capture form on a static site, a CMS (WordPress, Squarespace), or a React app — without standing up your own backend.
- You want submissions collected in one inbox, with file uploads and spam protection handled for you.
- You want to embed the same form in more than one place and manage it from a single dashboard.
Core concepts
- Form — a name, a unique slug, an ordered list of fields, and settings (visibility, success message or redirect, spam protection).
- Field — one input, identified by its
name. Formulir uses the shared Sawala field-type set:text,url,richtext,markdown,number,boolean,date,relation,media,blocks,component,json,select,multiselect, andrepeater. Long text usesrichtextormarkdown(rendered as a textarea); file upload usesmedia. - Submission — one completed response. Stored with a timestamp, the submitter's IP address, and user agent.
- Embed — how the form renders on your site: a hosted iframe, the
@sawala/formulir-reactcomponent, or a script tag.
Three ways to embed
| Mode | Best for | What you ship |
|---|---|---|
| Iframe | Static sites, WordPress, any HTML host | One <iframe> tag |
| React component | React 18+ apps that want the form in their own DOM | @sawala/formulir-react |
| Script tag | Non-React hosts that want native DOM rendering | formulir.js + a mount <div> |
See how to embed a form for each option.
File uploads
media fields accept file uploads. From your side it is a single step — you submit the file with the rest of the form and Formulir stores it for you. Uploaded files are managed by Berkasna under the hood.
Spam protection
Formulir uses Cloudflare Turnstile. On the Sawala-hosted iframe it is zero-config (Sawala-managed). On the API and React paths it is bring-your-own: paste your own Turnstile sitekey and secret in project settings, then toggle protection per form. See how to embed a form.
API access
Formulir's public API needs a project-scoped publishable key (pk_live_…). See API keys and access and the API reference.
Continue to the first form tutorial.