Layers

Social Analytics

Engagement, reach, and organic scoring — what's measured, where it shows up, what to act on.

View as Markdown

Social analytics surface in two main places:

  1. Project Dashboard — high-level KPIs.
  2. Live / Scheduled posts views under /project/{projectId}/content — per-post metrics with a detail panel per post.

Metrics collected

Metrics are stored on platform_post_metrics and the latest snapshot on platform_post_metrics_latest. What's fetched depends on media type:

Instagram Reels — likes, comments, shares, saved, reach, total_interactions, views, average watch time, total view time, skip rate.

Instagram Feed (image/carousel) — likes, comments, shares, saved, reach, total_interactions, views, follows, profile_visits, profile_activity.

Instagram Stories — reach, shares, total_interactions, views, follows, profile_visits, navigation, replies.

TikTok — view_count, like_count, comment_count, share_count, plus engagement-over-time series.

Sourcing

  • Instagram — Instagram Graph API for OAuth accounts; the SIFT API for external / UGC accounts where we don't hold a token.
  • TikTok — TikTok Business API for OAuth accounts; SIFT for external accounts.

No other platforms are wired up. If a post's platform is not instagram or tiktok, Layers does not collect metrics for it.

Refresh cadence

Three global schedules drive refresh, working across stale platform accounts:

  • Quick sync — every 5 minutes. OAuth path hits page 1 of the platform API; SIFT path kicks off an async scrape.
  • Periodic posts sync — every 30 minutes.
  • Full sync — every 20 minutes. Paginates the full post list and detects deletions for OAuth accounts.

Engagement breakdown & trend charts

The dashboard shows an engagement-mix breakdown per post and trend curves for common metrics. Content detail panels surface per-post metrics plus generation audit data (prompt used, influencer, media source).

Organic score

Each ads_content row (one per content_container or platform_post) has an organic_score (0–10). See Organic scoring for the formula.

Ad-eligibility

Ad-eligibility is controlled by project_ads_content.override:

  • organic_score >= 4.0 — eligible by default.
  • override = 'include' — always eligible, even below threshold.
  • override = 'exclude' — never eligible, regardless of score.

Scoring runs every 6 hours.

Export

CSV export is available from the filtered posts view. There is no built-in scheduled-export feature today.

On this page