Send Base44 form submissions straight to your inbox.
Use one endpoint to handle contact requests outside your app data. Form Plume manages notifications, storage, spam protection, webhooks, and integrations.
// Choose one operational owner for the submission.
const response = await fetch(FORM_PLUME_ENDPOINT, {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});
if (!response.ok) throw new Error("Submission failed");The full guide
One form, one operational owner.
Choose native app workflows or external delivery deliberately, keep secrets private, and avoid duplicate records and notifications.
Base44 already provides application data, authentication, backend functions, SendEmail, connectors, and custom integrations described with OpenAPI. It can build a working contact workflow natively. Form Plume is useful when contact operations need an external inbox, spam controls, notifications, signed webhooks, or downstream delivery without making submissions another Base44 entity.
- 1Create your Form Plume accountStart free and give your Base44 form a hosted endpoint for email, submissions, spam filtering, uploads, integrations, and webhooks.Start free
- 2Create the form and copy the endpointCopy the endpoint URL from Form Plume. It looks like
https://api.formplume.com/f/your-slug - 3Connect it inside Base44Review the generated integration, test from preview, publish, and verify the final app origin and downstream delivery. Send one test submission from the real Base44 app or preview environment and confirm it reaches Form Plume.
Ask for direct public submission
Keep the existing Base44 contact form and visual design. On submit, send FormData to:
https://api.formplume.com/f/your-public-slug
Add accessible pending, success, and error feedback. Reset only after a successful
response and retain values after failure. Do not create a Base44 entity, SendEmail
automation, backend function, connector, or custom integration solely for this form.
The Form Plume endpoint is public. Never place Base44 credentials, protected-form
keys, integration tokens, or webhook signing secrets in client code. Show what changed
and how to verify both preview and the published app.const response = await fetch("https://api.formplume.com/f/your-public-slug", {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});
if (!response.ok) throw new Error("Submission failed");This is intentionally not a claim that Base44 lacks email or integrations. It has both. The point is to choose one operational owner for contact submissions rather than duplicating storage and notifications across two systems.
Native Base44 versus Form Plume
Use a Base44 entity when the submission must appear in the app, relate to users, participate in permissions, or drive native automations. Use Base44 SendEmail when email is part of that application workflow. Use backend functions or custom OpenAPI integrations when private credentials or custom server transformations are necessary.
Use Form Plume directly when the form is public intake and you want dedicated storage, email routing, spam handling, integrations, and signed webhooks independent of the app's schema.
Preview and published checks
- Inspect the generated behavior and confirm it did not also create an entity or
SendEmailcall. - Verify each field has a stable submitted name.
- Submit in preview and check the Form Plume record and notification.
- Test an invalid slug and confirm input is retained.
- Publish, retest from the final hostname, and exercise any webhook or connector destination once.
Compare the other full-stack builders: Lovable, v0, Bolt, and Replit. For a code-owned client, see the React guide.
Primary sources
FAQ
Base44 questions
before you connect it.
One line. Zero backend.
