Concepts

Get started

Concepts

Earned and owned, AI-checked relevance, footage matching, as-of dates, and the post shape every platform shares.

Earned and owned

A campaign starts with the accounts that are yours. Posts from those accounts are owned; posts from everyone else (fans, clip pages, creators, media) are earned. Sonder keeps the two apart in every total, so you can see how far a launch travelled beyond your own channels. In Sonder's dashboards, earned is always orange and owned always slate-blue.

Some accounts sit in between: talent you pay, clippers you brief. Campaign posts carry a category (owned, talent, clipper or ugc) so you can count them the way you report them.

AI-checked relevance

Keyword search finds candidates; it doesn't decide what counts. Each candidate post is read (its caption, what is said in it, the text on screen, the comments under it) and judged against the campaign's description. A fan edit that never names the show still counts; a post that uses the word for something else doesn't.

  • accepted: checked and about the campaign. Totals count these.
  • pending: not sure either way. A person decides, one by one or in bulk.
  • rejected: checked and not about the campaign. Kept, with a reason, in case you disagree.
  • Every decision carries a one-line reason (decisionShort), so you can audit it.

Footage matching

For shows and long-form video, Sonder matches clips back to the source: which of your videos a TikTok, Reel or Short was cut from, and which moment. Matching uses the clip's audio, its frames and what is said in it, against your own long-form YouTube videos. Matched moments add up to a clip heatmap: the parts of an episode people re-post most.

Footage matching runs on TikTok, Instagram and YouTube clips; Snapchat Spotlights match on speech only. See coverage.

As-of dates

Social numbers move. Every post carries asOf, the time its stats were read; campaign totals carry lastRefreshedAt. When you quote a number, quote its date. Datasets on sonderlabs.co.uk/data are frozen at an as-of date and say so.

Missing is not zero

Threads and Reddit don't publish views; Facebook only publishes them on videos; some Instagram posts hide them. In those cases views is null and viewsEstimated is true. Add them up as unknown, not as 0. Where a report estimates them (Reddit views from votes, for example), the estimate is labelled.

The post

One shape for every platform. Platform pages list what each field means there.

idstring
Sonder's id for the post.
platformstring
tiktok, instagram, youtube, facebook, x, threads, reddit or snapchat.
externalIdstring
The platform's own id for the post.
urlstring
The public link to the post.
creatorobject
handle, name and followers of the account that posted it. followers is null when the platform does not show it.
captionstring
The post's text.
hashtagsstring[]
Hashtags in the caption, lowercase, without the #.
postedAtstring
When it was posted (ISO 8601, UTC).
durationSecnumber
Video length in seconds; 0 for text and photo posts.
viewsnumber | null
Views as the platform shows them. null means the platform does not publish a count for this post: never read it as 0.
viewsEstimatedboolean
True when views is missing or not the platform's own count.
likesnumber
Likes, or the platform's equivalent (reactions, score, boosts: see each platform page).
commentsnumber
Comment or reply count.
sharesnumber
Shares, reshares or reposts, where the platform publishes them.
transcriptExcerptstring | null
The start of what is said in the video, where available.
onscreenTextstring | null
Text read from the video or its cover, pieces separated by | .
asOfstring
When these numbers were last read (ISO 8601, UTC). Every number is as of this time.

Campaign posts

A post inside a campaign adds what Sonder decided about it:

ownershipstring
owned (one of your accounts) or earned (anyone else).
statusstring
accepted (checked and about your campaign), pending (waiting for a person to decide), screening or rejected.
categorystring | null
For accounts you work with: owned, talent, clipper or ugc.
sentimentstring | null
positive, neutral or negative.
decisionShortstring
One line on why the post was accepted or rejected.

Public data only

Sonder APIs return public posts, public accounts and public comments: what anyone can see without signing in. Nothing needs access to anyone's account, and nothing private is returned. Audience figures are estimates about groups, never about a named person.

Concepts · Sonder APIs