Automated checks flagged the following since the previous run.
Average engagement rate by day of week and hour block, last 30 days. Darker = better.
Who's actually following you. Pulled from platform-native insights.
Longer-window view to spot seasonality and true growth vs one-off spikes.
Compare any two date ranges within the last 90 days. Pick a preset or set custom dates.
| Platform | Period A | Period B | Delta | % |
|---|---|---|---|---|
| Combined |
Each period shown day-by-day, aligned to day-of-window (Day 1, Day 2…) so different-length periods can be compared visually.
visionplus.co.ke · Google Analytics 4
Which social platform actually drove people to the site. Requires outbound links to be UTM-tagged for accurate attribution.
| Platform | Sessions | Users | Engagement rate |
|---|---|---|---|
| No social-source sessions detected. Ensure outbound links use UTM tags (utm_source=facebook, etc.) | |||
CLTV · CAC · CSAT · NPS — the four numbers that tell you if the business is healthy.
Formula: Total revenue ÷ Total customers
· paid orders analyzed
· →
How customer lifetime value is spread across the base
Days since each customer's last order — where retention is winning or losing
Names anonymized for privacy — first name + last initial only. Email replaced with 6-char stable hash.
| # | Customer | Orders | Total spent | First order | Last order |
|---|---|---|---|---|---|
Each dot represents a monthly cohort. Higher = customers acquired that month had higher lifetime value.
Formula: Marketing spend ÷ New customers acquired
MARKETING_SPEND_MONTHLY_KES=<amount> to .env. We compute a blended CAC using WooCommerce customer-acquisition dates.
Formula: % respondents rating "satisfied" or higher
(5/5, 4-5/5, or 8+/10 depending on scale)
Formula: % Promoters (9-10) − % Detractors (0-6)
· Range: −100 to +100 · Above 50 = excellent
Run this command on the machine hosting the pipeline. It pulls fresh data from Facebook, Instagram, TikTok, Google Analytics, and WooCommerce, then republishes this dashboard. Takes ~10-15 minutes.