# Growomat — campaign management for Google, Microsoft, Reddit & Meta Ads # https://www.robotstxt.org/robotstxt.html # # Public, crawlable surface: /, /features, /features/autopilot, /how-it-works, # /pricing, /about, /developers, /support, /blog, # the per-feature pages under /features/ (/features/spend-forecast, # /features/budget-brake, /features/campaign-builder, /features/ad-copy, # /features/keyword-management, /features/conversion-tracking, # /features/performance-analytics, /features/campaign-sync, # /features/glass-box, /features/campaign-management, /features/executive-report, # /features/angles — each is one capability # with its own keyword, FAQ and structured data; the hub at /features links # them all), the per-platform pages # (/google-ads, /microsoft-ads, /reddit-ads, /meta-ads — root-level on purpose: # /platforms below is the authenticated app), the per-platform MCP pages # (/google-ads-mcp, /microsoft-ads-mcp, /reddit-ads-mcp, /meta-ads-mcp) # and the hub that parents them (/mcp), the glossary (/glossary), # the free link checker (/utm-checker), # the three vertical template pages (/shopify-store-ads, # /local-services-ads, /b2b-saas-ads), # the public executive-report specimen (/sample-report), # the five intent landing pages # (/what-agencies-charge, /free-campaign-design, /manage-your-own-ads, /google-ads-automation, /run-ads-from-claude, # /all-your-ads-in-one-place, /switch-your-ppc-tool — also root-level, and # also on purpose: each slug is the want somebody typed, which is the # strongest URL for the query it answers), the paid-traffic door for Claude # users (/claude — one button, quiet chrome, English only), and the legal pages. Everything below is the # authenticated app (crawlers only ever see a login redirect there) or an # internal endpoint. # # The intent pages and the MCP pages need no rule of their own — `Allow: /` # covers a root-level slug, and none of them is matched by a Disallow prefix # below. That is not luck and it is not left to be noticed in review: # src/premium/views/marketing/intentPages.test.js and # platformMcpPages.test.js fail the build if a slug ever collides with one of # these prefixes or with an app route. # # Root-level is also what keeps the MCP pages OUT of the /developers/ prefix # rule further down, which blocks any new developer sub-page by default — the trap # that made " mcp server" unanswerable in the first place: the only # URL on the site containing "mcp" was /developers/mcp, the signed-in portal # tab, which is disallowed on purpose. # # Every public page above is also served in German and French under /de and /fr # (English owns the unprefixed paths), EXCEPT the blog and the intent landing # pages, which publish English only and say so with hreflang. Those localised # URLs are ordinary crawlable ones — they need no Allow line because `Allow: /` # already covers them — and each self-canonicalises and carries reciprocal # hreflang. The Disallow list below is unprefixed on purpose: the authenticated # app has no localised URLs, so there is no /de/dashboard to exclude. # # IMPORTANT: never disallow /assets/ — Vite emits the JS/CSS bundles there and # blocking it stops crawlers from rendering this single-page app at all. The # in-app Asset Library route (/assets) is auth-gated, so hiding it here would # buy nothing and cost everything. User-agent: * Allow: / # Internal endpoints Disallow: /api/ Disallow: /auth/ Disallow: /admin/ Disallow: /_/ Disallow: /__/ # Cloudflare's own edge paths — ours only in the sense that they are served from # this hostname. Scrape Shield's Email Address Obfuscation rewrites every address # in an HTML response into an decoy that # only its injected script decodes, so a crawler that runs no JS follows a link # that 404s by design. It fires on /developers, /developers/rest-api and /support # (plus their /de and /fr twins) and on the legal pages. Blocking the prefix keeps # it out of broken-link audits. The cost, and it is a real one: renderers that # honour this also stop fetching /cdn-cgi/scripts/…/email-decode.min.js, so they # read "[email protected]" where the address should be. That is fine on the # developer pages, where the address is the fake you@example.com in a code sample, # and is the reason the actual fix is a Cloudflare Configuration Rule turning # obfuscation off for /developers rather than anything in this file. Disallow: /cdn-cgi/ # Authenticated app routes (login-gated; no indexable content) Disallow: /onboarding Disallow: /login Disallow: /dashboard Disallow: /profile Disallow: /settings Disallow: /campaigns Disallow: /adgroups Disallow: /ads Disallow: /keywords Disallow: /negative-keywords Disallow: /businesses Disallow: /sites Disallow: /new/ Disallow: /social Disallow: /budget Disallow: /budget-advisor Disallow: /recommendations Disallow: /autopilot Disallow: /analytics Disallow: /sync Disallow: /connections Disallow: /platforms Disallow: /integrations Disallow: /conversions Disallow: /import-export Disallow: /premium Disallow: /premium-success Disallow: /premium-cancel Disallow: /invitations Disallow: /ai # The bare /developers is the public developer hub (crawlable), and so are its # three public sub-pages — each is an advertised landing page with its own # title, description and canonical. The tab-qualified /developers/api|sdk|mcp # URLs are the signed-in in-app portal and stay out of the index. # Allow lines come first and are more specific, so they win the match. Allow: /developers/claude Allow: /developers/rest-api Allow: /developers/sdks Disallow: /developers/ # Per-code promo landings — thin, duplicate funnel pages Disallow: /promo/ # Per-token report share pages — private artifacts, never indexable Disallow: /r/ # Sitemap location Sitemap: https://growomat.com/sitemap.xml