A client enquiry should never live in an inbox and nowhere else. The point of an intake form is not to collect information — it is to make sure the same information arrives in the same shape every time, so it can be acted on without a human retyping it.
This is the first automation worth building in almost every small business, because it is small, it pays back immediately, and it teaches you the failure modes you will meet again on bigger builds.
What you are building
A form on your site → a row in a spreadsheet → a notification when the row does not arrive.
Three pieces, in that order. Most attempts fail because people build the form, connect it, and never build the third piece.
Step 1 — decide the columns before the questions
Write the spreadsheet header first. Every column must be a field you will actually filter or sort on later. The common mistake is asking open questions and storing paragraphs; a paragraph cannot be sorted.
A workable minimum for a service business:
- Received at (timestamp, written by the system, not the visitor)
- Name
- Best contact method, and the value for it
- What they need, chosen from a list of five to eight options
- Urgency, chosen from three options
- Source — which page or campaign sent them
- Status, defaulting to
new
Anything else is a note, not a column.
Step 2 — make the form emit exactly those fields
Use one form tool and one spreadsheet. Two form tools is how you end up with two lists and no list.
Rules that save trouble later:
- Never let the visitor type a date. Timestamps come from the system. A typed date is a source of silent error.
- Choice fields, not free text, wherever you would want to filter. A dropdown of eight options beats a text box, every time, because you can count it.
- One required contact field, not two. If you require phone and email, you will get fake entries from people who only want to give one.
- A honeypot field, hidden by CSS, that must stay empty. Cheaper and more reliable than a captcha, and it does not punish real visitors.
Step 3 — the row must be able to fail loudly
This is the step almost everyone skips.
A form that silently stops writing rows looks exactly like a form nobody is filling in. You will not notice for weeks, and by then you have lost every enquiry in that window.
Build the watchdog first:
- Every submission writes a row. The row carries the timestamp from the system.
- A scheduled job runs once a day and asks one question: was any row written in the last 24 hours while the site received traffic?
- If traffic exists and no rows arrived, raise an alarm. Not a log line — an alarm that reaches a person.
The subtle part is the second condition. A quiet week with no enquiries is normal. A quiet week with 200 visitors and no enquiries is a broken integration. Only the combination tells you which you have.
Step 4 — deduplicate on arrival, not later
People submit twice. They submit a week apart and forget. Build the rule now: match on normalised email or phone, and if a row already exists within 30 days, update it and increment a count rather than creating a second row.
Normalise before comparing — lowercase the email, strip spaces and punctuation from the phone, and compare on the last nine digits. Comparing raw strings produces duplicates that look unique.
Step 5 — hand it to a human in the right place
The spreadsheet is the record. It is not the to-do list. Whoever acts on enquiries should get a notification with the fields they need in the message body — not a link they have to click, log into, and search.
If a lead waits in a sheet for someone to check the sheet, you have automated the collection and left the response manual. That is where the lost hours actually are.
What good looks like
- A submission appears in the sheet within a few seconds
- The same person submitting twice produces one row and a count of two
- The daily check has run for a month and never fired
- Test it by disabling the integration deliberately: the alarm should fire within 24 hours
If you cannot make the alarm fire on purpose, you do not have an alarm. You have a hope.
The test is not "does the form work." The test is "do I find out when it stops working."
Where this leads
Once intake is reliable, the same three-part shape — capture, store, alarm — applies to every automation you build afterwards. That is the real value of starting here: it is the smallest complete example of the pattern.