Skip to content

SEO/analytics audit 2026-09-07: calculate params, GA4 ranking, trust box - #3

Merged
appdevelopsk merged 1 commit into
mainfrom
audit/2026-09-07
Sep 7, 2026
Merged

SEO/analytics audit 2026-09-07: calculate params, GA4 ranking, trust box#3
appdevelopsk merged 1 commit into
mainfrom
audit/2026-09-07

Conversation

@appdevelopsk

Copy link
Copy Markdown
Owner

Summary

Follow-up to the 2026-09-07 audit (GSC impressions ≈ 4 for the whole site).

Technical SEO audit — findings (no code bugs found)

  • robots.txt / sitemap.xml (658 URLs, absolute, x-default) / canonical / hreflang / robots index,follow all verified live on toolify365.com.
  • Why impressions are ~0: deliberate pruning, not a bug — INDEXED_LOCALES (7 of 17 locales) in site/src/lib/i18n/locales.ts and the INDEXED_SLUGS allowlist (63 of 223 tools) in site/src/lib/tools/registry.ts mark everything else noindex and exclude it from the sitemap (see docs/RECOVERY_PRUNE_PLAN.md). Re-evaluate the allowlist around 2026-09-15; not reverted here.
  • /ar/privacy (1 session / 19 pageviews): no client-side redirect or reload loop (server component, no meta refresh / location.replace; ConsentBanner / PageViewTracker / middleware do not navigate). Most likely a bot or manual reloads. No change.

Changes

  • GA4 events: calculate, copy_result, preset_click now carry tool_slug, locale, category (plus legacy tool) via toParams() in site/src/lib/analytics/events.ts. Consent Mode v2 gating in emit() unchanged.
  • Ranking script: site/scripts/calculate-ranking.mjs (npm run report:calculate -- --days 28 --limit 50 [--by category] [--json]). Credentials from env (GA4_PROPERTY_ID + GOOGLE_APPLICATION_CREDENTIALS / GA4_SA_JSON / GA4_SA_EMAIL+GA4_SA_KEY). Not run against live GA4 (no credentials in this session).
  • Trust box (site/src/components/tools/TrustBox.tsx) on finance/health tools: about, not-advice, sources, last reviewed, methodology link. tool.trust.* strings added to all 17 locale files.
  • README: analytics section.

Action required after merge

  • GA4 Admin > Custom definitions: register event-scoped custom dimensions tool_slug, locale, category. The ranking script returns (not set) until this is done and data accumulates from the registration date.

Validation

  • npm run typecheck: pass.
  • npm run audit:i18n / npm run audit:seo: both killed by the 300 s timeout on the NAS mount (esbuild "service was stopped") before producing output. Manual key-parity check of all 17 message files against en.json passed (0 missing / 0 extra); audit:seo only inspects tool message files, which are untouched. Full build skipped (>5 min on NAS) — please rely on CI.

https://claude.ai/code/session_01AcLxcZtf35XLpenzFXTpUC

…t box

- GA4 tool events (calculate/copy_result/preset_click) now carry
  tool_slug, locale, category via shared toParams() in events.ts;
  ToolInteractionTracker/ToolFrame pass locale + category. Consent Mode
  gating in emit() unchanged.
- scripts/calculate-ranking.mjs: GA4 Data API report of calculate events
  by customEvent:tool_slug (last 28 days), SA credentials from env.
  Requires event-scoped custom dimensions tool_slug/locale/category to
  be registered in GA4 Admin (documented in README).
- TrustBox component for finance/health tools: about, not-advice,
  sources, last reviewed, methodology link; tool.trust strings added to
  all 17 locale message files.
- Technical SEO audit: no bugs found (robots/sitemap/canonical/hreflang
  OK on production); ~0 GSC impressions is the deliberate
  INDEXED_LOCALES/INDEXED_SLUGS pruning policy. /ar/privacy has no
  redirect/reload loop.

Claude-Session: https://claude.ai/code/session_01AcLxcZtf35XLpenzFXTpUC
@appdevelopsk
appdevelopsk merged commit 62ee0fe into main Sep 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant