Business Overview

B2B commercial activity summary
● DEMO 0 accounts

Business Overview

Last 30 days · vs previous period

ERP synced · 2m ago
Auto insights

Revenue Trend

Monthly volume — last 12 months

Top 10 Accounts

By total revenue

Tier Distribution

Classified by revenue

Consumables vs Equipment

Category mix

Top Brands

By total revenue
Business Insights — Auto-detected alerts & opportunities
MONTHLY REVENUE
AVG ORDER VALUE (AOV)
per order line
NEW ACCOUNTS
last 30 days
ORDERS NEEDING FOLLOW-UP
orders in last 14d · brand-level
Onboarding — New Accounts Pipeline
First 90 days · owned by onboarding lead (new hire)
Onboarding
accounts <90d
First Reorder
2nd order rate
Time to 2nd Order
median days
Account Management — Verticals & Size Tiers
AM focus on specific verticals & business size — owner: JJ
AM Book
accounts ≥90d
Tier A/B
priority verticals
At-Risk
>60d no order
Top 10 Accounts by Revenue
Revenue by City

Order Follow-ups — last 14 days

Recent orders with brand-level summary for CS & AM follow-up (NPS, reorder prompts, tech check-ins)
0 orders

Account Performance

Sorted by total revenue · 30 / 60 / 90 / 365-day windows
Plan ahead — HubSpot Custom Properties (Starter plan)
The HubSpot Starter plan allows custom properties on contacts / deals / companies and exposes them via the Private App API (polling ≤ 100 req / 10s). Confirmed fields to pre-wire so this hub can fill automatically: account_role (onboarding / AM), vertical_focus, business_size_tier, affiliate_source, holding_group, last_followup_at, followup_outcome. Create them in HubSpot first so the polling worker can map 1-to-1 without schema drift.

Revenue by Brand

All-time total

Brand Penetration

Unique accounts per brand

Brand Trend — Top 5

Last 12 months

Repeat Purchase Rate by Brand

% of accounts with 2+ orders

Brand Mix by Vertical

% of vertical revenue

Cross-Sell Opportunities

Accounts buying A but not B
Sales HUB — Pipeline & Deals
Two HubSpot pipelines · one manual B2B deals flow · one automated e-commerce flow
HubSpot · Demo
B2B Sales Pipeline (manual)
Deals created & managed by sales — only pipeline I maintain manually today
Open Deals
Weighted €
Win Rate
E-commerce Pipeline (automated)
Auto-created deals from every B2B-side purchase via HubSpot workflow — dated at order creation
Deals (MTD)
Revenue (MTD)
Avg Deal
B2B Deals — Kanban by Stage
Drag in HubSpot — mirrored here read-only
Close-Date Forecast (next 90d)
Reason Lost Breakdown
Planned Deal Properties (HubSpot custom) — CDC context
vertical_focus — Coffee Shop / Roaster / HoReCa / Chain / Brunch / Prosumer
equipment_vs_consumables — deal composition split
brands_in_deal — multi-select of Hario, Cafetto, Acaia, Mahlkönig, etc.
estimated_monthly_reorder — projected consumables run-rate (€)
source_channel — Inbound / Affiliate / Trade Show / Reactivation
affiliate_partner — links to Referrals hub
holding_group — parent chain / grupo
payment_terms — prepay / net15 / net30 / net45 / net60
demo_scheduled — Y/N, equipment demos (Moccamaster, Mahlkönig, etc.)
training_required — Y/N, barista / technical training commitment
Rationale: these map onto how CDC actually sells — equipment is consultative (demo + training), consumables are subscription-like (reorder cadence). Filtering the pipeline by vertical + brand + reorder projection tells us where to invest AM time vs onboarding time.

AI Chat — CDC Intelligence

No data loaded
Set up your Anthropic API key to use the chat — click ⚙ API key above.
Claude can make mistakes — verify important information before acting.

Dormant Accounts

Threshold
0 accounts
AccountTierVerticalLast Order Days InactiveRevenueBrands

Replenishment Opportunities — Consumables ≥45 days

