splitforms.com

Contact form · Google Sites

Contact form for Google Sites, no Google Form.

Updated · plan facts checked against /pricing

Paste one HTML snippet into an Embed block and get a styled contact form with email alerts and spam filtering — no Google Form, no Apps Script.

  • 500 free total
  • No Apps Script
  • 3-min setup
A custom contact form embedded in a Google Site, submitting to the splitforms backend

No Apps Script

No Google Form, no Apps Script, no add-on. Your Google Sites form posts straight to one hosted endpoint.

Spam filtered

Honeypot, a form_loaded_at time-trap, IP rate limiting, and server-side heuristics — plus optional reCAPTCHA v2.

Email + dashboard

Every submission is emailed to you and saved to a searchable dashboard the moment it lands — free on every plan.

Copy-paste ready

Google Sites contact form HTML, ready to paste.

Drop this into Insert → Embed → Embed code, then replace YOUR_ACCESS_KEY with the key from your dashboard. It's self-contained — Google Sites sandboxes embeds, so the snippet carries its own CSS and a fetch()-based submit that shows an in-place thanks message instead of a broken redirect.

Get free access key
google-sites-embed.html
<style>
  .sf-form { font-family: Arial, sans-serif; max-width: 480px; margin: 0 auto; color: #1a1a1a; }
  .sf-form label { display: block; margin: 14px 0 6px; font-size: 14px; font-weight: 600; }
  .sf-form input, .sf-form textarea {
    width: 100%; box-sizing: border-box; padding: 10px 12px;
    border: 1px solid #d0d0d0; border-radius: 8px; font: inherit; font-size: 15px;
  }
  .sf-form button {
    margin-top: 16px; padding: 12px 22px; background: #1a73e8; /* your brand color */
    color: #fff; border: 0; border-radius: 8px; font-weight: 700; font-size: 15px; cursor: pointer;
  }
  .sf-thanks { display: none; text-align: center; padding: 40px 12px; font-family: Arial, sans-serif; }
</style>

<form id="sf-contact" class="sf-form" action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="hidden" name="subject" value="New message from your Google Site">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <label>Name</label>
  <input type="text" name="name" required>

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

  <label>Message</label>
  <textarea name="message" rows="4" required></textarea>

  <!-- Honeypot: must stay empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

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

<div id="sf-thanks" class="sf-thanks">
  <p>Thanks — your message is in. We'll get back to you soon.</p>
</div>

<script>
  document.getElementById('form_loaded_at').value = Date.now();
  document.getElementById('sf-contact').addEventListener('submit', async function (e) {
    e.preventDefault();
    var form = e.target;
    var btn = form.querySelector('button');
    btn.disabled = true;
    btn.textContent = 'Sending...';
    try {
      var res = await fetch(form.action, { method: 'POST', body: new FormData(form) });
      var data = await res.json();
      if (data.success) {
        form.style.display = 'none';
        document.getElementById('sf-thanks').style.display = 'block';
      } else {
        btn.disabled = false;
        btn.textContent = 'Send message';
      }
    } catch (err) {
      btn.disabled = false;
      btn.textContent = 'Send message';
    }
  });
</script>

Setup

Add a contact form to Google Sites in 3 steps.

No Apps Script, no Workspace add-on. Copy the snippet, paste it into an Embed block, and publish — the whole thing takes about three minutes. Test on the published URL, not the editor preview.

Copy the form HTML

Create a free splitforms account at splitforms.com/login, copy your access key from the dashboard, and paste it into the form snippet below in place of YOUR_ACCESS_KEY. The Free plan includes 500 submissions total — no credit card.

Paste it into an Embed block

In the Google Sites editor, click Insert in the right-hand panel, choose Embed, switch to the Embed code tab, paste the snippet, then click Next and Insert. Drag the handles to size the box — it doesn't auto-grow.

Publish and get email notifications

Click Publish and send a test message from the live URL (not the editor preview). Every submission is saved to your splitforms dashboard and emailed to you the moment it lands.

Why it's needed

Does Google Sites have a contact form?

No — the Insert panel's Forms option only embeds a separate Google Form in its own iframe, with Google's fonts, writing responses into Sheets. There's no styleable contact form block. The fix needs no Apps Script: Insert → Embed → Embed code accepts a raw <form> that posts straight to a hosted backend. The same approach works on Notion, Wix, and GitHub Pages.

  • Your HTML and CSS — matches your site's fonts and colors
  • Searchable dashboard + owner email notifications, on by default
  • One snippet in an Embed block — no Google Forms builder
A Google Sites form submission routed to email, a dashboard, and connected tools

Where submissions go

Where do your Google Sites form submissions go?

Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it ever reaches you. Search, export to CSV, or forward it to your email, Google Sheets, Slack, or Notion on paid plans.

  • 500 submissions total, free to start
  • Honeypot + time-trap + server-side heuristics
  • Google Sheets, Slack, Notion, or signed webhooks on paid plans
Google Sites contact form submissions in the splitforms dashboard

Spam protection

Does spam protection work inside a Google Sites embed?

Yes. Google Sites renders Embed-code HTML in a sandboxed frame, but none of splitforms' spam layers depend on the page around the form — they travel with the snippet or run server-side. More in honeypot vs reCAPTCHA.

  • Honeypot botcheck field ships inside the form HTML
  • form_loaded_at time-trap flags superhuman-fast bots
  • 6/min per-IP rate limiting, per form, enforced server-side
Spam protection layers guarding a Google Sites contact form

How SplitForms works

What happens after someone submits your form?

splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

Point your form to your unique SplitForms endpoint. That's it.

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See plans →

Setup guides for the stacks you use

Questions

Google Sites contact form questions.

View all FAQs
Does Google Sites have a built-in contact form?

No. The closest thing is Insert → Forms, which only embeds a separate Google Form — Google's styling, hosted in its own iframe, with responses written to Google Sheets or the Forms responses tab. There's no native, styleable contact form block. To get a form that matches your site, paste custom HTML via Insert → Embed → Embed code and point it at a hosted form backend like splitforms.

How do I add a custom contact form to Google Sites?

Open your page in the Google Sites editor, click Insert, choose Embed, switch to the Embed code tab, and paste an HTML form whose action points to https://splitforms.com/api/submit with your free access key in a hidden field. Click Next, then Insert, resize the box, and publish. Accepted submissions are saved to your SplitForms dashboard before owner notification email is attempted; delivery time and inbox placement depend on provider and recipient settings.

Is a contact form for Google Sites free?

Yes. The splitforms Free plan is $0 for 500 submissions total with unlimited forms, spam filtering, a hosted dashboard, and email notifications — free on every plan, no credit card. If you outgrow it, Pro is $5/month for 5,000 submissions a month plus webhooks, 13 integrations, exports, and autoresponders; Annual is $49/year for 15,000 a month.

Do I need Google Apps Script to make the form work?

No. Apps Script is one way to build your own form handler, but it means writing, deploying, and maintaining script code and managing quotas. An HTML form pasted into an Embed block POSTs directly to splitforms' hosted endpoint, which stores the submission, emails you, and filters spam — no script project on your Google account.

Does spam protection still work when the form is inside Google Sites' embed frame?

Yes. Every spam layer either ships inside the snippet (the honeypot field and the form_loaded_at timestamp) or runs server-side at splitforms (rate limiting and content heuristics), so the embed's iframe sandbox can't weaken any of them. Nothing needs configuring, and optional reCAPTCHA v2 is there if you ever want an extra layer.

Why does my thank-you page look broken after someone submits?

That's the sign of a plain redirect: Google Sites loads the destination page inside the embed's small fixed-size frame, so a full-width thank-you page ends up squeezed into that little box. The snippet on this page sidesteps it by showing an in-place thanks message instead of navigating away. If you'd rather redirect, point it at a compact page sized to fit the embed.

Can Google Sites form submissions go to Google Sheets, Slack, or Notion?

Yes, on paid plans (Pro at $5/month and Annual). Connect the native Google Sheets, Slack, Notion, Airtable, Discord, Telegram, or Mailchimp integration from your dashboard — no change to the embed code. Webhooks are also available: signed with HMAC SHA-256, delivered with an 8-second timeout and one automatic retry on a timeout or 5xx, so your endpoint should still respond quickly.

The form works in the Google Sites editor preview but not on the live site (or vice versa) — why?

Google Sites' in-editor preview doesn't always run embedded scripts identically to the published page. Always test on the live, published URL in an incognito window. If nothing happens on submit, open the browser console — a typo in the action URL (it should read exactly https://splitforms.com/api/submit) or a stray character in your access key is the usual cause.

Simple pricing

How much does splitforms cost?

Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08/mo, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions / mo
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