Analytics
ViralToby provides comprehensive analytics to help you understand how your content performs across platforms. The analytics system has two layers: a live dashboard for detailed exploration, and persistent snapshots for historical tracking on your Home page.
Analytics Dashboard
Access the full analytics dashboard from the Analytics tab in the navigation. The dashboard fetches data directly from platform APIs (Instagram, Facebook, YouTube) and presents it across four tabs.
Filters
At the top of the Analytics page, you can narrow all data by:
- Brand — Show metrics for one brand or all brands combined.
- Platform — Filter by Instagram, Facebook, YouTube, or Threads. Only platforms you have connected will appear.
- Time Range — Choose from: Today, Last 48 hours, Last 7 days, Last 14 days, or Last 30 days.
Filter changes apply across all tabs simultaneously.
Overview Tab
The Overview tab gives you a high-level view of your account performance.
Stat Cards
Four cards appear at the top of the Overview tab, each with a growth badge showing change over the selected time range:
| Card | What it shows |
|---|---|
| Followers | Total follower count across all connected accounts, with growth delta |
| Views | Total content views in the selected period |
| Likes | Total likes in the selected period |
| Engagement Rate | Average engagement rate across your posts |
Trend Chart
A line chart showing your selected metric over time. Use the metric switcher above the chart to toggle between:
- Views
- Followers
- Likes
- Engagement Rate
Platform Breakdown
A horizontal proportional bar showing how each platform contributes to your total performance. Useful for understanding which platforms drive the most reach.
Per-Brand Accordion
Each brand appears in a collapsible row. Expand a brand to see:
- Sparkline charts for key metrics
- Per-platform metric breakdown
- Follower count and growth for that brand
Posts Tab
The Posts tab shows a detailed breakdown of your individual published posts.
Summary Cards
Seven cards appear at the top of the Posts tab, summarizing your selected period:
| Card | Description |
|---|---|
| Posts | Total posts published in the period |
| Views | Total views across all posts |
| Likes | Total likes |
| Comments | Total comments |
| Saves | Total saves |
| Shares | Total shares |
| Avg ER | Average engagement rate across posts |
Posts Table
Below the summary cards, a sortable table lists individual posts. Click any column header to sort. Columns include:
| Column | Description |
|---|---|
| Post title | The title or caption preview, with a thumbnail |
| Views | Total views on this post |
| Likes | Total likes |
| Comments | Total comments |
| Saves | Total saves |
| Shares | Total shares |
| ER% | Engagement rate as a percentage |
| Score | A 0–100 performance score rendered as a color-coded bar. Higher scores indicate stronger overall performance relative to your other posts. |
ViralToby only fetches detailed insights for the posts currently visible on your screen (up to 50 at a time). This keeps API usage efficient and avoids rate limiting.
Answers Tab
The Answers tab turns your posting history into actionable recommendations using AI-generated insights.
The Answers tab requires at least 3 published posts to generate meaningful insights. If you have fewer than 3 posts, this tab will show a prompt to publish more content first.
Best Time to Post
A bar chart grouped by hour of day (0–23) showing average engagement for posts published at each hour. The peak hour is highlighted. Use this to adjust your publishing schedule toward times when your audience is most active.
Best Day
A bar chart grouped by day of week showing average engagement per day. Helps you identify whether your audience is more active on weekdays or weekends.
Best Content Type
A horizontal bar chart comparing average performance across content types (Reels, Carousels, Threads). Shows which format your audience responds to most.
Best Posting Frequency
A recommendation for how often to post based on engagement patterns in your data. More frequent posting is not always better — the recommendation reflects the frequency at which your audience engagement remains strong.
Audience Tab
The Audience tab shows demographic data for your connected social accounts. Data is broken down per brand.
For each brand, you can see:
| Data Point | Description |
|---|---|
| Total followers | Current total follower count for the brand |
| Top demographic | The dominant gender + age group combination among your followers |
| Top location | The country or city with the highest follower concentration |
| Age distribution | A bar chart showing follower distribution across age groups |
| Gender split | A donut chart showing the male/female breakdown |
| Top cities | The top cities by follower count |
| Top countries | The top countries by follower count |
Demographic data requires an Instagram Business account with a minimum of 100 followers. If your account does not meet these requirements, or if the platform does not provide demographic data (YouTube, TikTok), this section will show a message explaining why data is unavailable.
Home Page Chart
The Home page displays a summary chart of your performance over time. Unlike the analytics dashboard (which fetches live from APIs), the Home chart uses persistent snapshots stored in the database.
How Snapshots Work
Every time analytics are refreshed (manually, hourly, or on platform connect), ViralToby captures a snapshot of your current metrics and stores it in the analytics_snapshots table:
| Field | Description |
|---|---|
| Followers | Your current total follower count at the time of capture |
| Views | Daily views for the snapshot date |
| Likes | Daily likes for the snapshot date |
Why Snapshots Matter
- Survive restarts -- Unlike the in-memory analytics cache, snapshots are stored in the database and persist across server restarts.
- Grow over time -- Instagram's API only provides 28 days of historical data, but snapshots accumulate indefinitely. After a few months, your Home chart shows trends that go well beyond the 28-day API limit.
- Instant load -- The Home chart reads from the database, not from external APIs. It loads instantly with zero external API calls.
First-Time Data
When you first connect a platform, ViralToby immediately fetches analytics and stores snapshots. This includes a backfill of up to 28 days of historical views from Instagram's API, so new users see meaningful data within seconds of connecting.
Toby Score
Toby Score is how Toby rates the performance of its own published content. This is separate from the analytics dashboard -- it is part of Toby's learning loop.
How Scoring Works
- After content is published and at least 48 hours have passed, Toby fetches engagement metrics from the platform API.
- Metrics (views, saves, shares, likes) are weighted to produce a performance score. Saves and shares are weighted more heavily than likes because they indicate deeper engagement.
- The score is stored with the content and used to update strategy scores via Thompson Sampling.
Scoring Weights
By default, Toby uses these engagement weights:
| Signal | Weight | Rationale |
|---|---|---|
| Saves | 3x | Strongest intent signal -- users want to return to this content |
| Shares | 3x | Distribution signal -- users think this is worth sharing |
| Likes | 0.2x | Weakest signal -- low-effort engagement |
You can customize these scoring weights in your Toby settings. If your niche values comments or shares differently, adjust the weights to match.
What Toby Scores
Toby only scores content it created (marked with created_by: toby). Manually created content is not included in Toby's learning data -- this prevents your manual posts from confusing Toby's strategy optimization.
Metrics are fetched once per post at scoring time and stored permanently. Toby does not re-fetch metrics for already-scored content, keeping API usage minimal.
Refresh Mechanism
Automatic Background Refresh
ViralToby refreshes analytics automatically every 2 hours via a backend scheduler. This job:
- Fetches fresh data from all connected platform APIs (or Zernio where applicable).
- Updates the in-memory analytics cache for the dashboard.
- Captures new snapshots for the Home chart.
- Also runs 45 seconds after server startup to warm the cache.
There is no manual Refresh button. The dashboard shows an "Updated X ago" indicator so you know when data was last fetched. You do not need to take any action.
Zernio-Connected Brands
Brands connected through Zernio get their follower count from the Zernio account data (available on all plans). Daily engagement metrics (views, likes, shares) require the Zernio Analytics add-on. Without the add-on, follower counts still display correctly but engagement breakdowns are unavailable.
On-Connect Refresh
When you first connect a new platform via OAuth, analytics are fetched immediately. You do not need to wait for the next 2-hour cycle.
Rate Limiting and API Usage
ViralToby is designed to stay well within platform API rate limits:
- Hourly analytics refresh -- Once per hour for all users, not per-minute polling.
- Per-post insights -- Only fetched for the visible page (max 50 posts at a time), using 10 concurrent threads for speed.
- Manual refresh cooldown -- 10-minute minimum between manual refreshes.
- One-time scoring -- Toby fetches post metrics once for scoring and never re-fetches them.
These measures ensure your analytics data stays fresh without risking API throttling or account restrictions.
How Analytics Connects to Toby's Learning
Analytics data flows into Toby's learning system in several ways:
Direct Performance Scoring
Published content metrics feed directly into strategy score updates. When Toby scores a post, it updates the Thompson Sampling distributions for every strategy dimension used in that content (personality, topic, hook, title format).
Trend Detection
The analytics data helps Toby detect when a strategy's effectiveness is declining (drift detection). If saves and shares drop over time for a previously successful strategy, Toby increases its explore ratio to find new winning approaches.
Anomaly Detection
Toby's Analyst agent identifies breakout content -- posts that significantly outperform the baseline. These anomalies receive extra attention: the Reflector writes detailed memories about what made them successful, and the Strategist factors them into future planning.
Audience Insights
Demographic data from the Audience tab (when available) can inform content strategy. If most of your followers are in a specific age group or location, Toby can adapt its content accordingly.
Analytics data updates in real-time in the ViralToby dashboard thanks to Supabase Realtime subscriptions. When new snapshots are captured or metrics are updated, the UI reflects the changes without requiring a page refresh.