Growth analytics · Carepatron
The original numbers are essentially correct, but they answer a narrower question than "what percent of signups click the side nav." Two things to keep in mind before acting on them.
New accounts created in the window split into very different groups. The side nav metric should only look at real practitioners, and within that, mostly the account owner (admin).
The left column is the original framing (percent of people who used the nav). The right column is the fairer one (percent of every new admin signup, including those who never explored).
| Section | % of nav users | % of all new admin signups |
|---|---|---|
| Templates | 52.5% | 39.3% |
| Clients | 56.8% | 38.5% |
| Calendar | 52.9% | 36.5% |
| Billing | 42.2% | 33.1% |
| Inbox | 45.2% | 30.5% |
| Workflows | 35.2% | 26.3% |
Note On the all-signups base the gaps shrink and the order shifts. Templates, Clients and Calendar all sit around 37 to 39 percent, and Billing moves ahead of Inbox. The wide spread in the original list was partly created by the nav-user denominator. The original 2 June pull (Clients 60, Calendar 52, Templates 49, Inbox 45, Billing 41, Workflows 34) reproduces within normal drift.
Exact breakdown against the clean admin base of 2,054. Each admin is counted once, so these rows add up to 100 percent.
| Sections reached | Admins | Share of admins |
|---|---|---|
| 0 (never used the nav) | 629 | 30.6% |
| Exactly 1 | 427 | 20.8% |
| Exactly 2 | 205 | 10.0% |
| Exactly 3 | 128 | 6.2% |
| 4 or more | 665 | 32.4% |
Shape The split is bimodal. About a third of admins never leave the landing screen, and another third go deep into 4 or more sections. The middle is thin, so new admins tend to either bounce or explore properly.
| Reached at least | Admins | Share of admins |
|---|---|---|
| 1 section | 1,425 | 69.4% |
| 2 sections | 998 | 48.6% |
| 3 sections | 793 | 38.6% |
| 4 sections | 665 | 32.4% |
Average sections reached per admin: 2.76. Among the 1,425 admins who used the nav at all, 3 or more sections is 56% (793). Across all roles it is 54 percent (979 of 1,814 nav users).
Looking at an older group of signups that has had time to convert, breadth of early nav exploration lines up almost perfectly with trial to paid conversion.
| Sections reached early | Signups | Converted to paid |
|---|---|---|
| 0 | 2,765 | 2.35% |
| 1 | 1,313 | 2.51% |
| 2 | 744 | 3.49% |
| 3 or more | 2,833 | 9.78% |
This is a correlation, not proof of cause. People who explore more are higher intent to begin with. Even so, it is the clearest argument for investing in the side nav. Getting new users to discover more of the product early goes hand in hand with revenue, and the steep step happens at 3 or more.
The first section a new admin lands on. Calendar looks like the default screen after login, so its share is partly "landed there" rather than a deliberate choice.
| Section | Share of admins who navigated |
|---|---|
| Calendar | 25.5% |
| Templates | 17.0% |
| Clients | 15.9% |
| Billing | 12.8% |
| Settings | 12.0% |
| Inbox | 6.8% |
| Staff | 4.6% |
| Workflows | 4.2% |
| Contacts | 1.3% |
The biggest opportunity is the admins who never leave the landing screen. Pulling them into a second and third section early is where the conversion upside sits.
Around 39 percent reach it and it is often the first deliberate click. Do not spend prime nav space introducing it.
Both sit near the bottom on every cut. Decide whether that is a discoverability problem to fix or a signal that they do not belong in primary nav for brand new users.
If breadth drives conversion, the high-value tools that are not top-level nav items today, such as AI Scribe, the booking link and intake, are candidates to surface.
Open any section below to check exactly how each number was produced.
Every number on this page is built from the Page navigation event in PostHog. That event fires on a route change and carries a navigateTo property, which is the destination URL. We take the first path segment of that URL as the section, for example app.carepatron.com/Clients/123 becomes Clients.
The event does not record which control triggered the navigation. A visit to Clients could come from the sidebar, an in-page link, clicking an appointment on the calendar, or a redirect. The from-URL is stored as origin, and across a sample it shows internal pages plus external referrers like Stripe and Zoom. So this is a measure of which sections a user reached, used as a proxy for discoverability. It is not a literal count of sidebar clicks.
Sidebar sections counted: Calendar, Clients, Inbox, Billing, Templates, Workflows, Contacts, Staff, Settings.
person.created_at is between 3 and 33 days ago, which is signups from 21 May to 20 June 2026. The 3-day floor means every account has had a full 3-day window observed.person.created_at between 17 and 75 days ago), with conversion counted within 90 days of signup.isTestUser = 0.isProviderUser = true. This removes 82,801 patients, leads and template visitors who are not relevant to the product side nav.role = admin, which is the account owner.Why account age uses person.created_at and not the register event: the register event misattributes due to person merging, so it is unreliable for age. PostHog HogQL also does not apply the test-account filter automatically, which is why isTestUser is set by hand on every query.
Three bases appear on this page. Nav users (1,814) are people who fired at least one navigation. All admin signups (2,054) include those who never explored. All practitioner signups (2,407) is the widest real base.
Builds a distinct set of sections per person, then counts how many reached each section and how many reached 2, 3 or 4 or more.
SELECT
count() AS navigators,
round(100.0*countIf(has(pages,'Clients'))/count(),1) AS Clients,
round(100.0*countIf(has(pages,'Calendar'))/count(),1) AS Calendar,
round(100.0*countIf(has(pages,'Templates'))/count(),1) AS Templates,
round(100.0*countIf(has(pages,'Inbox'))/count(),1) AS Inbox,
round(100.0*countIf(has(pages,'Billing'))/count(),1) AS Billing,
round(100.0*countIf(has(pages,'Workflows'))/count(),1) AS Workflows,
countIf(sidebar_n>=2) AS reach_2plus,
countIf(sidebar_n>=3) AS reach_3plus,
countIf(sidebar_n>=4) AS reach_4plus,
round(avg(sidebar_n),2) AS avg_sidebar_pages
FROM (
SELECT person_id, pages,
length(arrayFilter(x -> x IN
('Calendar','Clients','Inbox','Billing','Templates',
'Workflows','Contacts','Staff','Settings'), pages)) AS sidebar_n
FROM (
SELECT person_id,
groupUniqArray(extract(properties.navigateTo,
'://[^/]+/([A-Za-z]+)')) AS pages
FROM events
WHERE event='Page navigation'
AND person.created_at >= now() - INTERVAL 33 DAY
AND person.created_at <= now() - INTERVAL 3 DAY
AND timestamp >= person.created_at
AND timestamp <= person.created_at + INTERVAL 3 DAY
AND coalesce(properties.isTestUser,0)=0
GROUP BY person_id
)
)
Scopes to practitioners, flags admins, and reports reach against both the all-practitioner base and the admin-only base.
SELECT
count() AS provider_signups,
countIf(is_admin=1) AS admin_signups,
round(100.0*countIf(has(pages,'Clients'))/count(),1) AS Clients_allprov,
round(100.0*countIf(has(pages,'Templates'))/count(),1) AS Templates_allprov,
round(100.0*countIf(has(pages,'Clients') AND is_admin=1)
/countIf(is_admin=1),1) AS Clients_admin,
countIf(length(pages)=0 AND is_admin=1) AS admin_reach_0,
countIf(length(pages)>=3 AND is_admin=1) AS admin_reach_3plus,
round(avgIf(length(pages), is_admin=1),2) AS admin_avg_sidebar
FROM (
SELECT person_id,
maxIf(1, properties.role='admin') AS is_admin,
arrayFilter(x -> x IN
('Calendar','Clients','Inbox','Billing','Templates',
'Workflows','Contacts','Staff','Settings'),
groupUniqArrayIf(extract(properties.navigateTo,'://[^/]+/([A-Za-z]+)'),
event='Page navigation')) AS pages
FROM events
WHERE person.created_at >= now() - INTERVAL 33 DAY
AND person.created_at <= now() - INTERVAL 3 DAY
AND timestamp >= person.created_at
AND timestamp <= person.created_at + INTERVAL 3 DAY
AND coalesce(properties.isTestUser,0)=0
AND coalesce(properties.isProviderUser, false) = true
GROUP BY person_id
)
Uses an older cohort so accounts have had time to convert. Conversion is any create subscription or upgrade subscription within 90 days. Nav breadth is measured only in the first 3 days.
SELECT
multiIf(sidebar_n=0,'0',sidebar_n=1,'1',sidebar_n=2,'2','3+') AS nav_breadth,
count() AS signups,
countIf(converted=1) AS converters,
round(100.0*countIf(converted=1)/count(),2) AS conv_rate
FROM (
SELECT person_id,
length(arrayFilter(x -> x IN
('Calendar','Clients','Inbox','Billing','Templates',
'Workflows','Contacts','Staff','Settings'),
groupUniqArrayIf(extract(properties.navigateTo,'://[^/]+/([A-Za-z]+)'),
event='Page navigation'
AND timestamp <= person.created_at + INTERVAL 3 DAY))) AS sidebar_n,
maxIf(1, event IN ('create subscription','upgrade subscription')) AS converted
FROM events
WHERE person.created_at >= now() - INTERVAL 75 DAY
AND person.created_at <= now() - INTERVAL 17 DAY
AND timestamp >= person.created_at
AND timestamp <= person.created_at + INTERVAL 90 DAY
AND coalesce(properties.isTestUser,0)=0
AND coalesce(properties.isProviderUser, false) = true
GROUP BY person_id
)
GROUP BY nav_breadth ORDER BY nav_breadth
Source: Carepatron Production PostHog, project 10924. Prepared for the side nav review.