If you run a small business, every website form submission is a potential customer - but it's very easy for those leads to get lost in your inbox, buried in spam, or forgotten in a busy week.
You don't need an expensive CRM to fix that. With a free Google Sheet and a short script, you can automatically log every submission with a timestamp, capture consent, and get an email alert the moment a lead comes in.Here's exactly how it works - explained in plain English.
What You'll End Up With
By the end of this setup, every time someone fills in your website form, you'll get:
- โ A new row in a Google Sheet with a timestamp
- โ Every form field stored in its own column (name, email, message, etc.)
- โ A consent value logged so you know they agreed to be contacted
- โ An automatic email to you at your business address
Simple, tidy, and free.
Why Not Just Use Email?
Most contact forms just email you. That works - until it doesn't. Emails get lost, filtered, deleted, or forgotten. And when you want to look back at "how many leads did I get last month?", you're stuck scrolling through your inbox.
A Google Sheet gives you:
- ๐ A searchable list of every lead in one place
- ๐ A simple way to see trends over time
- ๐ง A ready-made email list for newsletters (with consent)
- ๐ A backup that lives outside your inbox
Is This a CRM?
Honestly - no. A proper CRM does things this setup can't:
- Track repeat website visits and behaviour
- Score leads based on interest
- Automate follow-up email sequences
- Sync with calendars, pipelines and deals
The 5-Step Setup
Step 1: Create Your Google Sheet
Open Google Sheets and create a new sheet called something like "Website Leads". In the first row, add your column headers. A good starting set:| Timestamp | Consent | Name | Email | Phone | Message |
Keep the order the same as the fields you'll send from your form - it'll make step 3 easier.
Step 2: Open Apps Script
In the sheet, go to Extensions โ Apps Script. This opens a code editor connected to your sheet. Delete the placeholder code so you have a blank canvas.Step 3: Paste in the Script
Here's a clean, plain-English version of the script. Paste it in, then change the email address near the top to yours.
``javascript
const NOTIFYEMAIL = "hello@yourbusiness.ie";
function doPost(e) {
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = JSON.parse(e.postData.contents);
const row = [
new Date(),
data.consent ? "Yes" : "No",
data.name || "",
data.email || "",
data.phone || "",
data.message || ""
];
sheet.appendRow(row);
MailApp.sendEmail({
to: NOTIFY
EMAIL,
subject: "New Website Lead: " + (data.name || "Unknown"),
body:
"You've got a new lead:\n\n" +
"Name: " + (data.name || "") + "\n" +
"Email: " + (data.email || "") + "\n" +
"Phone: " + (data.phone || "") + "\n" +
"Message: " + (data.message || "") + "\n" +
"Consent: " + (data.consent ? "Yes" : "No")
});
return ContentService
.createTextOutput(JSON.stringify({ status: "success" }))
.setMimeType(ContentService.MimeType.JSON);
} catch (err) {
return ContentService
.createTextOutput(JSON.stringify({ status: "error", message: err.toString() }))
.setMimeType(ContentService.MimeType.JSON);
}
}
`
What this does, in plain words: when your website sends a submission, the script adds a new row to the sheet with the current time and every field, then emails you a summary.
Step 4: Deploy It as a Web App
In Apps Script, click Deploy โ New deployment. Choose Web app, then:
- Execute as: Me
- Who has access: Anyone
Click Deploy, approve the permissions, and copy the web app URL it gives you. That URL is now the endpoint your website form will send data to.
Step 5: Connect Your Website Form
On your website, when the form is submitted, send the data to that URL as JSON. Any developer (or a good AI-powered builder) can wire this up in minutes. The key point: your form must send a
consent` field and match the fields the script expects.
That's it. Submit a test entry - a new row should appear in the sheet and an email should hit your inbox within a few seconds.
From here
Not sure where your own setup stands?
Send a sentence about what you are trying to fix or connect. Kris reads every one and answers plainly.
A Note on GDPR and Consent
If you're collecting leads in Ireland or the EU, you can't skip this bit.
- โ Add a clear consent checkbox on your form ("I agree to be contacted about my enquiry")
- โ Log that consent value in the sheet - so you have a record
- โ Keep a short privacy policy on your site explaining what you store and why
- โ Only email people for the reason they consented to
Storing consent in the sheet isn't a legal shield on its own, but it's a huge step in the right direction, and much better than "we lost track".
When to Upgrade to a Real CRM
You've outgrown this setup when:
- You have more leads than you can personally reply to
- You want to send automated follow-up sequences
- You need to track deals, pipelines, or repeat visits
- Multiple people on your team need shared access with roles
At that point, exporting the sheet into a tool like HubSpot, Pipedrive or a bespoke system takes minutes - because your data is already structured.
Why Not Just Edit The Site Directly?
With a page-builder, every update is a chance to break the layout: fonts shift, sections collapse on mobile, an image ends up 4x too big. With a form-driven dashboard, the client just fills in fields (title, body, price, image) and the site renders those fields inside the design I already built. Nothing moves. Nothing breaks. And every submission is logged, just like the Google Sheets flow above.
The Honest Summary
If you'd rather have this built into your website properly - with the form, the sheet, the email alerts and a privacy-friendly consent flow all wired up for you - that's exactly the kind of quiet, useful work I do for clients every week.


