TheProjectSEO · Full Monthly Report

Helpling Singapore — Monthly SEO Report

Period: June 2026 (with Jan 2025–Jun 2026 trend and YoY) · Prepared by TheProjectSEO · Full detail behind every finding, live-data sourced throughout

Executive Summary

Traffic — Jan–Jun 2026 (verified, calendar-month aligned, live pulls)

Month GSC Clicks GSC Impressions Avg Position GA4 Organic Sessions (SG-corrected) GA4 Organic Users (SG-corrected)
Jan 17,729 1,248,741 11.83 35,067 22,192
Feb 16,335 1,191,264 8.91 30,105 19,438
Mar 17,899 2,264,502 6.82 31,131 20,566
Apr 13,181 1,393,053 7.87 24,341 15,841
May 12,614 1,175,840 10.16 22,995 15,290
Jun 13,131 1,263,529 9.18 24,121 15,650

GSC: live Search Console API, siteUrl=helpling.com.sg, exact calendar-month date ranges, pulled 2026-07-08. GA4: live GA4 Data API, property 306688855, sessionDefaultChannelGroup = Organic Search, filtered to hostName IN (www.helpling.com.sg, app.helpling.com.sg) — corrected as of 2026-07-09 (see Data-Quality Findings). The previous version of this table used the property's unfiltered global total, which blends in helpling.de, helpling.fr, helpling.ch, and helpling.com.au traffic and materially overstates and reverses the trend direction from April onward. GA4 revenue and transaction figures below are unaffected by this issue — confirmed identical whether filtered to SG hostnames or not, since ecommerce tracking is already properly SG-scoped.

March's impression spike (2.26M vs a ~1.2–1.4M baseline) coincides with the March 2026 Google Spam Update's rollout window (per deliverables/2026-05/organic-decline-forensic-diagnosis.md). The corrected GA4 sessions column now tells the same story as GSC clicks: a peak in Jan/Mar, a real decline into April-May, and a slight recovery in June (22,995 → 24,121, +4.9%) — matching GSC's own May→June uptick (12,614 → 13,131). This is the first GA4-based cross-source corroboration of the GSC-documented decline in this report; the uncorrected figures previously showed the opposite (an unexplained rise straight through June), which didn't reconcile with anything else in this report and should not have been presented as-is.

GA4 Revenue — Why It Doesn't Match Customer Insights GMV

Month GA4 Organic Revenue (SGD) GA4 Total Site Revenue (SGD)
Jan 48,450 231,175
Feb 33,885 149,970
Mar 33,085 161,825
Apr 29,085 131,550
May 28,855 129,215
Jun 27,055 130,185