0 accounts
AccountVerticalLast Consumable Days SinceProductRevenue
0 accounts
Cuenta Tier Vertical Group / Source Revenue Orders AOV Último pedido Estado Top marcas
Group / Source flags — chips shown per row: CHAIN part of a multi-location group or holding (e.g. Grupo Hostelero BCN). AFFILIATE brought in by a P2B affiliate — partner name shown on hover (e.g. Innefable). DIRECT inbound / self-sourced. Links to the Referrals HUB for ROI attribution.
Marketing HUB — HubSpot
Email marketing · forms & landing pages · workflows & lists
Demo
EMAILS SENT
all campaigns
AVG OPEN RATE
% open rate
AVG CTR
click-through rate
ACTIVE PIPELINE
total deals value
Campaign Performance — Opens vs Clicks
Contact Funnel
Pipeline by Stage (€)
Contact Activity — Views · Cart · Orders

Campaign Details

Sorted by date — latest campaigns

Browsed but Didn't Buy

HubSpot contacts who viewed products but didn't place a B2B order
REQUIERE TRACKING CODE

✨ Análisis IA — Email Marketing

Claude analyses campaigns and behaviour to surface priority actions
Google Analytics 4
Web traffic, acquisition sources and user behaviour
Load GA4 CSV
SESSIONS
GA4 total
USERS
GA4 total
Sessions & Users (last 90 days)
Traffic Sources
Top Landing Pages
New vs Returning
🐊 Crocodile Effect — Impressions vs Clicks gap
Jaws widening = AI Overviews / zero-click searches eating traffic. Critical for complementosdelcafe.com (D2C) in a rising-AI-SERP market.
Gap Δ (30d)
Status
WATCH
Tracks the divergence between organic impressions (GSC) and on-site sessions (GA4) on complementosdelcafe.com (D2C — the only property with GSC). A growing gap means users see us in results but don't click — commonly caused by AI Overview answers, featured snippets, or brand-only queries.
Coffee & Specialty Retail — Industry Benchmarks
Benchmarks tuned for complementosdelcafe.com (D2C equipment & consumables)
Add-to-cart rate
industry 6–10%
Checkout conversion
industry 1.5–2.5%
Consumables reorder rate
60-day window
Equipment AOV
grinders · brewers
Search → Product CTR
internal site search
Direct / brand share
vs paid / referral

✨ Análisis IA — Google Analytics 4

Claude analyses your GA4 data and identifies trends, opportunities and alerts
Google Search Console
Rendimiento orgánico — consultas, impresiones y posicionamiento
Load GSC CSV
TOTAL CLICKS
GSC total
IMPRESSIONS
GSC total
AVG CTR
click-through rate
AVG POSITION
organic ranking
Clicks & Impressions (last 90 days)
Devices
Top 10 Queries by Clicks
Top Countries

Query Performance Detail

Sorted by clicks — last 90 days
🤖 AI Crawlability & GEO Impact
How LLM & AI-Overview traffic touches complementosdelcafe.com (D2C, GSC-tracked) — bots visiting + SERP position stolen by AI answers
GEO · GSC + SERVER LOGS
AI Overview exposure
% queries with AIO shown
CTR on AIO queries
vs CTR baseline
Zero-click share
impressions w/o clicks
AI-bot hits (30d)
GPTBot · ClaudeBot · PerplexityBot
AI-bot crawl volume — last 30 days
Bot share
What to watch. If AIO exposure rises and CTR falls on the same queries, complementosdelcafe.com is being summarised away. Counter-moves: tighten product schema (Offer / Product / Review), add FAQ & HowTo markup on the PrestaShop theme, and keep robots.txt open to GPTBot, ClaudeBot, PerplexityBot, Google-Extended so the brand appears in AI answers. Bot hits are pulled from PrestaShop / host access logs — no extra tooling needed.

✨ Análisis IA — Search Console

Claude analyses queries, rankings and SEO opportunities for your B2B store
Operations HUB — Returns & Incidents
Returns on one tab · technical service on the other · credit status & total cost on both
Google Sheet · Demo
AMOUNT REFUNDED
€ refunded · all returns
RETURN RATE
% of revenue
AVG TIME TO RESOLVE
open → closed
CREDIT OPEN
customer refunds pending
BRAND COVERED
% cost absorbed by brand
Returns by Brand (€ refunded)
Most Returned Products

Returns Log

