Integrations
Forms
Forms in Pala are frontend-only by default — to actually collect submissions, you’ll need to connect them to a backend endpoint. You can use any backend or third-party form service that accepts POST requests. Once connected, all editor-added fields will submit directly to that endpoint.
Connecting to a form service
Some popular options:
- Formspree — Free for unlimited forms and 50 total submissions/month
- Basin — Free for 1 form and 50 submissions/month
- Getform — Simple setup, great for small sites
To connect, just set your form’s action attribute to your service’s endpoint and use method="POST".
Pala will handle rendering and field generation automatically from the editor schema (assuming it’s set up).
<form action="https://formspree.io/f/abcd1234" method="POST">
Submitting with JavaScript (no page reload)
If you’d rather keep users on the same page and show loading or success messages, you can intercept the form submission and handle it in JavaScript. This allows you to display states like “Sending…”, “Thank you!”, or error messages without reloading.
HTML:
<form action={form.endpoint} onsubmit={handleSubmit}>
JS:
async function handleSubmit(e) {
const form_data = new FormData(e.target);
fetch(e.target.action, {
method: "POST",
body: form_data,
headers: { Accept: "application/json" }
})
// and so on
Lowest-friction option: open email client
If you don’t need backend storage or good UX, you can also have the form pre-fill an email draft in the visitor’s mail client. This is useful for prototypes, unimportant landing pages, or client sites for cheap clients.
<form action="mailto:hello@example.com" enctype="text/plain">
When submitted, this opens the visitor’s default email app with the data pre-filled — no external service required.
Best practice
For production, use a reliable backend form provider or your own endpoint. Use the JS approach for interactive UX, and the mailto method only for prototypes.
Analytics
[coming soon]