GA4 organic revenue has declined every month since January, but this is not the same measurement as Customer Insights GMV, and the two should not be compared directly. Checked this cycle: GA4 shows 5,360 transactions in January at an implied AOV of SGD 43. Customer Insights shows ~20,300 total orders that same month (655/day average × 31 days) — roughly 3.8x more orders than GA4 counts as transactions, and total company GMV of ~EUR 399K (≈SGD 586K, at the property's confirmed SGD currency and a standard EUR/SGD rate) against GA4's tracked SGD 231K. The most likely explanation: most real bookings complete via Helpling's app, which GA4's web-based purchase tracking doesn't see — GA4 is measuring a partial, web-checkout-only slice of the business, not true company or true organic revenue. This is a hypothesis based on the order-count and revenue-scale gap, not yet confirmed directly with Helpling — worth asking their data team to verify. Customer Insights is the more complete revenue source and is used for everything below.

GMV Methodology (read before trusting any number below)

gmv_30_days_eur in Helpling's Customer Insights sheet is a trailing 30-day rolling figure per day, not a daily-additive one, and it is genuinely volatile day to day — daily values swung from €483 to €2,537 within the same week in early June. An earlier pass of this report compared two single-day snapshots (May 31 vs June 5) and reported a "jump" that was not real — it was sampling noise. Every GMV figure below is instead a monthly average of the daily rolling figure, which is far more stable and defensible. June 2026 has real GMV data for only 5 days (June 1-5; June 6 onward reads exactly 0.0 at the source — see Data-Quality Findings) — June figures are marked as partial everywhere and should not be read with the same confidence as a full month.

Revenue Trend — Jan–Jun 2026 (monthly average of daily GMV, EUR)

Month Avg Daily SEO-channel GMV Avg Daily Total GMV Avg Daily Orders (all channels)
Jan 2,094 12,864 655
Feb 1,226 8,220 499
Mar 1,457 10,063 498
Apr 1,375 8,540 414
May 1,250 7,732 389
Jun (5 days only) 1,600 8,523 412

Real pattern: a gradual decline in both GMV and order volume from January through May (-40% on orders), then a slight uptick in the 5 real June days — directionally consistent with the GSC/GA4 stabilization above, though the small June sample means this shouldn't be over-read.

Revenue Category Landscape — What We Actually Have

Classified across the full 24-month history in the lake (2024-07 to 2026-06), by how consistently each of the 26 tracked categories shows meaningful (>€5/day average) revenue:

Core recurring (meaningful revenue in nearly every month, 23-24 of 24): Cleaning, Air Conditioning, Elderly Care, Furniture And Furnishings, Move out Cleaning, Renovation Cleaning, Deep Cleaning.

Seasonal but real (recurring presence, revenue concentrated around specific calendar windows): Spring Cleaning (spikes around Chinese New Year in January; a "Raya Spring Cleaning" variant appears briefly around May, tied to Hari Raya).

Intermittent (present most months, but revenue is sub-threshold or missing in a third or more of them): Disinfection (19/24 months active), Handyman (14/24), Landscaping (12/24), Moving Service (10/24).

Sporadic / effectively one-time (2-6 active months out of 24): Floor Polishing, Painter Service, Pest Control.

No real recorded revenue at any point (11 categories): All Professional Verticals, Car Washing, Care, Carpet Cleaning, Furniture Assembly, Home Desinfection, Moving Hauling, Providers, Technician Service, Vertical Services, Window Cleaning. These look like placeholder or legacy category labels in the sheet rather than active revenue lines.

Notable gap found: Elderly Care — a genuine, consistent, meaningful recurring category (€300-750/day) — shows exactly €0 in SEO-channel GMV in every single month of the entire dataset, both 2025 and 2026. Organic search is credited with zero influence on this category's bookings in Helpling's attribution model. Worth understanding directly with Helpling's team whether that's accurate (e.g. Elderly Care converts entirely through referral/partnerships/word-of-mouth) or a tracking gap.

Year-over-Year by Category (2025 vs 2026, avg daily GMV, all channels, EUR)

Category Jan YoY Feb YoY Mar YoY Apr YoY May YoY Jun YoY*
Air Conditioning -18.6% +49.1% +66.8% +67.4% +63.2% +103.7%
Cleaning +26.3% +21.3% +3.5% +4.1% +3.2% +6.6%
Elderly Care -51.0% -44.2% -33.2% -44.1% -36.3% -41.9%
Furniture And Furnishings +22.3% -28.4% -26.1% -43.7% -70.1% -35.1%
Move out Cleaning +22.5% -9.9% -22.4% -24.2% -53.5% -23.0%
Renovation Cleaning +111.0% -12.9% -20.1% -33.0% -27.3% -17.2%
Deep Cleaning +95.2% -43.3% -1.3% -48.1% -49.7% n/a*
Spring Cleaning +159.4% +165.3% -42.0% +31.5% +52.3% n/a*

June 2026 = only 5 real days of GMV data. Deep Cleaning and Spring Cleaning show as "0" in that 5-day window purely because a low-volume category can easily have zero bookings across 5 specific days — this is a sample-size artifact, not a real -100% collapse*, and is marked n/a rather than reported as a YoY figure. Air Conditioning and Cleaning's June YoY figures are more trustworthy since they're higher-volume categories less sensitive to a small sample, but should still be treated as preliminary until a full June is available.

Reading this table takes two lenses at once, and they don't contradict each other: - Cleaning is up year-over-year every single month (+3-26%), even though it has been declining sequentially within 2026 since January (see the main revenue trend table — this is a business that's bigger than a year ago but has softened since the start of this year). - Air Conditioning shows the strongest, accelerating YoY growth of any recurring category (+49% to +104% every month since February) — but per the organic-category breakdown below, almost none of this growth is reaching SEO. This is the clearest "real demand, SEO isn't capturing it" case in the data, and it's the same category the ranking cannibalization diagnosis already flagged. - Elderly Care is down YoY every month, consistently around -35% to -51% — the worst and most consistent YoY decline of any recurring category. Combined with its zero organic attribution, this looks like a category-health issue outside SEO's reach, not something a content/technical fix addresses. - Move out Cleaning and Renovation Cleaning are both down YoY for most of the period (after strong Januarys), despite Move out Cleaning showing organic month-over-month improvement within 2026 (see below) — it's recovering from a 2026 low point, but hasn't yet caught back up to 2025's levels.

