# Files, Publishing & Analytics

Every file you upload or generate lives in one searchable library; one connection pushes your finished work to your social platforms; and a private, first-party analytics view shows how it all performs — three sections, side by side in your dashboard.

**On this page**

- [What these three sections do](#what-these-three-sections-do)
- [Where to find them](#where-to-find-them)
- [Files: your one library](#files-your-one-library)
  - [What lands in Files](#what-lands-in-files)
  - [Browse and filter](#browse-and-filter)
  - [Search in plain language](#search-in-plain-language)
  - [Preview and download](#preview-and-download)
  - [Delete a file](#delete-a-file)
  - [Collections: folders for your library](#collections-folders-for-your-library)
  - [Content credentials: proof of where a file came from](#content-credentials-proof-of-where-a-file-came-from)
- [Searching from Recent work](#searching-from-recent-work)
- [Publishing: post finished work to your platforms](#publishing-post-finished-work-to-your-platforms)
  - [Before you start](#before-you-start)
  - [Connect your account (one time)](#connect-your-account-one-time)
  - [Publish a post now](#publish-a-post-now)
  - [Schedule a post for later](#schedule-a-post-for-later)
  - [Your recent posts](#your-recent-posts)
  - [Disconnect](#disconnect)
  - [Publishing from Auto-Clips](#publishing-from-auto-clips)
  - [Publishing from automations](#publishing-from-automations)
- [Analytics: your first-party numbers](#analytics-your-first-party-numbers)
  - [What you see](#what-you-see)
  - [Whose numbers you see](#whose-numbers-you-see)
  - [Privacy, plainly](#privacy-plainly)
- [Tips](#tips)
- [Troubleshooting](#troubleshooting)
- [Related pages](#related-pages)

---

## What these three sections do

CoreReflex treats the life of a file as one journey: it gets **made** (uploaded or generated), it gets **found** (browsed, filtered, searched, organized), it gets **shipped** (published to your social platforms), and then you **see how things perform** (analytics). Three dashboard sections cover that journey after the making:

| Section | What it's for |
|---------|---------------|
| **Files** | The single repository for everything your workspace has uploaded or generated — browse, search in plain language, preview, download, organize into collections, verify provenance, and delete. |
| **Publishing** | Connect your social accounts once, then push finished renders and assets to Facebook, Instagram, LinkedIn, X, Google Business, and TikTok — now or on a schedule — and see what you've posted. |
| **Analytics** | A built-in, first-party summary of activity — page views, sign-ups, tagged clicks — with no third-party trackers involved by default. |

Everything is scoped to your **workspace**: your team shares one library and one publishing connection, and nothing leaks across workspaces.

## Where to find them

All three live in the top navigation of your dashboard at [corereflex.com](https://corereflex.com):

- **Create → Files** — the file library. (**Create → Recent work** is the visual feed of your generations, which shares the same plain-language search.)
- **Distribute → Publishing** — the social publishing section.
- **Distribute → Analytics** — the analytics summary.

That placement is deliberate: Files sits with the tools that make things, and Publishing and Analytics sit with the tools that ship them — right next to **Client ops** if your workspace is on Pro (see [Client Operations](client-operations.md)).

---

## Files: your one library

Files is the answer to "where did that go?" — one list over **everything your workspace owns**, whatever made it.

### What lands in Files

Files shows every stored object in your workspace, tagged by what created it:

- **Uploads** — footage, images, audio, and documents you bring in yourself (uploads through the studio land here automatically).
- **Generations** — AI-made video clips, images, music, and voiceover.
- **Renders** — finished MP4 masters baked from your timelines.
- **Everything else the studios produce** — audio bounces, exports, logos, brand assets, and so on.

Each row shows a small preview, the file name, what kind of file it is, its size, and — for generated media — a snippet of the prompt that made it. The header under the **Files** title counts what's currently listed. The list shows your newest files first, up to 60 at a time — use the filters and search below to narrow a large library.

There's nothing to set up. If your list is empty, the page says so plainly: *"Uploads and generations land here automatically."*

### Browse and filter

1. Open **Create → Files** from the dashboard's top navigation.
2. Use the **filter chips** above the list to narrow by file type: **All**, **Video**, **Image**, **Audio**, **Docs** (Docs is everything that isn't video, image, or audio). Click a chip and the list reloads instantly.
3. Use the **collection dropdown** (next to the chips) to look inside one of your collections — more on those [below](#collections-folders-for-your-library).

### Search in plain language

The search box at the top of Files understands **meaning**, not just exact words. Describe what's *in* the media — the way you'd describe it to a person:

1. Click into the search box.
2. Type something like *"sunset drone shot over water"* or *"close-up of hands typing"*.
3. Pause — results update on their own a moment after you stop typing. No search button needed.
4. Clear the box to get the full list back.

Two things to know:

- **Search matches your generated media by what it's about.** Every generation remembers what it was made from, and the search ranks your library against your description. A plain upload that was never generated from a description may not surface in search results — use the type chips and collections to find those.
- **Search respects your collection.** If you've picked a collection in the dropdown, the search looks *only inside that collection* — nothing outside it sneaks into the results.

If you see *"Search is warming up"*, the plain-language search is briefly unavailable — wait a moment and try again. Browsing and filtering keep working in the meantime.

### Preview and download

- **Images** show a thumbnail right in the row; **videos** show a frame preview; audio and documents show a type icon.
- Click the **⤓ (download)** button on any row to download the file to your computer. Downloads are private to your workspace — only members of the workspace that owns a file can download it.

### Delete a file

Deleting is a deliberate **two-tap** action, so a stray click never costs you a file:

1. Click the **✕** button on the file's row. It changes to **"Sure?"**.
2. Click it again within a couple of seconds to confirm. The file is permanently removed from storage — and disappears from any collections it was in.

If you don't click the second time, the button quietly resets and nothing happens. There is no undo, so treat the second tap as final.

### Collections: folders for your library

Collections are named folders you create to organize the library — "Client X deliverables", "Approved hero shots", "Podcast episode 12". A file can live in any number of collections, and a collection never duplicates the file: it's the same file, organized.

**Create a collection and add a file to it:**

1. On any file's row, click the **＋◫ (add to collection)** button. A small menu opens.
2. Click an existing collection to add the file to it — or click **＋ New collection…**, type a name, and click **Create + add**. Done in one step.

**Look inside a collection:**

1. Open the **collection dropdown** next to the filter chips (it reads "All collections" by default and shows each collection with its file count).
2. Pick a collection. The list now shows only that collection's files — and the search box now searches only inside it.

**Remove a file from a collection:**

1. While viewing the collection, click the **−◫ (remove from this collection)** button on the file's row.
2. The file leaves the folder but stays safely in your library — removing from a collection never deletes anything.

**Delete a collection:**

1. Pick the collection in the dropdown. A **✕ Delete collection** button appears next to it.
2. Click it once — it changes to **"Sure? (assets kept)"** — then click again to confirm.
3. The folder is gone; **every file in it is kept** in your library.

Collection names are unique within your workspace — if you try to create a second collection with the same name, CoreReflex tells you one already exists.

### Content credentials: proof of where a file came from

Some files in your library carry a small badge next to their name: **✓ signed** or **✓ AI · signed**. That badge is a **CoreReflex content credential** — a signed provenance record that answers two questions honestly:

- **Was this AI-generated?** The credential carries an explicit AI-generated flag. It's set truthfully: an AI image generation is marked AI-generated, and a finished render is marked AI-generated only when the composition actually contains AI-generated media — a render of purely your own footage is not falsely flagged.
- **Is this still the same file?** Verification re-checks the credential against the actual stored bytes. If the file was ever swapped or tampered with, verification fails.

**To verify a file:**

1. Click the badge on the file's row.
2. CoreReflex checks the credential live against the stored file and shows the result on the badge: **✓ Verified**, **✕ Bytes changed** (the file no longer matches what was signed), or **✕ Unverified**. A notification also tells you what made the file and repeats the disclosure below.

**What this is — and is not.** Be clear-eyed about the claim: this is a **CoreReflex-signed** provenance record, verified by CoreReflex against the file CoreReflex stores. It is **not C2PA** — it does not embed an industry-standard manifest in the file itself, and it will **not** verify in Adobe Content Authenticity or other C2PA tools. CoreReflex says so right in the badge's own description rather than borrowing a standard it doesn't implement.

**Anyone can check.** Verification doesn't require an account — the check runs at a public verification address, so a client or reviewer you share a file with can confirm its credential without signing in. (The record they see never includes your prompt text — that stays private to you.) CoreReflex also publishes the public signing key, so a technical reviewer can verify a credential independently; see the developer documentation if you need that.

---

## Searching from Recent work

**Create → Recent work** is the visual feed of your workspace's generations — your clips and stills as playable tiles, newest first, including your private ones (marked with a **Private** badge). It has the same plain-language search as Files:

1. Open **Create → Recent work**.
2. Type a description into the search box at the top — *"sunset drone shot over water"* is the page's own suggestion.
3. The feed swaps to ranked matches from your library a moment after you stop typing; clear the box to bring the normal feed back.

Each tile also gives you a **⤓ download** button (your workspace's files only), and public tiles carry the community **▲/▼ vote** controls from the showcase. Private generations show no vote controls — they're yours alone.

---

## Publishing: post finished work to your platforms

Publishing turns "the render finished" into "it's live on our channels" without leaving CoreReflex. You connect once; after that, publishing a finished render or asset to your platforms is a caption, a link, and a click — now or scheduled for later.

CoreReflex publishes through **GoHighLevel**: you connect a GoHighLevel account that already has your social profiles linked, and CoreReflex relays posts through it to **Facebook, Instagram, LinkedIn, X, Google Business, and TikTok**. That's an integration, stated plainly — the connection, history, and scheduling live in CoreReflex; the platform delivery runs through your GoHighLevel account.

### Before you start

1. **A GoHighLevel account** with the social platforms you want already connected inside it. If a platform isn't linked there, CoreReflex can't post to it — connect it in GoHighLevel first.
2. **Its API key and Location ID.** You'll paste these once. Your API key is verified live before it's saved, stored encrypted, and never shown again — it does not travel back to your browser after you connect.
3. **Credits, if metering is on.** When your instance has billing metering enabled, each published or scheduled post draws **2 credits**. See [Plans & Billing](plans-and-billing.md).

### Connect your account (one time)

1. Open **Distribute → Publishing** in the dashboard.
2. You'll see the **"Connect your social accounts"** panel. Fill in:
   - **GoHighLevel API key** — pasted into a password-style field.
   - **Location ID** — the GoHighLevel location to publish from.
   - **Label** (optional) — a friendly name like "Acme Co." so your team knows which account this is.
3. Click **Connect account**. CoreReflex verifies the credentials with a live check *before* saving anything — a wrong key or location fails immediately with a clear message instead of failing silently at post time.
4. Once connected, the panel switches to **"Connected · GoHighLevel"**, shows your label and location, and lists how many platforms are connected.

One connection serves the whole workspace — anyone on your team publishes through it.

### Publish a post now

1. In **Distribute → Publishing** (connected), find the **"Publish a post"** panel.
2. **Media URL** — paste the web address of the finished file: a CoreReflex render or asset link, or any public media link.
3. **Caption** — write the post text.
4. **Schedule** — leave blank to publish immediately.
5. **Pick your platforms** — tick the checkboxes for the connected accounts you want this post to reach (each shows its name and platform). At least one is required.
6. Click **Publish**. The post relays to the selected platforms and appears in **Recent posts** below.

### Schedule a post for later

Same steps as above, with one change: set the **Schedule** date and time before clicking. The button reads **Scheduling…** and the post lands in Recent posts with a **scheduled** status and its go-live time. Delivery at the scheduled time is handled by your connected account.

### Your recent posts

The **Recent posts** panel lists everything your workspace has relayed, newest first. Each row shows the caption, when it was posted (or when it's scheduled for), and a status chip:

| Status | Meaning |
|--------|---------|
| **published** | Relayed for immediate publication. |
| **scheduled** | Queued to go live at the time shown. |
| **failed** | The relay didn't go through — the error message is shown right on the row. |
| **draft** | Recorded but not yet relayed. |

Failed posts are kept in the list on purpose: a failed relay is visible and auditable, never silently lost. (Per-post performance numbers — likes, views — aren't pulled back into this list today.)

### Disconnect

Click **Disconnect** in the connected panel's header. The stored credentials are removed immediately. Your post history stays; publishing stops until someone connects an account again.

### Publishing from Auto-Clips

Auto-Clips — the long-video-to-shorts pipeline — ends with a built-in **Distribute to socials** step: once a batch of shorts finishes, you pick the connected accounts, optionally set a start time and an every-N-hours cadence, and CoreReflex schedules each finished short one step after the previous one. A batch of five shorts on a 24-hour cadence becomes five days of daily content, hands-off. It uses the same connection and shows up in the same Recent posts history as manual publishing. Full walkthrough: [Auto-Clips](auto-clips.md).

### Publishing from automations

The automation engine (part of [Client Operations](client-operations.md), Pro) includes a **Publish to social** action: pair it with the **On render done** trigger and a finished render posts itself — the event carries the file's link, and the caption fills in from the details you set. Today that action is set up through the platform API rather than the dashboard's automation builder; once created, it appears and toggles in the Automations panel like any other automation. See [Client Operations → Automation](client-operations.md#automation) for the details.

---

## Analytics: your first-party numbers

Analytics is a built-in summary of activity across your CoreReflex presence — the marketing pages and the app — measured by CoreReflex itself. No third-party tracker is involved by default; the numbers come from CoreReflex's own privacy-first beacon and stay on your instance.

### What you see

Open **Distribute → Analytics**. The header shows your scope and window (for example *"workspace · last 30 days"*), and the view lays out:

- **Headline cards** — Page views (with session counts), Sign-ups, CTA clicks, and Sign-ins over the period.
- **Events per day** — a bar chart of daily activity; hover any bar for the day's count.
- **By event** — every recorded event type with its count and session count.
- **Top pages** — the most-viewed page paths.
- A **Refresh** button to re-pull the numbers on demand.

What counts as an event: a page view on each visit, a sign-up or sign-in, tagged marketing-page clicks (like "Start free"), and lead captures. If nothing has been recorded yet, the panel says so plainly — numbers populate as the site and app get traffic.

### Whose numbers you see

- **Workspace members** see events tied to **their own workspace** — your team's activity, nobody else's.
- **Platform administrators** see **global** traffic, including anonymous marketing-site visits from people who never signed in, plus a **Leads** list of captured marketing emails. The scope label at the top always tells you which view you're looking at.

### Privacy, plainly

The beacon is deliberately minimal: no advertising cookies, no cross-site tracking, and no personal information stored with events. Visitor addresses are kept only as a short scrambled fingerprint (enough to spot abuse, not enough to identify anyone), every recorded value is length-limited, and a per-tab session ID lives only for that browser tab's life. A separate, off-by-default option lets a platform operator additionally enable Google Analytics — if your instance hasn't turned that on, no data leaves for it.

---

## Tips

- **Name collections the way you bill.** A collection per client or per campaign turns Files into a delivery checklist — and because search respects the selected collection, "find the approved hero shot for client X" is one dropdown and one sentence.
- **Describe, don't remember.** When you can't recall what a clip was called, describe what happens in it. The plain-language search was built for exactly that moment.
- **Verify before you deliver.** Clicking the credential badge just before you send a file to a client is a two-second check that you're shipping the exact signed bytes — and it gives you an honest answer about the AI-generated flag if the client asks.
- **Schedule in batches.** Publishing five posts spaced a day apart beats posting five at once. For shorts, let Auto-Clips' cadence do the spacing for you.
- **Check Recent posts after scheduling.** A **failed** chip with its error message tells you immediately if a platform rejected something — much better than discovering an empty feed a week later.
- **Read Analytics weekly, not hourly.** The 30-day window with daily bars is built for spotting trends — a launch bump, a quiet week — not for real-time obsessing.

## Troubleshooting

- **A file I uploaded isn't showing in search results.** The plain-language search matches media by its description, and it works over your generated media. Plain uploads may not surface in it — find them with the type chips (Video / Image / Audio / Docs), the collection dropdown, or by scrolling the newest-first list.
- **"Search is warming up."** The plain-language search is briefly unavailable. Wait a moment and type again — filtering and browsing keep working in the meantime.
- **"No files yet."** Nothing has been uploaded or generated in this workspace yet — uploads and generations land here automatically as soon as they exist.
- **"A collection with that name already exists."** Collection names are unique per workspace. Pick another name, or use the existing collection.
- **The credential badge shows "✕ Bytes changed."** The stored file no longer matches what was signed — it has been replaced or altered since the credential was minted. Treat the credential as void for that file.
- **"Could not verify GoHighLevel connection."** The API key or Location ID is wrong, or the account isn't reachable. Re-check both in GoHighLevel and connect again — CoreReflex refuses to save credentials it can't verify.
- **"No platforms connected in GoHighLevel yet."** Your GoHighLevel account has no social profiles linked. Connect Facebook, Instagram, LinkedIn, X, Google Business, or TikTok *inside GoHighLevel*, then revisit Publishing — the platform list refreshes from the live connection.
- **"Stored social credentials could not be read… Reconnect the account."** The stored key can no longer be decrypted (this can follow a platform-level key change). Click Disconnect, then connect again with your API key.
- **A post shows "failed."** The error on the row says why — most often the media link wasn't publicly reachable or the platform rejected the content. Fix the cause and publish again; the failed row remains as an audit record.
- **Publishing says to select at least one account.** Tick at least one platform checkbox before clicking Publish.
- **"Too many requests" while publishing or searching.** Publishing, connecting, and search are rate-limited to keep the service healthy. Wait a minute and try again.
- **Analytics shows "No events yet."** No traffic has been recorded in your scope for the period. Numbers appear as the marketing site and app get visits, sign-ups, and tagged clicks.

## Related pages

- [Getting Started](getting-started.md) — sign in, find your way around the dashboard.
- [Auto-Clips](auto-clips.md) — long video to finished vertical shorts, with the built-in social distribution step.
- [Client Operations (Pro)](client-operations.md) — CRM, booking, tasks, and the automations that can publish renders for you.
- [Editing & Mastering](editing-and-mastering.md) — the timeline work that produces the renders you'll publish.
- [Plans & Billing](plans-and-billing.md) — credits, metering, and what each plan unlocks.
- [Brand Studio](brand-studio.md) — approved brand assets that cascade into your projects.
