> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tightknit.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Community Site Analytics

> Track visitors, pageviews, and traffic sources for your public community site.

export const PlanAvailability = ({feature = 'This feature', plan = 'enterprise', addon = false, plural = false, support = false, growth, momentum, enterprise, children}) => {
  const rank = {
    growth: 0,
    momentum: 1,
    enterprise: 2
  };
  const normalize = value => {
    if (value === true || value === 'included' || value === 'yes') {
      return 'included';
    }
    if (value === 'addon') {
      return 'addon';
    }
    return 'none';
  };
  const defaultStatus = p => {
    if (rank[p] < rank[plan]) {
      return 'none';
    }
    return addon ? 'addon' : 'included';
  };
  const overrides = {
    growth,
    momentum,
    enterprise
  };
  const status = p => overrides[p] === undefined ? defaultStatus(p) : normalize(overrides[p]);
  const plans = [{
    key: 'growth',
    label: 'Growth'
  }, {
    key: 'momentum',
    label: 'Momentum'
  }, {
    key: 'enterprise',
    label: 'Enterprise'
  }];
  const included = plans.filter(p => status(p.key) === 'included');
  const asAddon = plans.filter(p => status(p.key) === 'addon');
  const verb = plural ? 'are' : 'is';
  const srSentence = [feature, verb, 'available on:', included.map(p => `${p.label} plan`).join(', ') || 'no plans', asAddon.length > 0 ? `; as an add-on: ${asAddon.map(p => `${p.label} plan`).join(', ')}` : ''].join(' ');
  const statusCell = s => {
    if (s === 'included') {
      return <svg className="plan-availability-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M20 6 9 17l-5-5" />
        </svg>;
    }
    if (s === 'addon') {
      return <span className="plan-availability-addon">Add-on</span>;
    }
    return <span className="plan-availability-none">—</span>;
  };
  return <div className="plan-availability">
      <span className="plan-availability-sr">{srSentence}</span>
      <div className="plan-availability-content" aria-hidden="true">
        <div className="plan-availability-feature">{feature}</div>
        {(support || children) && <div className="plan-availability-body">
            {support && <>
                Contact <a href="mailto:support@tightknit.ai">Support</a> if you
                don't see this option or want to enable it for your community.
              </>}
            {children && <> {children}</>}
          </div>}
      </div>
      <div className="plan-availability-matrix" aria-hidden="true">
        {plans.map(p => <div className="plan-availability-plan" key={p.key}>
            <span className="plan-availability-plan-name">{p.label}</span>
            {statusCell(status(p.key))}
          </div>)}
      </div>
    </div>;
};

<PlanAvailability feature="Site analytics" plan="momentum" />

Site analytics measures **web traffic** to your public community site: how many people visit, which pages they land on, and where they came from. It is cookie-free and privacy-preserving, so it does not require a cookie consent banner.

Open it at **[Site > Analytics](https://studio.tightknit.ai/-/website/analytics)** in Studio.

<Note>
  Site analytics counts **web visitors**, including people who never join your Slack workspace. For member activity inside your community, use the [Overview dashboard](/studio/analytics).
</Note>

## Requirements

Two things must be true before the dashboard renders:

1. Your community site has a **custom domain**, for example `community.your-domain.com`. Analytics are not available on `.tightknit.community` subdomains. See [Domain and URL](/community-site/custom-domain).
2. Your plan includes site analytics.

If either is missing, the page explains which one and how to resolve it. [Contact support](/support/contact) to set up a custom domain and enable analytics.

## What you can see

The dashboard reports visitor counts, pageviews, the pages drawing the most traffic, referral sources, and how those numbers trend over time.

<Tip>
  Cross-reference this with [SEO and metadata](/community-site/seo-metadata). If search traffic is flat, confirm search engine discoverability is switched on before looking for other causes.
</Tip>

## Related pages

* **[Google Tag Manager](/community-site/integrations)** - add your own analytics or marketing tags alongside Plausible.
* **[SEO and metadata](/community-site/seo-metadata)** - control whether search engines index your site.
* **[Overview dashboard](/studio/analytics)** - member and engagement analytics.


## Related topics

- [Community Analytics Dashboard](/studio/analytics.md)
- [Domain and URL](/community-site/custom-domain.md)
- [Launch Your Community Site](/guides/launch-your-site.md)
- [Site Overview Settings](/community-site/general.md)
- [Getting Started](/content-resource-library/getting-started.md)