Category Performance — Organic vs. Overall, Within 2026

Top categories by average daily GMV, SEO-channel only vs. all channels, month by month (2026):

Organically (SEO channel_group): - Move out Cleaning is the clear organic standout — has held the #1 or #2 organic spot every month (Jan €512/day → Jun €748/day, partial), and its June figure is the largest organic mover of any category this year. This corroborates an independent GSC finding: /move-out-in-cleaning was one of the biggest page-level click gainers (213→316 clicks, Apr→Jun). Caveat from the YoY table above: this is a recovery within 2026, not yet back to 2025's organic levels for this category. - Cleaning (the flagship category) is organically softening — €577/day in January down to the €350-490 range since February, a smaller decline than its all-channel drop. - Air Conditioning is organically almost invisible — only €42/day in the partial June data, the smallest of any top-category figure in this whole period, despite being the fastest-growing category overall (see YoY table). This is the clearest, most quantifiable gap between real demand and SEO's current share of it.

Overall (all channels): - Cleaning remains by far the largest category in absolute terms (€5,500-9,100/day) despite its within-2026 decline. - Air Conditioning jumped to €593/day in June (partial) vs. a typical €310-360 — nearly double — driven almost entirely by non-organic channels.

Page-Level SEO Audit — Aircon, Elderly Care, Spring Cleaning, Homepage Check

Full detail in deliverables/2026-07/page-level-seo-audit.md. Using a query-count-by-position-band diagnostic (non-brand queries only), with a site-wide check run before drawing any per-page conclusions:

Technical Crawl Health — Urgent Finding (founder-provided GSC exports, 2026-07-09)

Full detail in deliverables/2026-07/urgent-technical-crawl-issues.md (standalone, meant to be forwarded to Bhavin's dev team directly). Summary:

Phase 3 — Revenue Growth Layer: Demand vs. Visibility, Reviews, AI-Search (2026-07-09)

Per the master plan's final phase, run after the Phase 1 (backlinks) and Phase 2 (site-wide technical/PQI recovery) work above. Three questions, each with a decisive answer.

Is this a demand problem or a visibility problem?

Pulled Ahrefs Volume History (Mar 2025 – Jul 2026, Singapore) for the 5 core tracked keywords plus both brand terms:

Keyword Mar 2025 volume Low point in window Jul 2026 volume Timing of any decline
cleaning services singapore 7,091 2,811 (Jun 2025) 2,877 Declined through 2025, flat since Jan 2026
home cleaning services singapore 1,493 610 (Jun 2025) 774 Declined through 2025, flat Feb-Jul 2026
post renovation cleaning 1,346 972 (Feb 2026) 1,180 No decline — flat-to-growing throughout
aircon servicing 8,175 3,578 (Nov 2025) 4,255 Declined through 2025, bottomed out and flat since Dec 2025
sofa cleaning singapore 999 525 (Nov 2025) 809 Noisy but flat, no trend
helpling (brand) 3,632 2,073 (Feb 2026, one-month outlier) 4,726 Endpoint comparison shows +30%, but the 2025-average vs. 2026-average comparison shows -5.6% — noisy, no consistent trend
helpling singapore (brand) 5,078 3,474 (Apr 2025) 4,532 Endpoint comparison shows -11%, but the 2025-average vs. 2026-average comparison shows +8.4% — noisy, no consistent trend

Answer: this is a visibility problem, not a demand problem. Two of five category terms show no decline at all. The two that do (cleaning services singapore, aircon servicing) had already bottomed out and flattened by late 2025 — before the March 2026 event that hit Helpling's own rankings. None of the five shows a demand drop timed to March 2026. Both brand terms are volatile month-to-month with no consistent trend either way (see the caveat in the table above — this was checked two different ways precisely because an initial single-endpoint read looked like clean growth and didn't survive a second method), but critically, neither shows a sustained decline — which is the part that actually matters for ruling out brand erosion. Whatever caused Helpling's ranking and click collapse, people did not stop searching for what Helpling sells — the site simply stopped showing up as often for searches that kept happening at a stable rate. This validates the entire recovery plan above: the fix is visibility (backlinks, schema, crawl, technical), not a demand-side pivot.

