🧵

Group Related Posts.Ship Them as One.

Themed routing groups — product launch, holiday push, content series. Set channels, queue, route, slots, and caption template once; every post in the campaign inherits them. Filter the calendar by campaign, watch per-campaign counters tick, ship related work as a unit.

What you get

🎯

Inherited defaults

Channels, queue, route, slots, caption template — every post in the campaign starts with them.

🧭

Composer auto-fills

Pick a campaign and the composer pre-fills channels and caption template; you override only what changes.

📆

Calendar campaign dots

Every event card with a campaign assignment renders a mint dot for quick scanning.

🔎

Calendar + drafts filter

Filter both the calendar and the drafts list by campaign in one click.

📊

Per-campaign counters

Scheduled / published counts update live via DB trigger — no analytics query needed.

🧷

Chip rail UI

Campaigns appear as a chip rail on /content — drag drafts onto chips to assign.

🤖

API + agent aware

/api/scheduled-posts accepts campaignId and inherits defaults — agents respect campaign rules.

🔒

Workspace-scoped (RLS)

Each campaign lives in one workspace — members of that workspace are the only ones who see it.

How it works

01

Open /content

The Content page has a campaign chip rail. Click "+ Campaign" to create one.

02

Set the defaults

Pick default channels, an optional queue or route, slot pattern, and a caption template.

03

Add posts to the campaign

Drag drafts onto the chip, or pick the campaign in the composer when drafting new posts.

04

Publish or schedule normally

Each post in the campaign inherits the defaults unless you override at the composer level.

Campaigns FAQ

What is a Campaign?

A routing group — pick a theme like "Q3 product launch" and attach default channels, a queue, a crosspost route, slot patterns, and a caption template. Every post added to the campaign inherits those defaults when it reaches the composer, so each piece of related content publishes the same way without re-picking settings.

How is this different from a Posting Set?

Posting Sets are composer presets — you pick the set when you write a post. Campaigns are persistent groups — every draft you add to the campaign automatically inherits the routing, even from chat, RSS auto-post, agents, or the API. Use sets for repeated formats, campaigns for related content series.

Can I filter the calendar by Campaign?

Yes. The calendar accepts a campaignId filter and event cards render a mint dot next to posts that belong to a campaign. The content page has a campaign chip rail that filters drafts and the calendar in one click.

Do Campaigns track their own metrics?

Yes. A metrics trigger bumps per-campaign scheduled and published counters on every status change, so each campaign has running totals visible on the campaign detail without any analytics query.

Why "Campaigns" instead of "Collections"?

Aidelly already has MediaCollection for grouping uploaded assets. We chose Campaigns to keep that surface untouched and to match how marketers actually talk about themed content groups.

Can a post belong to multiple Campaigns?

No — one campaign per post by design. If you need cross-campaign organization, use tags on the draft instead. Campaigns are routing groups, not arbitrary labels, and the inherited defaults wouldn't make sense across more than one.

One theme. One routing rule. Many posts.

Stop re-picking settings for related content.