Skip to main content
New:Build with AI agents

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.

Free foreverNo credit cardExternal delivery for the published app
contact-form.js
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.

  1. 1
    Create your Form Plume accountStart free and give your Replit form a hosted endpoint for email, submissions, spam filtering, uploads, integrations, and webhooks.Start free
  2. 2
    Create the form and copy the endpointCopy the endpoint URL from Form Plume. It looks like https://api.formplume.com/f/your-slug
  3. 3
    Connect 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.

Workspace preview and the published deployment have different URLs and lifecycles. Verify allowed domains, redirects, and the real submission from the published app.

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

  1. Review the diff for unexpected data models, server routes, and packages.
  2. Run the project checks Agent identifies.
  3. Verify a successful preview submission in Form Plume.
  4. Verify an invalid slug produces a useful error without clearing input.
  5. 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.

Yes. Replit can build and publish full apps with data and server-side logic. A Form Plume endpoint keeps standard public intake outside the app's data model.

One line. Zero backend.

The form backend you don’t have to build.

Free foreverNo credit cardSet up in under a minute