Did reviews or reputation dip alongside the ranking decline?

Pulled monthly Google Business Profile review count and average star rating (gbp_reviews, full history through July 2026). Clean, decisive negative result: rating stayed in a healthy 4.6–4.93 band through the entire March–July 2026 window (4.64 in March, the lowest point, still solidly positive), and review volume was elevated relative to most of 2025, not declining (84–259 reviews/month in the recent window vs. a typical 20–100/month through most of 2024–early 2025). One anomaly worth a footnote: February 2026 shows an isolated spike to 899 reviews (vs. a 84–259 typical range) — ratings stayed high through it (4.93), so it doesn't read as manipulation, but it's unexplained and worth a quick sanity check with whoever pulls this data, in case it's a one-time ingestion artifact rather than a real review-volume event. Reviews/reputation is ruled out as a contributing cause of the devaluation — the trust erosion this engagement has been diagnosing (toxic backlinks, schema regression, crawl issues) is not showing up on the reputation side at all.

AI-search visibility — citation counts, real referral traffic by page, and a tracking gap

Three data sources, layered:

1. Citation counts (Ahrefs, independent crawl-based, not dependent on any report configuration). helpling.com.sg is being cited across every major AI surface right now: Google AI Overviews (82 citations across 39 distinct pages), Google AI Mode (65 citations, 38 pages), Grok (44, 24), ChatGPT (38, 28), Gemini (17, 13), Perplexity (17, 9), Copilot (16, 10). A real, non-trivial baseline.

2. Real referral traffic, by page (GA4, hostName-filtered to true SG traffic, sessionSource = chatgpt.com/perplexity.ai/gemini.google.com). This is the better evidence — it shows people actually clicking through from an AI answer, not just being cited. Two findings:

