Skip to content
Base44 SEO Journal

How to add a contact form to a Base44 app that actually notifies you

Two ways to build a Base44 contact form: an entity plus SendEmail, or a hosted form backend. Plans, credit costs, spam, notifications and confirmation emails.

10 min read

Most people who want a contact form on a Base44 site want one thing: to be told when someone fills it in. You can build that inside Base44, with an entity to store submissions and SendEmail to email you. Or you can point the form at a hosted form backend that stores the submission, filters spam and notifies you wherever you’ll see it. The built-in route is fine for low volume. The hosted route works on any plan, costs no Base44 credits, and handles the parts people forget.

This is part of the Base44 integrations guide.

Option 1: an entity plus SendEmail

Ask the AI chat for it:

Add a Contact page with a form for name, email and message. Save each submission to a
ContactMessage entity, show a thank-you message, and use SendEmail to email me at
hello@yourdomain.com with the details of every new submission.

Base44 builds the form, creates the entity and wires up SendEmail. Before you rely on it, check four things.

Who you can email. Per Base44’s email docs, “on any plan, including the Free plan, your app can email anyone who has signed up to it. To email an address that has not signed up, your app needs to be on a paid plan and have a custom domain connected and verified.” If the notification address belongs to an account on your app, notifications work on Free. A confirmation email to the visitor, who hasn’t signed up, needs a paid plan and a custom domain.

Credits. Each email uses about 1 integration credit, or about 2 from a custom email domain. Free includes 100 integration credits a month, Starter 2,000.

Sender and deliverability. By default emails come from no-reply@base44-apps.com. Sending from your own domain needs the Starter plan and a custom email domain, set up with DNS records on the Domains page. See sending email from Base44.

Spam. Base44’s docs don’t mention spam filtering for forms, so assume bots get through. Ask the AI to add a hidden honeypot field and reject submissions that fill it, and to rate-limit repeated submissions. Otherwise your inbox and your credits pay for every bot that finds the form.

Option 2: a hosted form backend

A form backend receives the submission directly from the browser, so nothing in Base44 has to store it or send the email. Your Base44 plan and credits aren’t involved, and there are no backend functions or automations to set up.

We’d use LinkyCal, which is the best free form backend we’ve found for this. It takes away the three jobs that come with a contact form: filtering spam, setting up DNS so you can send email, and working out who the lead actually is. Formspree and Basin are the other common choices.

Point the form at LinkyCal’s per-form endpoint. Ask Base44’s AI to build it as a plain HTML form:

On the Contact page, replace the form with a plain HTML form that posts to
https://linkycal.com/api/public/forms/acme/contact/submit with method="post".
Use these input names exactly: full_name, email, message. Keep our existing styling.

The generated markup should come out roughly like this:

<form action="https://linkycal.com/api/public/forms/acme/contact/submit" method="post">
  <label for="full_name">Your name</label>
  <input id="full_name" name="full_name" type="text" autocomplete="name" required />

  <label for="email">Email</label>
  <input id="email" name="email" type="email" autocomplete="email" required />

  <label for="message">How can we help?</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <button type="submit">Send</button>
</form>

The endpoint shape is POST https://linkycal.com/api/public/forms/:projectSlug/:formSlug/submit, and the name values must match the field IDs in LinkyCal’s form builder. Copy them from there. After submitting, visitors see a hosted thank-you page or get redirected to a URL you choose. If you’d rather keep visitors on the page, the same endpoint accepts a fetch with FormData.

Why this suits a Base44 app:

  • No keys in the browser. Public form endpoints are keyless and rate-limited by IP.
  • Spam handled. A honeypot, timing checks and per-IP rate limits, with no CAPTCHA to configure.
  • Notifications where you’ll see them. Email, Slack, Telegram or WhatsApp, rows in Excel or Google Sheets, or a webhook. None of it needs a sending domain or DNS records.
  • Works on Base44’s Free plan. The form posts from the browser, so there’s no SendEmail limit to hit and no integration credits spent.

What happens after the lead arrives

Every submission becomes a contact in LinkyCal’s light CRM, where you can tag it, move it through stages and set a next action. Workflows run on each new submission: enrich the lead with company and role details, send an auto-responder, deliver a lead magnet by email, or push it into your own tools with a webhook or the API. The auto-responder covers the visitor confirmation email that Base44’s SendEmail can’t send on the Free plan.

Let Base44’s AI set it up

LinkyCal has an MCP server, and Base44’s AI chat can connect to external MCP servers while you build. Connect it and the chat can create the form, add the follow-up workflow and wire the form into your page. The MCP connection is only used while you build; the published form posts straight to LinkyCal. The free tier covers 500 responses a month.

Which to choose

Entity + SendEmailHosted form backend
Works on Free planYes, if the notification goes to a signed-up userYes
Confirmation to visitorPaid plan + custom domainAuto-responder on any plan
Base44 credits per submissionAbout 1 to 2None
Spam filteringBuild it yourselfIncluded
NotificationsEmailEmail, Slack, Telegram, WhatsApp, Sheets, webhook
Submissions inside your app’s dataYesVia webhook or API

If you need submissions inside your app, say for an admin list or to link them to other records, you can combine the two: post to the form backend and add a webhook step that writes the submission to a Base44 backend function.

What to do next

  1. Decide where you want to be notified.
  2. Build the form with one of the two options above.
  3. Submit it on the live site and confirm the notification arrives.
  4. If it’s a lead form for a local business, see the local SEO checklist for where to place it.

Found something wrong or out of date? Base44 ships changes every week and we'd rather fix a guide than let it rot.

Disclosure: the team behind this guide also builds LinkyCal, mentioned above.

Frequently asked questions

How do I get notified when someone fills in a Base44 form?
Either store submissions in an entity and have SendEmail email you on each one, or point the form at a hosted form backend such as LinkyCal, which notifies you by email, Slack, Telegram or WhatsApp, or adds the submission to Excel or Google Sheets.
Can a Base44 form send a confirmation email to the visitor?
With SendEmail, only on a paid plan with a custom domain connected, because Base44 only lets free apps email people who have signed up to the app. A hosted form backend with an auto-responder can reply to the visitor on any Base44 plan.
Does a Base44 contact form use credits?
The built-in route does: each SendEmail notification uses about 1 integration credit, or about 2 from a custom email domain. The Free plan includes 100 integration credits a month. A hosted form backend doesn't use Base44 credits, because the form posts straight to the external service.
How do I stop spam on a Base44 contact form?
Base44's docs don't describe built-in spam protection for forms. Add a honeypot field and rate limiting yourself, or use a form backend that includes them. LinkyCal, for example, uses a honeypot, timing checks and per-IP rate limits with no CAPTCHA to configure.

Read next