Queryless Proxy Strategy (/queryless)

This document defines DataHub's integration policy for proxied Queryless pages.

Goals

  • Keep Queryless reachable at datahub.io/queryless.
  • Preserve login reliability for Queryless auth flows.
  • Keep attribution/analytics unified from DataHub entry points.
  • Prevent SEO duplication between proxied app subpaths and Queryless origin.

Routing

  • middleware.ts rewrites /queryless and /queryless/* to https://querylessai.com.
  • Forwarded headers are explicitly set on proxied requests:
    • X-Forwarded-Host
    • X-Forwarded-Proto
    • X-Forwarded-For (pass-through when present)
  • Auth-related routes are explicitly redirected to Queryless origin:
    • /queryless/api/auth/:path* -> https://querylessai.com/api/auth/:path*
    • /queryless/auth/:path* -> https://querylessai.com/auth/:path*
    • /queryless/login -> https://querylessai.com/login
    • /queryless/signup -> https://querylessai.com/signup

Reason: cross-domain cookie behavior is brittle with pure proxying; auth routes are safer on origin.

Analytics Attribution

  • All DataHub-owned Queryless links use buildQuerylessHref(...) from lib/front/queryless.ts.
  • Default UTM parameters:
    • utm_source=datahub.io
    • utm_medium=referral
    • utm_campaign=datahub_ai
  • Campaign can be overridden per placement (e.g. banner).
  • First-party click events are emitted as queryless_click from key placements (nav, dropdowns, and top banners). UTMs remain secondary attribution.

Canonical / Indexing Policy

  • /queryless sets canonical link header to https://datahub.io/queryless.
  • /queryless/:path* sets X-Robots-Tag: noindex, follow.

Reason: keep the main integrated entrypoint indexable while avoiding duplicate indexing of proxied app internals.

Cross-Repo Action (Queryless Site)

To make canonical ownership explicit, update Queryless homepage (querylessai.com) in the Queryless repo:

  • Either set canonical to https://datahub.io/queryless
  • Or set homepage to noindex

Do not allow both homepages to compete for the same intent.