Two honest caveats on this data, not smoothed over: - A (not set) landing-page bucket (405 chatgpt.com sessions, 25 gemini.google.com, 21 perplexity.ai — ~451 total) shows near-zero engagement (4-8%) and near-zero duration (under 10 seconds) — the profile of a bot/crawler fetch (most likely an AI platform's own browsing tool retrieving a page to generate its answer, which can register as a GA4 session without being a real human visit), not a genuine referred visitor. Excluded from the "real" totals above. - A handful of sessions land on individual, ID-specific customer pages (/customer/orders/571870, /customer/events/8558969, /customer/ha_conversation). These are not AI platforms citing private account pages — GA4 attributes an entire session to its original acquisition source, so a real user who started their session via a ChatGPT link and then logged in and clicked into their own order history will still show sessionSource = chatgpt.com on those later pageviews. Legitimate acquisition attribution, but shouldn't be read as "ChatGPT is citing customer order pages."

3. The Brand Radar competitive share-of-voice report (report 019c2692-e562-7684-a312-d339f613dfc2, configured 2026-02-04 against Urban Company and Luce) returns 0.0% share of voice for all three brands — a configuration gap, not a real result: every data source in the report (ChatGPT, Copilot, Gemini, Perplexity, Grok, Google AI Overviews, Google AI Mode) is set to "off", and has been since setup five months ago. Recommend turning on at least ChatGPT and Google AI Overviews — the two data sources with the most confirmed citation and referral-traffic volume above — so genuine competitive AI-visibility tracking against Urban Company becomes available going forward. Right now there's no way to see whether Urban Company's traditional-SERP gains (§2.6.1 in the technical diagnostics) extend into AI answers too.

Phase 3 status: complete. All three sub-questions have a recorded, decision-grade answer.

Keyword Performance — Core Tracked Terms (real GSC data, June 2026)

Keyword Ranking Page Position Clicks Impressions
cleaning services singapore /cleaning-services 3.6 101 3,202
home cleaning services singapore /cleaning-services 4.7 10 903
post renovation cleaning /post-renovation-cleaning 4.5 34 1,209
aircon servicing /aircon-servicing-guide (blog) 8.9 25 2,902
aircon servicing /aircon-services (commercial, should be winning) 18.8 7 2,741
sofa cleaning singapore /sofa-cleaning 4.3 11 1,187

Source: Search Console API, exact-match query filter, June 2026. This corrects an earlier draft that used Ahrefs' modeled keyword positions, which were significantly off for "post renovation cleaning" and "sofa cleaning singapore" specifically — both are healthy, top-of-page-1 rankings in reality.

The aircon row is the one real problem: the commercial page and its own blog guide are both drawing similar impression volume for the same query, but the blog wins the position and the commercial page — the one that should convert — sits at position 18.8.

What's Been Done About the Aircon Cannibalization

  1. Forensic diagnosis (deliverables/2026-05/organic-decline-forensic-diagnosis.md) — root cause dated to the March 2026 spam update's impact on commercial pages.
  2. Consolidation plan (deliverables/2026-05/service-consolidation-map.md) — full 51→18 page KEEP/MERGE/PRUNE analysis, redirect map, internal-linking fixes.
  3. Deploy-ready checklist (deliverables/2026-07/cannibalization-fix-deploy-checklist.md) — the 24+-URL redirect map and internal-link cleanup reduced to an execution sequence, including the aircon guide/service-page merge, the confirmed 410 list, and the blog pagination/category-slug fixes. Two of the three pre-production checks are now resolved by data (noindex re-scrape done; handyman/upholstery decided as hub, not 410); the Singlife/Supercare/Reminisce content sign-off still needs Bhavin directly.
  4. Access secured — WordPress ownership + staging, GBP, Google Ads viewer (note: Ads data access is still not live in our lake — see below), Tableau read access, per the July SOW.

Data-Quality Findings (surfaced this cycle, not cosmetic)

  1. The BigQuery ga4_sessions table disagrees with the live GA4 API by roughly 2-3x for this client's "Organic Search" channel (e.g. May: BQ table shows ~130K sessions, live API shows 47,823). The BQ table's inflated numbers concentrate on /home-cleaning-tiktok and /home-cleaning-lpshort — URLs that also carry large tiktok/cpc and facebook/cpc paid session volume the same month. Likely an ingestion-side attribution or aggregation problem in bigquery_ingest.py's GA4 path, not a real traffic event — should not be trusted until the pipeline is checked, and may affect other clients on the same ingestion script.
  2. GA4's tracked revenue and transaction counts are a fraction of Helpling's real order volume (see the GA4-vs-Customer-Insights section above) — most likely because most bookings complete via app, not the web checkout GA4 tracks. GA4 revenue figures should not be used as "the" organic or total revenue number for this client going forward.
  3. Helpling's own Customer Insights Google Sheet stopped populating the GMV column after June 5-7 (SEO-channel specifically from June 6; all-channel total from June 8) — orders kept flowing normally (100-137/day) through July 7, but GMV is exactly 0.0 from that point, confirmed at the source (re-ran the ingest and pulled the sheet live, it's blank there too). This needs to go back to whoever maintains that sheet on Helpling's side; June and July revenue reporting is blocked until it's fixed.
  4. Elderly Care shows zero SEO-channel GMV in 24/24 months — either a genuine attribution reality (this category converts through non-organic channels entirely) or a tracking gap. Worth a direct question to Helpling's data team.
  5. Google Ads data is not in the lake at all for this client (0 rows in gads_campaigns/gads_search_terms) — same Ads API access blocker noted in the Clavio data-gaps review; nothing to ingest until Bhavin grants access.
  6. Ahrefs' crawl-based traffic/position estimates diverged meaningfully from GSC ground truth this cycle — recommend defaulting to live GSC/GA4 pulls for this client's reporting going forward.
  7. app.helpling.com.sg's robots.txt has been returning a server error since mid-April 2026, confirmed live — 93%+ of the site's crawl volume runs through this subdomain. Full detail in urgent-technical-crawl-issues.md. This is a genuine, previously-undiscovered technical finding, not a reporting artifact — it needs a dev fix, not an SEO one.
  8. A toxic, currently-active backlink/negative-SEO campaign was found during the link-audit phase of this engagement (backlink-audit-disavow-candidates.md) — updated scale after cross-checking against GSC's own Top Linking Sites export: ~300 Ahrefs-detected spam domains, plus 818 raw IP addresses and 49 gibberish-domain entries found in Google's own data, none of which overlap with the Ahrefs-detected set — over 1,100 toxic/suspect sources combined, across at least three structurally distinct spam mechanisms. Checked GSC's Manual Actions and Security Issues: both show "No issues detected," meaning this hasn't triggered a formal Google penalty yet, but that doesn't rule out algorithmic impact.
  9. The GA4 property used for this client's reporting (306688855, "SG Helpling Live") is not Singapore-scoped — it's a global rollup. Full audit in technical-diagnostics-2026-07.md §2.6.2. It ingests Organic Search traffic from at least 23 distinct hostnames spanning Singapore, Germany, France, Switzerland, and Australia, plus admin/services subdomains for each. Through 2025 this didn't matter much (SG was 97-99% of the property's Organic Search sessions), but starting January 2026, www.helpling.de traffic appears in this property for the first time (from ~0 to 5,600 sessions in a single month, then 16,000-20,000/month from February onward) — the signature of a tracking/property merge, not organic growth. This inflated the property's blended totals enough to fully reverse the apparent trend direction: unfiltered, GA4 sessions looked like they grew every month from January through June; filtered to the true SG hostnames (www.helpling.com.sg + app.helpling.com.sg), they actually declined -31.2% from the January peak to the May low, matching the shape of the GSC clicks data in this same report. The traffic table above has been corrected; GA4 revenue/transaction figures are unaffected (confirmed identical with or without the hostname filter — ecommerce tracking is already SG-scoped). Every future GA4 pull for this client must include the hostName filter until Bhavin's team fixes the property configuration.

