Content: your content items, templates, CSV import and bulk scheduling
The Content list: what a content item is, its six statuses, New content item, + Add variant, templates, Import CSV and Bulk schedule import.
Content (/app/content) lists every content item in the workspace, newest first. A content item is one post idea with one version (a "variant") per platform, each with its own text, hashtags and media. Everything you send from Create, AI Studio, Campaigns or the Library's RSS feeds becomes a content item here. Every member with the View content task sees this page; changing things needs the Create task.
Step by step: start an item by hand
- Press New content item, type a Content title and press Create.
- On the new card, press + Add variant.
- Choose the platform in the Platform… list, fill Hashtags (comma separated) and Caption (required), then Save. Cancel closes the form.
- Press Open editor → (or the title) to generate more versions with AI, attach media and publish. See Editing a content item.
Fields and options
- Card — title, creation date, where it came from (
composer,manual,import,template,campaignorrss), a one-line hint about the next step, the status badge and every variant with its platform, text and hashtags. - Platform (in + Add variant) — required; a list of the platforms OmniBrand can publish to, for example Instagram, LinkedIn, Facebook or X. Messaging-only accounts (such as WhatsApp) are not in it.
- Load more — shows older items.
- Templates: row (only when you have templates) — click a template name to create a new draft item from it and open it; ✕ deletes the template. Templates are made with Save as template on an item's page.
- Import CSV — opens the import box (see below).
- Bulk schedule import — opens the bulk scheduling box (see below).
Content item statuses
- Draft — being prepared.
- In review — waiting for approval (set by Create when your workspace has an approval chain, by a client review link, or by hand).
- Approved — approved, ready to schedule.
- Scheduled — its posts have a time.
- Published — its posts went out.
- Archived — put away; final.
The item status is a label for the whole idea. Each account has its own post status, which is what actually controls publishing. See Post statuses.
Import CSV
- Press Import CSV.
- Paste rows in the form
title,brief,platform,scheduledAt. The header row is optional. Commas inside a field are not supported. At most 100 rows per import; the counter says "N rows ready (max 100 per import)." The platform column is required: the platform's key in lowercase, for exampleinstagram,facebook,linkedin,x,tiktok,youtube. - Optional: switch on AI-enrich captions & hashtags per row (uses AI credits) to have the AI write a caption and hashtags for each row from its title and brief.
- Press Import. The result says "Created N, failed M." and lists up to 10 rows with a problem, as "Row N: message".
Each row becomes a Draft item with one variant: the title is the item's title; the caption is the AI caption, or the brief if AI enrichment is off or fails; the platform is the variant's platform. scheduledAt is accepted but not used: those rows say "scheduledAt ignored - schedule after review".
Bulk schedule import
- Press Bulk schedule import.
- Press Download CSV template for a starter file with the header
account,caption,media,scheduledAt,platformOptions. - Fill one row per post. account is the connected account's name exactly as shown on the Accounts page, or its account id (use the id when two accounts share a name). caption is the post text, up to 10,000 characters; it may run over several lines if the field is in double quotes (spreadsheet programs save it that way). media is optional: a media asset id already in this workspace, or an
https://image URL to import. scheduledAt is optional and ISO-8601 (for example2026-10-01T14:00). A time without an offset is read in the workspace time zone (Settings, Workspace, Timezone) - not your browser's zone as on Create; add an offset such as+03:00to be exact. It must be in the future and within one year. Leave it blank to save a Draft instead of scheduling. platformOptions is optional JSON for that account, for example{"firstComment":"Link in bio"}- quote fields that contain a comma. - Press Choose file and pick the
.csvfile, then press Upload and schedule. - The rows go up 25 at a time. A bar under the button shows "Imported N of M rows…"; keep the page open until it finishes. If the connection drops, the page tries each group again by itself.
- Each row runs through the exact same checks a single post from Create does: an unknown account, a caption and media both missing, or text a platform rejects fails only that row, and the rest of the batch still runs. The result says "Created N, failed M." and lists up to 10 failed rows as "Row N: message" (N is the row's place in your file) - fix those rows in the file and upload a file with just them.
If the upload stops part-way (the connection is lost or the page shows an error), the message says how many rows went through, for example "40 of 120 rows went through. Press Upload and schedule again to finish - rows already created are not created twice." Keep the same file selected and press Upload and schedule again: rows that were already created come back as they were, and the result adds "N row(s) had already been created by an earlier attempt and were not created again." Choosing the file again starts a new import, which would create those rows a second time.
A row with scheduledAt is validated and scheduled like a single post: if a platform rejects it, its post target lands in Needs a fix same as Post statuses describes, and if your workspace requires approval it waits in Needs approval instead of scheduling straight away. A row without scheduledAt is saved as a Draft. Successful rows appear in this list and, once scheduled, on the Calendar.
If something goes wrong
- "N rows - one import takes at most 100. Split the file and import it in batches." (Bulk schedule import: 200.) - "Row N: title is required" — that row has no title. - "Row N: Pick a platform (one of: …)" — that row's platform column is empty. Fill it and import that row again. - "Row N: "(value)" is not a platform a post can be published to. Use one of: …" — the platform is misspelled or cannot publish posts. Use one of the keys listed. - Bulk schedule import "Row N: No connected account named "X" in this workspace" — check spelling against the Accounts page, or use the account id. - Bulk schedule import "Row N: N connected accounts are named "X" - use the account id instead" — two accounts share that name. - Bulk schedule import "Row N: media must be a media asset id or an https image URL" — the media column has neither. - Bulk schedule import "Row N: platformOptions must be a JSON object" — that column is not valid JSON, or the comma inside it was not quoted. - Bulk schedule import "Row N: scheduledAt must be in the future", "Row N: scheduledAt must be within one year from now" or "Row N: Invalid scheduledAt: …" — fix the time in that row. Nothing was created for the row, so re-upload it once fixed. - Bulk schedule import "Row N: caption is N characters; the most is 10000" — shorten that caption. - Bulk schedule import "Row N: An earlier attempt at this row is still running or did not finish - check the Content list before importing this row again" — an earlier try of the same upload was still working on that row, or stopped in the middle of it. Look for the post in the Content list; import the row again only if it is not there. ## Related - Editing a content item - Post statuses - Create - Records - Calendar
Checked against the product on Sep 23, 2026