Live
→
Updated 6:00 PM
neironix
NYFA Operations · 172 days collected
LIVE Last update 6:00 PM
Ad efficiency · last 30d💡Cost per lead — two numbers:
• PAID ONLY = total ad spend / leads with UTM-tagged paid source (Google Ads / Meta). Shows real ROI of money spent. "—" means 0 paid-attributed leads (broken UTM tracking or all leads came via phone/walk-in).
• ALL LEADS = total ad spend / ALL leads. Muddied by walk-in / phone / direct — but useful as ceiling.

Verdict on the PAID CPL: below benchmark <$20 · at benchmark $20–50 · above benchmark >$50. Period filter applies. Sparkline shows lead volume per day.
PAID ONLY
$16
ALL LEADS
$11
cost per lead · below benchmark
$1528 spent·145 total · 94 paid
4 leads · 7d · peak 1
New clients · last 30d💡How many new people started training in the selected period.

Source: MindBody First Visit — every person whose first lesson fell in the period, whether or not they ever went through the CRM.

"N via CRM · M direct": via CRM = the person has a GHL contact (phone/email match); direct = booked straight in MindBody, so ad source is unknown.

Gym: from the MindBody tag; if missing, guessed from the coach ONLY when the coach works one gym (≈ on a gym filter). Coaches who work several gyms are never guessed — those people show as "no gym tag" under All until a partner tags them.

Cost per new client = ad spend ÷ all new clients (blended: includes direct and organic). Paid-only cost is the Ad efficiency card.
119
20 via CRM · 99 direct · 56 no gym tag
Cost per new client (all sources)$13
Paying members (all locations)💡Currently paying Members across all locations.

Definition (locked May 26): real-name MB profile + tagged location (CI/DT/LI/MU) + at least 1 visit. In NYFA's MB workflow, a unique real-name card is created ONLY when a client buys a Member package — so real-name = already past INTRO.

"X active · Y away 30+d" = how many visited recently vs how many drifted.

High confidence 🟢 — direct MB count. Tags can shift, but the underlying Member count is solid.

Reacts to location filter (Coney Island / DownTown / Long Island chip in top bar).
219
171 active · 48 away 30+d
avg tenure 35 months·4.2 visits/Member/mo
Retention · 30-day💡% of Members still active in the last 30 days.

Formula: active Members (visited ≤30d) / total Members × 100.