Recommendations for Next Period

  1. Escalate the app.helpling.com.sg robots.txt fix immediately — the fastest, cheapest, highest-confidence fix now on the table, and it's been silently limiting Google's crawl access to most of the site for ~12 weeks.
  2. Deploy the aircon merge specifically — a category with confirmed, accelerating real demand (YoY +50-104%) where SEO currently captures almost nothing, and a diagnosed, fixable cause (the commercial page losing to its own blog guide).
  3. Get sign-off on the disavow file for the active spam-link campaign — every day of delay adds more toxic domains to the eventual cleanup (backlink-audit-disavow-candidates.md).
  4. Resolve blog.helpling.com.sg — restore or formally retire it; 83% of Google's crawl requests to it currently 404.
  5. Double down on Move out Cleaning content/internal linking — the one category where organic is demonstrably working and improving month over month, corroborated by both GSC page-level clicks and Customer Insights GMV. Note it's recovering toward, not yet back to, 2025 levels — and note /maids (a related page) has recently reversed to -32% in the last 3 months, worth checking whether the same forces are involved.
  6. Flag the Cleaning and Elderly Care category trends to Bhavin as business-wide questions, not SEO deliverables — Cleaning's within-2026 softening happens across all channels (not organic-specific), and Elderly Care's YoY decline plus zero organic attribution puts it outside what content/technical SEO can move.
  7. Get Helpling's data team to explain the SEO-channel attribution model — specifically whether app-completed bookings that originated from organic web research get any organic credit. Needed both for the Elderly Care question and to properly interpret every GMV figure in this report.
  8. Escalate the Customer Insights sheet GMV gap to Bhavin's team — June/July revenue reporting is blocked until it's fixed.
  9. Flag the ga4_sessions BQ ingestion discrepancy internally — worth a look at bigquery_ingest.py's GA4 path before it's trusted again for any client's reporting.
  10. Re-check the aircon keyword specifically 2-4 weeks after the consolidation deploy to confirm the merge resolved the position gap, and re-check whether Air Conditioning's organic GMV share moved.
  11. Ask Bhavin directly whether Germany's GA4 tracking was merged into this property around December 2025/January 2026 — confirms or refutes the inferred mechanism behind Data-Quality Finding 9, and determines whether it's fixable (un-merge the properties) or has to be worked around indefinitely with hostname filters.

Open Items (internal, resolve before sending to Bhavin)