Analytics
Internal performance dashboard
Only @bina.cx accounts are allowed
Loading…
Loading screenshot…
↗ Open Lander

📖 Documentation

BINA Analytics — team reference
Overview
Statuses
Lander score
Creative score
Metrics
Departments
Report
Glossary
Thresholds
Refresh schedule
How to Use

What is this?

One live, high-level read on every BINA landing page and client — classified by performance, refreshed automatically every 30 minutes (the header's Data chip shows how fresh it is). It answers: what's making money, what's leaking it, what to scale, and who to call — across all clients and departments.

How it works

A single-file web app (index.html) hosted on Vercel. A scheduled job rebuilds the dataset every 30 minutes and stores it in Vercel Blob; the app reads it from /api/data. No browser or manual export needed — everything is API-driven. The 🔔 in the header lists any feed that falls behind.

1
Reads the live client roster and every lead, appointment and sale from Bina One (the CRM source of truth), plus landing pages / LPIDs from Base44.
2
Pulls Meta Ads and Google Ads spend / clicks / CPC / CTR / CPM (creative metrics are rebuilt every 3 hours).
3
Classifies every lander, writes a dated snapshot to Vercel Blob (history is never deleted).

The tabs

OverviewPortfolio pulse: spend, leads, appointments, sales, latest wins, best and worst clients.
HeatmapEvery client against every funnel metric in one grid, colored against its own target or its peers.
CampaignsMeta and Google campaigns with spend, CRM leads, CPL and CPA; Scale & Pause is the action queue.
CreativesPer-ad ROI, Gallery, Compare, and Fatigue (ads wearing out against their own previous week).
LandersEvery landing page with its status and funnel drop-off; Metrics is the spreadsheet export.
ClientsThe roster (cards, table, large and flow views) and each client's deep dive, plus Follow-up, Calls, Coverage, Onboarding and Churned.
SalesClosed-won deals with each sale's journey, and the Market Playbook.
VisitsWhich clients are close enough to visit: each client's business address (Bina One, else its GHL location) and its straight-line miles from the office; visitable within the radius an admin sets (30 mi to start). The roster shows the same chip by every name; the Visitable only filter is on the Visits tab.
ReportPortfolio scorecard, funnel, CPA health and trends.
Suggestions · Angles · Notes · Ask AIThe action queue, ad angles by market, requests to the team, and questions in plain English.
🔔 AlertsEvery open problem the app detects: late or failed feeds, the daily accuracy audit, funnel anomalies, budget pacing, creative fatigue.

Data sources

SourceWhat it provides
Base44Landing pages + LPIDs, funnel step tracking, service areas.
Bina One (app.bina.cx)The source of truth: Meta and Google spend, clicks, creatives; the CRM's leads, appointments, sales, calls and call transcripts (sales refresh every 2 hours).
GHL (direct)A once-a-day backup copy of lead counts, used only for a client whose Bina One copy is empty (the 🔔 says so).
Analysis baselineFunnel step counts, pixel-event status, page↔ad alignment, creative notes.

The lander statuses

🏆
Winning
2+ metrics in the good range and no losing flag. Scale & replicate.
👁
Watch
No red flags but not proving itself — the gray zone.
🚨
Losing
2+ metrics critically bad. Fix or cut.
⚠
Insufficient
Under 3 leads — not enough data to judge yet. Not the same as Losing.

Insufficient, split three ways

The Landers tab breaks "insufficient" into actionable buckets instead of one pile:

BucketMeaning
⏳ RampingA few leads (1–9) — still building signal, may graduate to a verdict.
💀 DeadZero leads on live spend — dormant or wasting budget (sorted by spend).
🌿 GoogleRuns on Google, not Meta — low Meta volume is expected, judged separately.

Channels & organic landers

Landers now carry Meta AND Google spend — a Google lander with spend is judged on CPL/CPA exactly like Meta (see the channel filter). Only true organic landers (no ad spend at all) are judged on lead→appointment % (client follow-up); their status prefix is organic_*.

Lander classification

MetricGood ✅Gray zoneBad 🚨
LP Conv%≥ 5%3–4.9%< 3%
CPL≤ $80$81–$149≥ $150
CPA≤ $400$401–$999≥ $1,000
1
< 3 leads → Insufficient
2
2+ bad → Losing
3
2+ good → Winning
4
Everything else → Watch
CPA > $2,000 is ignored. That high almost always means the client isn't logging appointments in GHL — meaningless data, so it's dropped from the verdict.

Engagement score (0–100)

Each ad gets a grey Engagement badge from its Meta click metrics over 90 days. Every metric becomes a sub-score from −1 (its bad line) to +1 (its good line), and the weighted average is the score. Hover any creative card to see the breakdown. It rates clicks and views only. The keep-or-kill call on every creative card is Scale / Watch / Kill: the ROI table's cost-per-lead rule over the last 30 days.

MetricGoodBadWeight
CTR — clicks ÷ impressions≥ 1.5%≤ 0.8%2×
CPC — $ per click≤ $1.50≥ $3.002×
CPM — $ per 1,000 impr≤ $20≥ $501×
Hook — 3-sec views ÷ impr (video)≥ 30%≤ 15%1.5×
Hold — 25%-watched ÷ impr (video)≥ 25%≤ 12%1×
1
Each metric → sub-score −1…+1 (clamped).
2
Weighted average → normalized score, shown as 0–100.
3
The verdict chip does not use this score: Scale = CPL at or under the lander's target with 5+ CRM leads · Kill = CPL at twice the target or more (at least $150), or $300+ spend with under 2 leads · else Watch.
Under 500 impressions = not scored (not enough data). Images skip Hook/Hold and score on CTR/CPC/CPM only.

Every metric, in funnel order

StageMetricWhat it measuresBetter
Meta adsCTR% of impressions that clicked. Creative pull.↑
CPCCost per link click.↓
CPMCost per 1,000 impressions — cost of reach.↓
Hook / HoldVideo stopping power / retention (video ads).↑
Landing pageLP Conv%% of clicks that submitted the form. Page quality.↑
LeadsForm submissions in the window.↑
CPLSpend ÷ leads. Cost per lead.↓
Leads/$1kLeads per $1,000 spent — efficiency at a glance.↑
AppointmentsApptsBooked appointments from this lander's leads (GHL).↑
L→A%% of leads that became appointments. Lead quality / speed-to-lead.↑
CPASpend ÷ appointments. Cost per appointment.↓
The Metrics tab lays all of these out as one spreadsheet per lander (or rolled up by client / state / vertical), with CSV export. CPM & Hook & Hold are per-creative and live on the Creatives tab.

Who owns what

The Report routes every action to the team that can fix it.

DepartmentOwnsTypical action
🎨 CreativeAd performance — CTR, hook, CPC, fatigue.Refresh losing creatives; double down on winners.
🔨 FunnelLanding page + tracking — LP conv, pixel.Fix low-converting pages & broken CompleteRegistration pixels.
📞 AccountingClient outcomes — CPA, lead→appt, off-CRM.Call clients with high/rising CPA or slow follow-up.
📊 MediaBudget allocation — dead spend, overspend, scaling.Pause dead landers; shift budget to winners.

Who sees what

Everyone gets the same Overview. Media buyers see only their own clients on every tab, and admins choose each person's tabs and clients in Admin settings.

Report = analytics dashboard

The Report is now a pure reporting view — metrics, charts and trends, no to-do items (those live in the Suggestions tab). It answers "how is the whole business performing," anchored on the CPA ≤ $400 north-star.

SectionShows
📊 ScorecardSpend, Leads, Appts, Blended CPL, Blended CPA ★, landers/clients — each with the week-over-week delta.
🔽 Conversion funnelClicks → Leads → Appts with the drop-off % and cost at each stage — shows exactly where volume leaks.
🎯 CPA health% of spend producing ≤$400 appointments, plus the lander CPA distribution.
📈 By segmentSpend & CPA per media buyer / vertical / state / account manager (pivot selector).
🧹 Portfolio mixStatus donut, appointments by source (Meta vs Google), headline↔ad alignment.
🩺 Page & creative healthPixel-firing %, average CTR, misaligned pages, funnel-length distribution.
📉 TrendsWeekly spend / appointments / blended CPA lines from the daily history.
For "what to fix," see the Suggestions tab; to file a request, use Notes.

Glossary

LanderA landing page — the quiz/form funnel an ad sends traffic to.
LPIDLanding-page ID — the unique key that matches a lander to its Meta ads (via the adset name).
Funnel stepsHow many screens the funnel has before the contact form. Read from the page's own "Question X of N" counter.
CompleteRegistrationThe Meta pixel event for a form submit. If it's not firing, Meta optimizes blind even though leads arrive in GHL.
Off-CRM 📵A client whose leads aren't tracked in our GHL — so their lead→appt / CPA may be unreliable.
Channelmeta / google / both — all judged on CPL/CPA. Only organic (no ad spend) is judged on lead→appt. Filter by channel in the lander views.
Migration stateActivity flag: active (spending), stalled, stopped, or organic (Google).
BlendedA portfolio/client rollup computed from summed totals (e.g. total spend ÷ total leads), never an average of averages.
Target CPL / CPAThe client's goal cost per lead / appointment. Defaults when unset: CPL $75, CPA $400.

Lander thresholds

SettingDefaultControls
min_leads3Below this = Insufficient.
win_lp_conv / lose_lp_conv5% / 3%LP Conv% good / bad lines.
win_cpl / lose_cpl$80 / $150CPL good / bad lines.
win_cpa / lose_cpa$400 / $1,000CPA good / bad lines.
cpa_max_reliable$2,000CPA above this is ignored (tracking gap).
lose_flags_needed2Bad metrics needed for Losing.

Creative thresholds (CREATIVE_T)

MetricGood / BadWeight
CTR1.5% / 0.8%2×
CPC$1.50 / $3.002×
CPM$20 / $501×
Hook30% / 15%1.5×
Hold25% / 12%1×
Win / lose verdict cutoffs: normalized score ≥ +0.2 / ≤ −0.2.

Report defaults

CPL target falls back to $75 and CPA target to $400 when a client hasn't set one. At-risk = CPA >20% over target or ≥15% higher than last week.

Lander thresholds are editable live in ⚙ (session only). Permanent changes live in cron/baseline.json.

Refresh schedule

Scheduled jobs copy each source into Vercel Blob, and the data build runs every 30 minutes (on the hour and half hour). An open page checks for a newer build and loads it by itself. The table below is the live schedule from the app's own feed list, with each feed's last good update.

A feed turns amber once it misses a run and red after two; the 🔔 lists it with a link to the screen it affects.

The tabs

OverviewRole-based overview (COO / Account Mgr / Media / Tech).
MetricsFull per-lander spreadsheet, groupable + CSV export.
Creatives / AlignmentAd-level scores; page↔ad side-by-side.
LandersEvery lander grouped by status (cards / list / compact).
ReportAnalytics dashboard — funnel, CPA health, per-segment performance, trends.
SuggestionsPrioritized "fix this ASAP" list — kill / fix / rebuild / call / scale.
NotesFile a fix / edit / add ticket for the team.
Ask Bina OneAsk anything — clients, campaigns, leads, calls; answers come from Bina One.

Tips

  • Toggle light / dark theme from the sidebar.
  • ⌘K opens the quick command palette.
  • Most tables export to CSV; search matches URL, client, ZIP, or area.
  • Thresholds ⚙ reclassify everything instantly (session-only).

Questions?

Ping Itai — he owns this dashboard and the GHL automations.