"Active" = visited in last 30 days — measured by max(MB Last Visit, latest past Schedule appointment). Booking a lesson counts as attendance by default (since coaches don't always check-in clients in MB).

"X at risk" = how many Members haven't visited in 30+ days but aren't fully Lost yet (still recoverable with a call).

Medium confidence 🟡 — reliable when partners tag locations consistently. See Retention deep-dive for full Active/Away/Lost breakdown.
78%
48 at risk · not in last 30d

Members status by locationlifetime totals · days since last visit💡Total Members per physical location (lifetime, not period-filtered) + Active/At-risk/Lost split.

Per location:
• Members number — canonical Members tagged to that location
• Active 🟢 — visited in last 30 days
• At-risk 🟡 — 30-60 days since last visit (recoverable with a call)
• Lost 🔴 — 60+ days gone

"Visited" includes any MB Schedule row in past — booking counts as visit by default, even without coach check-in.

If these per-location totals don't match the Hero "Paying Members" count, the gap = Members not yet tagged to a location. Partners tag clients as they see them, so the splits fill in over time.

Coney Island CI
96
members
67
Active
≤30d
2
At-risk
30-60d
27
Lost
60d+
DownTown Brooklyn DT
29
members
26
Active
≤30d
0
At-risk
30-60d
3
Lost
60d+
Long Island LI
94
members
78
Active
≤30d
1
At-risk
30-60d
15
Lost
60d+

Members at riskwin-back priority · follows top-bar location💡Two call-back windows — Members who stopped showing up but can still be won back:
• Away · 30–60 days 🟡 — recently slipped, easiest to recover with a call
• Slipping · 60–90 days 🔴 — about to be lost, last chance

Members gone more than 90 days are beyond win-back — shown only as a count footnote under Slipping (not a call row). That footnote + the 60–90 list together equal the LOST 60+ number in "Members status" above — so the two panels reconcile.

Each row: name · phone · last visit · location · lifetime visits. Sorted by days gone.

Follows the top-bar location filter (All / CI / DT / LI). "Visited" includes any booked Schedule lesson, even without coach check-in.

Away · 30–60 days

—

Slipping · 60–90 days

—

Untagged but trainingreal clients training w/o a location tag · tag them in MindBody💡Who is here: real-name clients with lessons in the last 60 days whose MindBody Referral Type (location) is empty.

Until a partner sets their location tag, these clients are invisible in all per-location numbers (members, lessons, retention by gym).

Suggested location = the gym where their coach usually teaches (with confidence %). Low-% coaches teach at multiple gyms — verify with the coach before tagging.

Client (no location tag)Lessons 30d / 60dSuggested location
Kuo, Alexander9178585068 · last lesson 2026-10-16 · coach Mokretsov, Misha3 / 3LI?? (53% — unknown, ask)
Pereira Garrido, Marina9176574114 · last lesson 2026-10-15 · coach Ponomarenko, Yaroslav3 / 3CI?? (52% — unknown, ask)
Chiang, Andrew3122854184 · last lesson 2026-09-23 · coach Danilov, Sergey2 / 2LI (90% — tag it)
Faucheux, Vilaiwan9176126977 · last lesson 2026-10-12 · coach Yettou, Camille2 / 2LI?? (57% — unknown, ask)
Yang, Alex9297895461 · last lesson 2026-08-29 · coach Mufel, Edward0 / 2CI? (80% — verify)
Sidorov, Timofey8325207375 · last lesson 2026-08-24 · coach Krasnianskyi, Kirill0 / 1LI (93% — tag it)

6 client(s) train but are invisible in per-location stats until a partner sets their Referral Type in MindBody. Suggestion = coach's usual gym (confidence %).

Retention deep-divemember tenure & survival · filterable by coach + location💡Top row — current status of all Members:
• Active = visited in last 30d · Away = 30–60d · Lost = 60+d · Total ever = all Members

"Trained for" funnel: how many Members actually trained at least that long — measured as their active span (first visit → most recent visit). Someone who quit after 2 weeks has a 14-day span and counts in none. A member training 8 months counts in 1+ month, 3+ months, 6+ months.

The funnel declines for two reasons: real drop-off, AND recent joiners who simply haven't had a year yet (e.g. someone who joined 3 months ago can't be in "1+ year"). So treat it as "how long members stay", not pass/fail. "Share of all" = that count ÷ total Members.

Coach filter: when active, Active / Away / Lost still measure whether the member is at NYFA at all (switching to a colleague is not lost — shown on a separate "↔ switched" line). Only "Trained for" switches to time spent with THIS coach.

Filter: Location follows top-bar filter

Member tenure & survival

how long Members stay
171
Active
≤30d
3
Away
30-60d
45
Lost
60+d
219
Total ever
all Members
Trained forMembersShare of all
1+ month203 of 219
93%
3+ months193 of 219
88%
6+ months172 of 219
79%
1+ year148 of 219
68%
Below 1+ month breakdown: 15 still in first month (healthy ramp)
Last 30 days:+15 joined−3 went quietnet +12churn 1.7%/mo

Lead funnel💡4-stage cohort funnel:
• New leads — ALL GHL contacts created in the selected period (any source: form, phone, walk-in)
• Booked — moved to INTRO Booked stage
• Attended — reached INTRO Attended stage
• Members — converted to Member stage

The stage with biggest % drop gets the red "the leak" flag. First drop (New leads → Booked) usually = leads created but not put in pipeline by Sasha.

Cohort = contacts with dateAdded in selected period. Period filter applies; custom date range also works.

145 leads → 9 member · last 30d
145
New leads
100%
13
Booked
−91%
the leak
11
Attended
−15%
9
Members
−18%
End-to-end
6.2%
leads → members
Lead → Booked
9.0%
13 booked of 145 leads
Cost per lead
$11
$1,528 spend / 145 leads
Cost per member
$170
9 members from cohort

▸Pipeline statewhere every opp is right now · matches GHL UI · click to expand💡Stages explained:
• New Lead — created in GHL, no contact yet
• Contacted / T1 / T2 / T3 — Sasha called/texted (1st, 2nd, 3rd touch)
• INTRO Booked — lead booked their first lesson
• INTRO Attended — came to first lesson
• Member — bought a Member package
• Rejected / No-Show / Lost — exit stages

