Skip to content
SheetCapture

Send an HTML form to Google Sheets

A plain HTML form that sends each submission to your Google Sheet, with no JavaScript.

  1. 1

    Get your sheet and access key ready

    Create a Google Sheet (headers are optional: we'll add a column for each field) and share it with this address as an Editor:

    sheetcapture@appspot.gserviceaccount.com

    Copy the sheet ID from its URL (the part between /d/ and /edit), and your access key from your account page. No account yet? Start free.

  2. 2

    Add the form to your page

    Replace YOUR_SHEET_ID and YOUR_ACCESS_KEY with your own. Each field's name becomes a column in your sheet, so add, rename or remove fields freely.

    <form action="https://www.sheetcapture.com/add-row" method="POST">
      <input type="hidden" name="GoogleSheetID" value="YOUR_SHEET_ID" />
      <input type="hidden" name="AccessKey" value="YOUR_ACCESS_KEY" />
      <input type="hidden" name="_redirect" value="https://your-site.com/thanks" />
    
      <label>Name <input name="Name" required /></label>
      <label>Email <input type="email" name="Email" required /></label>
      <label>Message <textarea name="Message"></textarea></label>
      <button type="submit">Send</button>
    </form>
  3. 3

    Choose where visitors go next

    After submitting, visitors are sent to the _redirect URL. If something goes wrong, they're still sent there, with ?sheetcapture_error= and an error code added, so your thank-you page can show a message.

    <!-- On your thanks page -->
    <p id="message">Thanks! We'll be in touch.</p>
    <script>
      const error = new URLSearchParams(location.search).get("sheetcapture_error");
      if (error) {
        document.getElementById("message").textContent = "Sorry, something went wrong. Please try again.";
      }
    </script>

Anything in a web page, including hidden fields, can be seen by visitors. Your access key can only add rows and use your plan's requests, but only embed it on sites you control.

Want every option?

The API docs cover responses, limits and error codes.

Read the docs