Skip to main content
The Analytics Dashboard provides comprehensive insights into creator performance, engagement metrics, and audience analytics. Track key metrics across all your TikTok creators in one centralized view.

Dashboard Overview

Access the dashboard at /creators to view all tracked creators:

Total Creators

Track the total number of creators across all platforms

Average Followers

Monitor aggregate follower counts and growth trends

Average Engagement

Track overall engagement rates across your creator portfolio

Key Metrics

The dashboard tracks essential performance metrics for each creator:

Profile Metrics

// From components/creators/browse-creators-tab.tsx
interface CreatorMetrics {
  username: string
  nickName: string
  followerCount: number
  posts30d: number        // Posts in last 30 days
  views30d: number        // Total views in last 30 days
  likes30d: number        // Total likes in last 30 days
  comments30d: number     // Total comments in last 30 days
  shares30d: number       // Total shares in last 30 days
  engagementRate: number  // Calculated engagement percentage
  verified: boolean
  lastUpdated: Date
}

Engagement Calculations

// From lib/services/tiktok-apify-service.ts
async getUserInsights(username: string): Promise<TikTokEngagementMetrics> {
  const profile = await this.getUserProfile(username)
  const videosResponse = await this.getUserVideos(username, 50)
  const videos = videosResponse.data

  // Calculate averages
  const averageLikes = videos.reduce((sum, v) => sum + v.stats.diggCount, 0) / videos.length
  const averageComments = videos.reduce((sum, v) => sum + v.stats.commentCount, 0) / videos.length
  const averageShares = videos.reduce((sum, v) => sum + v.stats.shareCount, 0) / videos.length
  const averageViews = videos.reduce((sum, v) => sum + v.stats.playCount, 0) / videos.length

  // Calculate engagement rate
  const engagementRate = profile.followerCount > 0
    ? ((averageLikes + averageComments + averageShares) / profile.followerCount) * 100
    : 0

  return {
    averageLikes,
    averageComments,
    averageShares,
    averageViews,
    engagementRate,
    viewToFollowerRatio: averageViews / profile.followerCount
  }
}

Data Table Features

The dashboard uses a powerful data table component:
// Interactive data table with sorting and filtering
<DataTable
  columns={tiktokColumns}
  data={creators}
  loading={isLoading}
  onRowSelectionChange={handleSelection}
  enableRowSelection={true}
/>

Table Capabilities

1

Sorting

Click any column header to sort creators by that metric. Supports ascending and descending order.
const handleSortingChange = (newSorting: any[]) => {
  const sort = newSorting[0]
  if (sort) {
    params.append('sortBy', sort.id)
    params.append('sortOrder', sort.desc ? 'desc' : 'asc')
  }
}
2

Filtering

Filter creators by:
  • Search query (username or name)
  • Category (content niche)
  • Follower range (min/max)
  • Verification status
3

Pagination

Large datasets are automatically paginated for performance. The system loads up to 10,000 creators per page.
4

Row Selection

Select multiple creators for bulk actions like export or status updates.

Search and Filters

The dashboard includes powerful search and filtering:
// Search input
<Input
  placeholder="Search creators..."
  value={searchQuery}
  onChange={(e) => setSearchQuery(e.target.value)}
/>

// Category filter
<Select value={categoryFilter} onValueChange={setCategoryFilter}>
  <SelectTrigger>
    <SelectValue placeholder="All categories" />
  </SelectTrigger>
  <SelectContent>
    <SelectItem value="all">All Categories</SelectItem>
    {categories.map(cat => (
      <SelectItem key={cat.value} value={cat.value}>
        {cat.value} ({cat.count})
      </SelectItem>
    ))}
  </SelectContent>
</Select>

// Follower range filter
<Input
  type="number"
  placeholder="Min followers"
  value={minFollowers || ''}
  onChange={(e) => setMinFollowers(parseInt(e.target.value))}
/>
<Input
  type="number"
  placeholder="Max followers"
  value={maxFollowers || ''}
  onChange={(e) => setMaxFollowers(parseInt(e.target.value))}
/>

Real-time Data Updates

