Everything fits in one Embed element
The markup, the inline thank-you, and the few lines of fetch all live in a single Code embed. Carrd embeds allow script tags, so visitors never leave your page.
integrations · site builder
Carrd doesn't need a form service bolted on with widgets or Zapier: add one Embed element, paste the HTML below, and your landing page has a working contact form. Submissions land in your project's mailcontact inbox, and a notification pings Discord, Slack, email, or a webhook the moment someone writes.
Carrd is where indie landing pages get shipped, and every landing page needs a way for early users to reach you. mailcontact gives each one its own inbox, fed by the form and by a real email address (yourproject@mailcontact.app) you can put in the footer. No DNS, no mail server, no glue code.
The only prerequisite is on the Carrd side: Embed elements are part of Carrd's Pro plans (Pro Standard and up, at the time of writing). Everything past that is copy-paste: five minutes from blank element to first test message.
the snippet
Point the form at your project's mailcontact endpoint. Submissions land in your project inbox. No server, no API route, no email service to wire up.
<form id="contact" action="https://mailcontact.app/api/forms/your-form-id" method="POST">
<input type="text" name="name" placeholder="Your name" />
<input type="email" name="email" placeholder="you@email.com" required />
<textarea name="message" placeholder="What's on your mind?" required></textarea>
<button type="submit">Send</button>
</form>
<p id="contact-thanks" hidden>Thanks, your message is in.</p>
<script>
var form = document.getElementById("contact");
form.addEventListener("submit", function (e) {
e.preventDefault();
fetch(form.action, { method: "POST", body: new FormData(form) }).then(function () {
form.hidden = true;
document.getElementById("contact-thanks").hidden = false;
});
});
</script>how it works
One inbox per landing page. Name it after the project and you get a form endpoint and a project email address immediately.
In the Carrd editor, add an Embed element, set its type to Code, paste the snippet, and replace your-form-id with your endpoint's id. Publish.
Add a Discord, Slack, email, or webhook channel. Every submission pings you where you already are, no dashboard-checking habit required.
why mailcontact
The markup, the inline thank-you, and the few lines of fetch all live in a single Code embed. Carrd embeds allow script tags, so visitors never leave your page.
Carrd makes it cheap to launch many one-pagers. Give each its own inbox and its own address instead of piling every reply into your personal email. The free plan covers two projects.
Some visitors skip forms and just want an address. Put yourproject@mailcontact.app in your Carrd footer. It works immediately, and lands in the same inbox as the form.
faq
You need a Carrd plan that includes Embed elements: Pro Standard and up, at the time of writing. The mailcontact side is free: 1 form and 1 email address per project, up to 2 projects.
It can, but a native post currently shows a raw JSON response instead of returning to your page. The few lines of fetch keep visitors on your Carrd page and show an inline thank-you. A configurable redirect for native posts is coming with the launch.
Yes, it's your HTML. Add a style tag inside the same Embed element to match your palette and fonts. mailcontact is just an endpoint: it injects no widget, styling, or branding.
The endpoint accepts up to 20 requests per minute per IP, which is far beyond what a contact form on a landing page sees. Higher overall volume comes with the Pro plan, priced at launch.
related
Forms and a real email address, together, with notifications where you live. Launching soon. Be the first to know.