Counts are lifetime — not filtered by date. Updates within an hour of any pipeline change in GHL.

CRM hygieneactive leads missing location or source · fix in GHL💡Who is here: opportunities in active pipeline stages (New Lead → INTRO Attended) whose contact is missing:
• location — the gym field (CI/DT/LI) on the GHL contact
• source — where they came from (Google/Facebook ads, form UTM, or the "How did you hear" field)

Without these, the lead is invisible in per-location funnels and ad attribution (CPL / cost-per-member). Fix the contact in GHL — the row disappears on the next hourly rebuild.

✅ Every active-stage lead has a location and a source.

Lead sourcessince April 27, 2026 · 145 leads💡Where each lead came from — classified by first attribution UTM tag:
• Google Ads — utm_source=google + paid medium
• Facebook / Instagram Ads — Meta paid traffic
• Direct / (none) — typed URL or no UTM
• Manual (CRM) — Sasha entered the lead by hand (usually phone calls)
• Other / untagged — UTM missing or doesn't match known sources

If Other > 50% a yellow tracking-gap alert shows — usually means UTM tags broke or form not passing source to GHL.

40.0%
13.8%
11.0%
10.3%
9.0%
8.3%
4.1%
2.1%
ChannelLeads% of total
Google5840.0%
Manual (CRM)2013.8%
Friend / Referral1611.0%
Google Ads1510.3%
Other139.0%
Instagram128.3%
Facebook64.1%
Facebook Ads32.1%

Ad spend by locationGoogle + Meta · last 30 days💡Ad performance by physical location (CI / DT / LI):
• Google / Meta spend — raw dollars from Google Ads + Meta Ads APIs (Marc's accounts)
• Leads per channel — GHL contacts with UTM tag matching that channel + location custom field
• CPL — total spend / total leads for that location

"Attention" pill appears when Google spend is >$50 with 0 leads = wasted budget. Audit targeting or landing page before next billing cycle.

Period filter applies. Custom date range uses pro-rata on closest bucket (7d/30d/90d/ALL).

Long Island · New Hyde Park LI
$127
total spend
Google
$127
3 leads
Meta
$0
3 leads
CPL: $21 · 6 total leads across both platforms
Brooklyn · Coney Island CI
$231
total spend
Google
$231
3 leads
Meta
$0
1 leads
CPL: $58 · 4 total leads across both platforms
Brooklyn · DownTown DT
$180
total spend
Google
$180
1 leads
Meta
$0
0 leads
CPL: $180 · 1 total leads across both platforms
Google Ads · channel
CPL
$103
CTR
2.28%
Clicks
1,055
Meta Ads · channel
CPL
—
CTR
0.00%
Clicks
0

Lessons by locationApr 27 – Oct 15 · 5421 lessons💡Where lessons happen + who teaches them:
• Total per location = every MB Schedule appointment, placed by the client's tagged location; if the client isn't tagged, it falls back to the coach's home location
• Coach breakdown = top 4 by lesson count · % = coach share of that location

Every booked lesson counts (no check-in filter); CLUB group sessions included, only TEST rows excluded.

If one coach >65% = "single point of failure" — losing them breaks the location.

Source: MB Schedule at-a-Glance. Period filter applies — 7d/30d/90d/All or custom dates.

Coney Island CI
1,818
40.9%
Anton
53729.5%
Yarik
46625.6%
Camille
29516.2%
Misha
24613.5%
Top: Anton 30% · second Yaroslav 26%.
DownTown Brooklyn DT
412
9.3%
Yarik
23256.3%
Nastya
12730.8%
Romaine
204.9%
Edward
133.2%
Yarik carries 56% of all DownTown Brooklyn lessons — single point of failure if he/she leaves.
Long Island LI
2,213
49.8%
Kirill
77234.9%
Sergey
64529.1%
Camille
40018.1%
Misha
29113.1%
Kirill carries 35% of all Long Island lessons — single point of failure if he/she leaves.
Data quality. 59% of active members (last 90d) tagged · 176 of 296 real-name active (last 90d) · raw API counts v7.0 · Night · 🩺 health