The dashboard uses SWR for automatic data revalidation:
import useSWR from 'swr'

const { data, error, isLoading, mutate } = useSWR(
  swrKey,
  async () => {
    const response = await fetch(`/api/creators?${params}`)
    return response.json()
  },
  {
    revalidateOnFocus: false,
    dedupingInterval: 0,
  }
)

// Manual refresh
const handleRefresh = async () => {
  setIsRefreshing(true)
  await mutate()
  setIsRefreshing(false)
}

Creator Profiles

Click any creator to view their detailed profile page:

Profile Header

  • Profile picture
  • Username and display name
  • Verification badge
  • Platform badges
  • Total followers
  • Profile bio

Metrics Cards

Followers

Total follower count with growth indicators

Engagement Rate

Average engagement percentage

Avg Views

Average views per video

Post Frequency

Posts per week/month

Recent Content

View the creator’s recent posts with metrics:
// Recent content table
<VideoPerformanceTable videos={recentVideos} />
Each video shows:
  • Thumbnail
  • Caption/description
  • Views, likes, comments, shares
  • Post date
  • Engagement rate
  • Link to original video

Performance Analytics

The dashboard includes advanced analytics views:

Platform Distribution

<PieChart>
  <Pie
    data={platformData}
    dataKey="count"
    nameKey="platform"
    label={({ platform, count }) => `${platform}: ${count}`}
  />
</PieChart>
<LineChart data={engagementHistory}>
  <XAxis dataKey="date" />
  <YAxis />
  <Line type="monotone" dataKey="engagement" stroke="#10b981" />
  <Tooltip />
</LineChart>

Category Performance

<BarChart data={categoryData}>
  <XAxis dataKey="category" />
  <YAxis />
  <Bar dataKey="avgEngagement" fill="#3b82f6" />
  <Tooltip />
</BarChart>

Top Performers

View the highest-performing creators:
// From creator-analysis-dashboard.tsx
const topCreators = [...creators]
  .sort((a, b) => b.engagementRate - a.engagementRate)
  .slice(0, 10)

// Display top performers
{topCreators.map((creator, index) => (
  <div key={creator.id} className="flex items-center justify-between">
    <div className="flex items-center space-x-3">
      <div className="w-8 h-8 bg-blue-100 rounded-full">
        <span>#{index + 1}</span>
      </div>
      <div>
        <div className="font-semibold">{creator.name}</div>
        <div className="text-sm">{creator.platform} • {creator.category}</div>
      </div>
    </div>
    <div className="flex items-center space-x-4">
      <div>
        <div className="font-semibold">{formatNumber(creator.followers)}</div>
        <div className="text-sm">followers</div>
      </div>
      <div>
        <div className="font-semibold">{formatPercent(creator.engagementRate)}</div>
        <div className="text-sm">engagement</div>
      </div>
    </div>
  </div>
))}

Sync Status

Track when creator data was last updated:
// Sync status indicator
<SyncStatusIndicator 
  lastSync={creator.lastUpdated}
  status={creator.syncStatus}
/>
Status values:
  • Synced: Data is up to date
  • Syncing: Currently refreshing data
  • Stale: Data needs refresh
  • Error: Last sync failed

Export Functionality

Export creator data directly from the dashboard:
// Export button
<Button onClick={() => setShowExportDialog(true)}>
  <Download className="h-4 w-4 mr-2" />
  Export ({selectedRows.size})
</Button>

// Export dialog
<ExportDialog
  open={showExportDialog}
  onOpenChange={setShowExportDialog}
  creatorIds={Array.from(selectedRows)}
  onExportComplete={handleExportComplete}
/>
See Data Export for detailed export options.

Best Practices

Refresh creator data regularly to ensure metrics are up to date. Set up automated refresh schedules for active campaigns.
Large datasets (10,000+ creators) may take time to load. Use filters to narrow down the view for better performance.
Use the sort and filter features to quickly identify top performers or creators that need attention.

Creator Discovery

Discover new creators automatically

Data Export

Export creator data in multiple formats

Keyword Search

Search for specific creators

Build docs developers (and LLMs) love