Status · credit status · brand coverage · total cost per case
0 returns
Operations HUB — Stock Alerts
Unified feed of out-of-stock pings — site form submissions + manually-added items
Google Sheet · Demo
OPEN ALERTS
waiting on restock
FROM SITE FORM
complementosdelcafe.com submissions
MANUALLY ADDED
CS / warehouse entries
OLDEST OPEN
days since request

Stock Alert Feed

0 alerts
CreatedProduct / SKUBrandCustomer SourceQtyStatusNotes
📋 Setting up the automation — Google Sheet → this dashboard
Step 1 — Google Sheet columns. Create a sheet with: created_at · product_name · sku · brand · customer_email · customer_name · qty_requested · source · status · notes. The source column must be exactly form or manual.
Step 2 — Site form (PrestaShop, both sites). Wire the "Notify when back in stock" module on complementosdelcafe.com and b2bcomplementosdelcafe.com to post to a Google Apps Script webhook with source=form and a site field. Use the built-in PrestaShop Stock Alert / Mail Alerts hook, or a small custom module.
Step 3 — Manual entries. CS / warehouse staff add rows directly on the sheet with source=manual. Use Data Validation on the status column: open · notified · restocked · closed.
Step 4 — Publish to the dashboard. File → Share → Publish to web as CSV. Paste the published CSV URL in Settings → Google Sheets → "Stock Alerts Sheet URL". The dashboard polls every 5 minutes.
Step 5 — Downstream automation (optional). Add an Apps Script trigger: on edit, if status changes to "restocked" → send templated email to customer_email and flip status to "notified". One-click close later.
Once ERP inventory is wired, this same table can auto-match by SKU and auto-trigger when inventory > 0 — the sheet becomes the single source of truth until then.
Operations HUB
Open & closed cases · time to resolve · status tracking
Demo
OPEN CASES
currently unresolved
CLOSED · LAST 30D
resolved cases
HIGH PRIORITY OPEN
requires attention
AVG TIME TO RESOLVE
hours · closed cases

Open Cases — SLA health

Within SLA · Breached · Closed last 30d

Cases by Supplier

Open + closed · all priorities

Issue Types

Courier · equipment · defect · calibration · late

Case Volume Trend

Opened vs closed · last 12 weeks

SLA Compliance by Priority

% of closed cases resolved within SLA target
Priority SLA target Met Compliance

Avg Resolution Time vs SLA

Actual hours vs SLA target, per priority

Cases by Brand

Which brands drive the most after-sale work

Top Accounts — case volume

Open cases only · who calls us the most

Open Cases

Click any row to open the case detail 0 cases
CaseAccountBrand / SupplierPriority / SLA IssueOpenedNext Action

Closed Cases Log

0 cases
ClosedCaseOrderIssue Type BrandSupplierPriorityResolution
Purchases HUB
Purchase orders, supplier reliability and cost trends
PURCHASES (YTD)
cost accumulated
ACTIVE POs
open purchase orders
AVG LEAD TIME
days · weighted by cost
ON-TIME RATE
last 60d deliveries

Purchases by Supplier

Cost accumulated · YTD

Purchases by Brand

Cost share · YTD

Cost Trend

Monthly spend · last 12 months

Estimated Margin by Brand

Sale price minus cost · last 90d

High-Demand Brands with Supply Risk

Fast-moving × late deliveries

Supplier Reliability

0 suppliers
SupplierPOs (YTD)CostLead Time (d) On-Time %Defect %Late DeliveriesReliability
📎 Drop PO PDF — Auto-Import
Drop the supplier PO PDF. Claude extracts lines → brand, SKU, qty, cost, ETA, carrier — merges into the Purchase Orders table below.

Purchase Orders — open & incoming

