Receive email submissions from your Replit form.
Keep your Replit app focused on the product. Form Plume handles the contact-form backend, including email delivery, storage, spam protection, and integrations.
const response = await fetch(FORM_ENDPOINT, {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});
if (!response.ok) throw new Error("Submission failed");The full guide
A deliberate boundary for Replit Agent.
Preserve the generated product, avoid unnecessary data coupling, and prove the final deployed request.
Replit Agent can build, preview, and publish full applications, and Replit provides managed data and server-side capabilities. A Form Plume endpoint is not a workaround for a missing backend. It is an operational choice when public form submissions should live outside the generated application's data model.
- 1Create your Form Plume accountStart free and give your Replit 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 ReplitReview Agent's files, verify the workspace preview, publish, and test from the deployment URL. Send one test submission from the real Replit app or preview environment and confirm it reaches Form Plume.
Prompt Replit Agent for external delivery
Update the existing contact form to send FormData to this public Form Plume endpoint:
https://api.formplume.com/f/your-public-slug
Keep the current design and framework. Add accessible pending, success, and failure
states; preserve entered values after failure. Do not create a Replit database table,
server route, or email package only for this form. Keep the public endpoint in client
configuration, but never expose Replit Secrets, provider keys, protected-form keys, or
webhook secrets. Show changed files and test both 2xx and non-2xx behavior.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");The endpoint is public. Replit Secrets are appropriate for server-only credentials, but copying one into browser output defeats that protection.
When Replit's native backend is better
Use app data when authenticated users need to read or edit their submissions, or when a server workflow must atomically update other records. Use external delivery when contact operations should remain portable and independent of the app's database and redeploy cycle.
Test the deployed workflow
- Review the diff for unexpected data models, server routes, and packages.
- Run the project checks Agent identifies.
- Verify a successful preview submission in Form Plume.
- Verify an invalid slug produces a useful error without clearing input.
- Publish and repeat from the deployment URL.
Follow the generated framework's guide, such as React or Next.js. Compare Lovable, v0, Bolt, and Base44.
Primary sources
FAQ
Replit questions
before you publish.
One line. Zero backend.
