Passive scan · 31 October 2026 · N = 183 websites
Singapore local service businesses: where website enquiries leak
We looked at 183 Singapore aircon, cleaning, moving, dental, beauty, physio, plumbing, electrical and renovation websites from the outside: their public DNS and one fetch of the homepage. No form was submitted and no email was sent. These are the numbers, with the exact CSV column behind each one.
Convenience sample from public “best of” lists, not a representative survey. No business is named on this page.
01Headline numbers
Most domains do not tell inboxes what to do with fake mail
No enforced DMARC policy (record missing or p=none).
No SPF record at all.
Have an enquiry form (or embedded form widget) on the homepage.
Have neither a form nor a clickable email link on the homepage.
02Email authentication
Where enquiry replies and notifications can go missing
A website form usually ends as an email: a notification to the owner, an auto-reply to the customer, or both. Mail from a domain without SPF or an enforced DMARC policy is more likely to be filtered as spam or spoofed. That is a risk, not proof that mail is being lost.
- MX
169/183 (92.3%) domains can receive email
The domain publishes MX records, so mail addressed to it has somewhere to go.
- SPF
30/183 (16.4%) have no SPF record
Nothing tells receiving servers which servers may send for the domain. A further 117/183 (63.9%) end SPF with
~allor?all(soft or neutral), and 1/183 publish more than one SPF record, which makes SPF invalid. - DM
79/183 (43.2%) have no DMARC record
Another 76/183 (41.5%) publish
p=none, which only monitors. 21/183 (11.5%) usep=quarantineand 7/183 (3.8%) usep=reject. - MX+
142/169 (84.0%) of mail-receiving domains have no enforced DMARC
Of the 169 domains that can receive mail, 15/169 (8.9%) have neither SPF nor DMARC.
- F+
75/88 (85.2%) of sites with a homepage form have no enforced DMARC
Base: the 88 analysable homepages that carry a form. If the form sends an auto-reply or notification from the site’s own domain, that mail has no enforced policy behind it.
03Homepage and forms
What a visitor meets on the first page
One GET of each homepage. Page metrics use the 170 homepages that returned HTTP 200 with at least 2 KB of HTML; the rest returned errors or bot-challenge pages we could not read.
- TLS
178/183 (97.3%) served the homepage over valid HTTPS without an error
3/183 (1.6%) ended on plain
http://. 5/183 (2.7%) returned a server error (5xx) on our single request. - FRM
88/170 (51.8%) have a form on the homepage
82/170 (48.2%) do not. Many of those rely on WhatsApp (99/170 (58.2%) link to WhatsApp) or phone (92/170 (54.1%) have a
tel:link). 74/170 (43.5%) show amailto:link. - ACT
0/88 (0.0%) of homepage forms post to a host that does not resolve
3/88 (3.4%) post to a different host (a form service or another domain); every one of those hosts resolved in DNS. 0/88 (0.0%) use a
mailto:action. We did not submit any form, so this says nothing about whether submissions are delivered. - CAP
51/170 (30.0%) reference a CAPTCHA
reCAPTCHA, hCaptcha or Turnstile appears in the homepage HTML. CAPTCHAs cut spam; a misconfigured one can also block real people, which a passive scan cannot see.
- T
Median time to first byte 1.24 s, p75 2.13 s
Measured once per site from a server in the United States, not Singapore, including redirects (n = 170). Median full HTML download 1.48 s, p75 2.69 s. 106/170 (62.4%) took over 1 s to first byte. Treat these as rough: a single run from far away.
04Other public research
What others measured (third-party)
Not our data. Quoted as published so you can compare an active test with our passive one.
- SG
12 of 158 forms could not take an enquiry at all
In a field test published by Tony Tong, one buyer-style enquiry went through the website contact forms of 158 Singapore small businesses on 13 October 2026. 12 forms could not take an enquiry (blank form, dead submit button, server error, broken security check); 26 businesses replied within five days. The author notes the list leans towards slower repliers. Source: tonytonggg.com/writing/158-website-enquiries.
- MY
When the form works but no lead arrives
Main cause per resolved case on Malaysian SME sites, 2024–2026, per ZenWeb support data: notifications in spam or junk 33%, server sending mail with no SMTP authentication 26%, wrong or disabled recipient address 17%. Source: zenweb.my/blog/form-leads-not-arriving.
Third-party figures. Different samples, dates and methods from ours; do not add them together.
05Self-check
A short self-check
For owners of a Singapore service business website.
- Submit your own website form from your phone, on mobile data, with an email address you do not use for the business. Did the notification arrive? Did it land in spam? Did the customer copy (if any) arrive?
- Do the same at 10 pm on a weekday. Note who sees it, and when.
- Open your domain in a free DMARC/SPF lookup. Do you have exactly one SPF record? Is there a DMARC record, and is it still
p=noneafter months? - Check where form notifications go. Is it a shared inbox someone still reads, or the address of a staff member who left?
- Click your WhatsApp button and your phone link on a phone. Do they open the right number?
- Load your homepage on mobile data. If it takes more than a few seconds to show anything, visitors leave before they reach the form.
- If you use a CAPTCHA, try the form in a private browser window. Can you get through it?
- Write down how long your last five enquiries waited for a first human reply.
If any step fails or you cannot tell, that is where enquiries can go quiet.
Want someone to trace it end to end?
The Lead Leak Check maps your lead and follow-up workflow from the form to the first human reply, and lists where enquiries can drop. Written report in 3
The Lead Leak Check follows one real enquiry from your form to the first human reply and gives you a written map of where it can drop. Fixed price, US$197.
ndash;5 business days. Fixed price, US$197; Starter builds one production workflow for US$497.Lead Leak Check · $197 Starter build · $497
We do not promise any compliance outcome or a number of extra leads. More about Paopao Studio.
06Method
How the numbers were collected
Sample. We took outbound links to business websites from 25 public “best of Singapore” listicles and directory pages across nine service categories, removed platforms, media, marketplaces and large multinationals, and deduplicated by domain: 202 candidate domains. A site counts as Singapore if it is on a .sg domain or its homepage mentions Singapore. 183 sites qualified (131/183 on .sg). By category (the list a site was first found in): moving 50, cleaning 46, aircon 36, beauty 13, dental 12, physio 8, electrical 7, plumbing 6, renovation 5.
DNS. Public DNS-over-HTTPS (Google, Cloudflare as fallback): A, MX, TXT for SPF, and TXT at _dmarc for DMARC policy.
Web. Per site: one request for robots.txt, obeyed, then one GET of the homepage over HTTPS (HTTP only if HTTPS could not connect at all), following up to five redirects, at least 2 seconds between requests to the same site. Form detection uses the homepage HTML only: a <form> tag or a known embedded form widget. Form action hosts were checked in DNS. No contact pages were fetched, no form was submitted, no email was sent and no mail server was contacted.
Privacy. The dataset stores no email addresses, phone numbers or names, only yes/no flags and timings. Published data replaces domains with opaque IDs.
Dropped metric. We also tried to check whether email domains printed on the homepage have MX records. Our text pattern picked up non-email strings (for example script version tags), so that metric is not reported.
07Limitations
What this scan cannot tell you
- Passive only. No form was submitted, so we cannot say whether any form actually delivers enquiries.
- Missing DMARC is a risk, not a fault. Many domains with no DMARC record still receive and send mail fine. It raises the chance of spoofing and spam filtering; it does not prove loss.
- Timing varies. One request per site, from the United States, on one morning. A repeat run will give different times.
- Convenience sample. Sites listed in “best of” articles, skewed towards moving, cleaning and aircon. Not representative of all Singapore businesses.
- Homepage only. Forms that live on a contact page, or that are drawn by JavaScript after load, are not counted; the true share of sites with a form is likely higher. Form action URLs were not requested, so a form posting to a dead page on a live host is not detected.
- Bot challenges. Some hosts answered with a challenge or error page; those homepages are excluded from page metrics but kept in DNS metrics.
08Data
Every number, and the CSV column behind it
Dataset: sg_scan_1031.csv, 183 rows, one per site, scanned 31 October 2026 (JST). Page metrics use rows with home_analysable==1 (170). Timing: median and nearest-rank percentiles of ttfb_s and total_s over those rows. The CSV and recompute script are available on request.
| Metric | x/N | % | CSV rule |
|---|---|---|---|
| Sites on a .sg domain | 131/183 | 71.6% | tld_sg==1 |
| Domain publishes MX (can receive mail) | 169/183 | 92.3% | mx_present==1 |
| No SPF record | 30/183 | 16.4% | spf_present==0 |
| More than one SPF record (invalid) | 1/183 | 0.5% | spf_multiple==1 |
| SPF ends ~all or ?all (soft/neutral) | 117/183 | 63.9% | spf_all in {~all,?all} |
| No DMARC record | 79/183 | 43.2% | dmarc_policy==missing |
| DMARC p=none (monitor only) | 76/183 | 41.5% | dmarc_policy==none |
| DMARC p=quarantine | 21/183 | 11.5% | dmarc_policy==quarantine |
| DMARC p=reject | 7/183 | 3.8% | dmarc_policy==reject |
| No enforced DMARC (missing or p=none) | 155/183 | 84.7% | dmarc_policy in {missing,none} |
| Of domains with MX: no enforced DMARC | 142/169 | 84.0% | mx_present==1 & dmarc_policy in {missing,none} |
| Of domains with MX: no SPF and no DMARC | 15/169 | 8.9% | mx_present==1 & spf_present==0 & dmarc_policy==missing |
| Homepage returned a 5xx error | 5/183 | 2.7% | http_status>=500 |
| Homepage served over valid HTTPS without error | 178/183 | 97.3% | https_ok==1 |
| Homepage ended on plain http:// | 3/183 | 1.6% | final_https==0 |
| Homepage HTML analysable (HTTP 200, >=2 KB) | 170/170 | 100.0% | home_analysable==1 (denominator for page metrics) |
| Homepage has a form or embedded form widget | 88/170 | 51.8% | home_analysable==1 & form_detected==1 |
| Homepage has no form | 82/170 | 48.2% | home_analysable==1 & form_detected==0 |
| Of homepages with a form: action posts to another host | 3/88 | 3.4% | form_detected==1 & form_action_external==1 |
| Of homepages with a form: action host does not resolve | 0/88 | 0.0% | form_detected==1 & form_action_host_unresolvable==1 |
| Of homepages with a form: action is mailto: | 0/88 | 0.0% | form_detected==1 & form_action_mailto==1 |
| Homepage references a CAPTCHA (reCAPTCHA/hCaptcha/Turnstile) | 51/170 | 30.0% | home_analysable==1 & captcha_present==1 |
| Homepage links to WhatsApp | 99/170 | 58.2% | home_analysable==1 & whatsapp_present==1 |
| Homepage has a tel: link | 92/170 | 54.1% | home_analysable==1 & tel_present==1 |
| Homepage has a mailto: link | 74/170 | 43.5% | home_analysable==1 & mailto_present==1 |
| Homepage has neither a form nor a mailto: link | 62/170 | 36.5% | home_analysable==1 & form_detected==0 & mailto_present==0 |
| Has homepage form AND domain has no enforced DMARC | 75/88 | 85.2% | form_detected==1 & dmarc_policy in {missing,none} |
| TTFB over 1.0 s (single run) | 106/170 | 62.4% | home_analysable==1 & ttfb_s>1.0 |
| Total HTML fetch over 3.0 s (single run) | 40/170 | 23.5% | home_analysable==1 & total_s>3.0 |