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.
Want to see this in action?
Get a free concept prototype designed specifically for your business within three working days.
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.
Ready to discuss your project?
Book a free consultation to explore how we can help grow your business online.
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.