0 POs
POSupplierBrandItemsCost OrderedETACarrierTracking StatusNext Follow-up
Purchasing Manager — scheduled follow-ups
Auto-created 3 / 7 / 14 days before ETA · also on brand "no-reply" streaks
Carrier Performance — on-time vs delay
DB Schenker (pallets) · UPS · DHL · manual pickups
Built for the whole team. CS reps can search any PO by brand / SKU / supplier above to answer "when is this coming?" without pinging the purchasing manager. The manager closes the loop by tagging Confirmed · Shipped · Delayed, uploading the supplier PDF (auto-imports items + ETA), and adding tracking numbers per carrier (DB Schenker, UPS, DHL, manual pickup). The old Teams card lives on — this is the structured layer on top.
Referrals HUB — Partners & Commissions
Google Sheets back-end · monthly partner report → pre-tax order total × agreement rate
Google Sheet · Demo
💬 Commission Report Intake
Drop the monthly supplier Excel here. It matches orders → affiliates → agreements and computes commissions on pre-tax totals automatically.
Ready. Expected columns: order_ref · account · pre_tax_total · affiliate_code · period. Drop an Excel or paste a conversation below — the chat will ask follow-ups if anything is missing.
Channel comparison — D2C vs B2B
D2C Affiliates
Revenue
Commission
Partners
B2B Affiliates
Revenue
Commission
Partners
REFERRED REVENUE
YTD · all partners
COMMISSIONS DUE
unpaid balance
COMMISSIONS PAID
YTD · closed payments
ACTIVE PARTNERS
with sales this year

Top Partners by Sales Generated

YTD · referred revenue

ROI by Partner

Sales ÷ commissions paid

Commissions Ledger

0 rows
PartnerReferred AccountRatePeriod SalesCommissionStatusAgreement

Payout Alerts

Missing payouts, duplicates and mismatches

Commission Mix by Agreement Type

YTD · commission-weighted

Agreements Ledger

All signed affiliate / partner agreements — used to auto-calculate commissions
0 agreements
PartnerCodeTypeRate BaseStartEndStatusDoc
Sample row — Innefable (family affiliate) · code INN-2025 · %-of-pre-tax · base: order total ex VAT · drop the signed PDF to auto-extract.
Shared tool, not a silo. CS reps can look up any affiliate-sourced account here (chip says AFFILIATE) to answer partner questions. Monthly flow: upload Excel → reconcile against agreements → approve → export PDF → send to each partner. No next-step tracking, no deal management — just clean monthly reporting.
Admin HUB — Data Control
Sync freshness, data quality and pending cleanup
SOURCES HEALTHY
of 0 sources
QUALITY ISSUES
open records
DUPLICATES
detected records
UNMAPPED
brands · categories · accounts

Data Source Sync Status

0 sources
SourceTypeLast SyncCadence Rows (last run)RejectedDurationStatus

Data Quality Issues

0
TypeSourceCountSeverity

Pending Cleanup Tasks

0
TaskOwnerDuePriority

Import Error Log

0 errors
WhenSourceFile / Endpoint Row / RefErrorStatus

ERP Import

Drop your ERP export here. The dashboard automatically filters B2B series and discards the rest.

No ERP data
B2B Series (comma-separated)

📂 Drop your ERP file here or click to select

CSV · Excel export · any comma-delimited format

Google Analytics 4 + Search Console

Direct OAuth connection — two GA4 properties (D2C + B2B), one GSC (D2C only). No CSV exports needed.

Not connected
Client ID (Google Cloud)
GA4 Property ID — D2C (complementosdelcafe.com)
GA4 Property ID — B2B (b2bcomplementosdelcafe.com)
GSC Site URL — D2C only
Note
Search Console is only configured for the D2C site. The B2B site is GA4-only (typical for account-gated B2B stores).
How to get your Client ID (10 min, one-time setup)
  1. Go to console.cloud.google.com → Create a new project
  2. Left menu → APIs & Services → Library → enable Google Analytics Data API and Google Search Console API
  3. Go to Credentials → Create credential → OAuth 2.0 Client ID
  4. Type: Web application · Authorized JS origins: https://cdc-intelligence-demo.netlify.app
  5. Copy the Client ID and paste it above

HubSpot CRM + Marketing (B2B only)

HubSpot is connected only to the B2B account (b2bcomplementosdelcafe.com). D2C customers are not in HubSpot. Private App token — campaigns, pipeline, contacts and browse behaviour.

Not connected
Private App Token
How to get your token (5 min)
  1. Go to your HubSpot portal → Settings → Integrations → Private Apps
  2. Create a new app → give it a name (e.g. CDC Dashboard)
  3. Minimum scopes: crm.objects.contacts.read · crm.objects.deals.read · marketing.email.read
  4. Copy the pat-eu1-… token and paste it above

AI Assistant — Anthropic API

Claude API key for the AI chat. Stored locally in your browser only.

Not configured
API Key