Skip to main content
A cohort program sets how your cohorts form and what they get: who joins, whether each cohort gets a Slack channel, and which tracks run. You build it once, and Doozy creates the cohorts.

Create a program

Open Cohorts in doozy.live/app, click New cohort program, and set its name, how people join, start time, and channel.
Workspace admins and managers can create a program. You become its admin, and you decide who else can see and manage it on its Access list.

Name

Name the program after what it runs, like “Engineering onboarding”. Each cohort is named for its start date, so the hierarchy reads: Cohorts → Engineering onboarding → Jul 14, 2026.

How people are added

  • By start date: Doozy creates cohorts on a schedule and adds the people whose start date falls in each one’s range. You set the cadence in a sentence: “Weekly on a Monday”, choosing daily, weekly, every 2 weeks, or every 4 weeks. The day you pick is each cohort’s first day.
  • Add manually: you create each cohort, set its start date and when Intake ends, and add its members yourself.
On a By start date program, First cohort starts is the day the program’s first cohort begins. Doozy fills it in as the next occurrence of your start weekday, or today for a daily program, rolling forward one cycle if today’s open time has already passed. Change it to a later occurrence of that weekday if you don’t want the program starting straight away. After you create the program the field is gone; re-date cohorts by editing a schedule row or changing the cadence. Start dates come from your connected HRIS, or from Slack join dates when there’s no HRIS. Both work, but an HRIS connection groups people by their real start dates instead of Slack activity. You can switch modes later from Edit cohort program. Going manual stops cohorts filling from start dates and keeps everyone already placed; going back resumes filling on your cadence. Neither disturbs a cohort that’s started.

Start time

Pick the time and timezone each cohort starts (9:00 AM by default). On the cohort’s first day, at this time, the channel opens, the cohort track runs, and each person’s per-person tracks begin. This applies even with no channel.

Slack channel

Both channel options need Slack channel-management permissions. Without them, they’re disabled with a prompt to update Slack. Everything else works with No channel meanwhile.
Wherever a cohort’s channel name appears (the Cohorts list, a program’s schedule table, its Now/Next strip, and the cohort’s own page), you can open or copy a link to it. Anyone who can see the cohort can copy the link; no extra permission is needed.
  • Link existing: every cohort’s channel is a live link, including a cohort that hasn’t started yet, since the linked channel already exists.
  • Create automatically, cohort not yet started: the name is shown but isn’t clickable, because the channel doesn’t exist in Slack yet. A copy control is still offered. The link it copies starts working the moment the channel opens on the cohort’s first day. If the program is active and that day is still ahead, the copy confirmation names it; if the program is paused, archived, or a draft, the confirmation stays generic, since the channel isn’t guaranteed to open on schedule.
  • No channel, or a cohort that was skipped or passed without ever opening: nothing is offered.
Doozy never creates the channel early just because a link was copied. It’s still created on the cohort’s first day, same as before.
Cohort channels Doozy creates are private, so a copied link only opens the channel for someone who’s already a member. Anyone else lands on a Slack “not found” page.Members are invited on their own start date, not the cohort’s: someone whose start date falls later in the cohort’s intake window isn’t in the channel when it opens, and joins only once their own enrollment starts. If you email the channel link to a whole cohort in advance, it won’t work yet for that group’s later starters.
A cohort with nobody in it never opens, so its channel never appears and its link never works. A few other things can make a copied link stop matching the real channel:
  • If the name Doozy predicted is already taken in Slack when the cohort opens, Doozy retries with a different name for the real channel, and a link copied beforehand won’t point at it.
  • Moving an upcoming cohort’s dates changes the channel name when the template uses {date} or {month}, so a link copied before the move goes stale.

Draft and activate

A new program starts as a Draft: no cohorts, nothing posted. On a By start date program the draft’s schedule is already laid out on your cadence, so you can reshape the dates first. An admin clicks Activate, and Doozy starts forming cohorts. This is one-way: to take a live program offline, pause it rather than returning it to draft. On a By start date program, the first cohort takes only the start dates inside its own dates — it kicks off on the day you picked, and nobody is pulled back into it. If you activate on Aug 5 and the first cohort starts Aug 10, someone starting Aug 7 joins no cohort. The schedule bands those days so you can see them, and Add cohort on the band covers them with a cohort. Activating never re-dates the schedule you laid out in draft. A cohort whose range had already passed never runs, and the cohort whose range covers the day you activate becomes the current one.

The program page

A strip at the top shows the active cohort (“Now”), or if none is active, the next one forming (“Next”): its start date, people count, channel, and opening time.

Tracks

Tracks are listed as Cohort track and Per-person track, with drafts and paused tracks marked inline. You can also attach any draft track to this program straight from its trigger settings in the track builder - the program and run mode lock once the track goes live (see Cohort tracks). From here, each group offers two ways to add one:
  • Create a cohort track / Create a per-person track opens the builder with a blank track, already wired to the program and run mode.
  • Import an existing track copies one of your non-archived, non-cohort tracks into a new draft attached to this program, and opens the copy. The original is never changed. Steps that don’t fit the run mode (like Introductions or Tasks in a once-per-cohort track) are kept but flagged until you fix or remove them. Import stays available on the Cohort track card even when a track already runs there: a program can hold any number of Once per cohort drafts. Activating the copy is what needs the running track paused or archived first (see Cohort tracks).
Editors can manage tracks; activating one still needs a workspace admin or manager.

The schedule

On a By start date program the schedule table has one row per cohort, soonest first, each covering a range of start dates. Doozy lays the schedule out about a year ahead and creates the actual cohorts only as they approach. Dates everywhere in cohorts show in the program’s timezone. An Add manually program has no generated schedule; the table lists the cohorts you created.
Intake dates only decide who joins a cohort. They don’t limit how long its tracks run: a six-week track still takes six weeks in a cohort with a one-week intake, and keeps delivering after the cohort’s dates pass and it shows as Done.

Which cohort a person joins

A person joins the cohort whose dates cover their start date, including someone who arrives late (a new HRIS hire, or a start-date correction). If that cohort is Active, they join late and catch up. If it’s already Done, they fall forward to the next cohort: right away if it’s running, otherwise once its start day arrives. Two exceptions: someone excluded from a cohort doesn’t fall forward, they just don’t join; and a start date before the FIRST cohort joins nothing, because the first cohort never reaches back past its own start. A cohort with nobody in it never opens (no channel, no cohort track) and is archived once its dates pass. Before a cohort starts, the people it predicts (in the schedule’s People count and on the cohort’s own page) match who the program will add: anyone the program’s membership settings exclude, and anyone deactivated, is left out.

Who’s joining

Click a cohort’s People count to open the full, uncapped list of everyone joining, split into who’s coming in automatically by start date (By start date) and who was added by hand (Added manually). From that list, editors and admins can:
  • Add someone by hand, choosing them from the picker. They join as Added manually, alongside anyone matched by start date.
  • Exclude anyone, whether the cohort is still Scheduled or already Active. Excluding holds them out for good: they don’t join this cohort, and Doozy won’t place them back on it or carry them into a later one. Excluding someone already on an Active cohort ends their per-person tracks for it the same way removing them from a track does: any open quiz, survey, task, or invitation those tracks had opened for them is canceled.
  • Restore someone they’d excluded, putting them back on the joining list.
  • Move someone straight into another cohort of the same program. The picker lists each other cohort by name, with its date range and status underneath (worded like the schedule table’s Intake dates and Status columns), and it defaults to the next upcoming (Scheduled) cohort rather than simply the first in the list. Picking a cohort that’s already Active shows a caution: that cohort is already running, so the person’s enrollment (their tracks and the invite to its Slack channel) isn’t immediate. Both wait until their own start date arrives, the same as they would for anyone else added to a running cohort. Confirm with Move person. They’re added to the cohort you pick (shown as Added manually) and held out of this one, overriding their HRIS start date. Use this to pull a new hire into, say, the cohort two weeks out instead of the one their start date would otherwise match, or to move someone who’s already started into a cohort that’s still running even though its intake has closed. Only cohorts that aren’t Done are offered as destinations, and you can’t move someone into or out of a Done cohort. If the destination you picked stops being available while the dialog is still open (it finished, or someone else changed the schedule), Doozy tells you and blocks the move until you pick another. If they’d already started that cohort’s per-person tracks, moving them ends those journeys the same way excluding them does - open items those tracks had opened for them are canceled - before their new cohort’s tracks pick up from the start.
Adding, moving, and restoring someone all place them into a specific cohort by hand. Whichever of the three you’re doing, Doozy refuses a placement that could never do anything for the person: a hire who hasn’t started yet can’t be placed into a cohort whose intake closes before their first day, since nothing would ever run for them there. The action is refused with a message naming their start date and the cohort’s intake-close day, and nothing changes. In the move picker, any destination that can’t take that particular person is marked and can’t be chosen, so you see the clash while you’re choosing rather than on submit. If you pick several people at once and any one of them clashes, nobody is added, and the message names who clashed. Doozy also won’t place someone into a second cohort of the same program by hand. Add and Restore refuse anyone who is already in another cohort of this program that hasn’t finished: the message names the person and that cohort, and tells you to move them from there into this one instead. The same all-or-nothing rule applies to a batch: if any one person clashes, nobody is added, and the message names every person who clashed, with the cohort each is in. A cohort they’re excluded from, a cohort that’s already finished, and a cohort of a different program (one person can be in cohorts of several programs) never block it. “Already in” means a cohort that actually holds them: one they were hand-picked onto, or one whose roster they’re on. A cohort they merely match by start date, and which hasn’t started yet, doesn’t hold anyone, so you can still hand-pick them into a different cohort, which is the point of Move above: pulling a new hire into, say, the cohort two weeks out instead of the one their start date would otherwise match. Once that earlier cohort starts, though, it has a real roster with them on it, and hand-picking them elsewhere is refused from that point. Move them instead. Move is never refused for this. Moving someone into a cohort they’re already in still takes them out of the cohort you’re moving them from, which is how you resolve someone showing up in two cohorts. Doozy just says so afterwards, naming the cohort they were already in and confirming they’re no longer in this one, rather than reporting a plain move. Once someone’s start date has arrived on their own calendar, or if there’s no start date on record, that check no longer applies — including on a cohort whose intake has already closed. A cohort keeps running for as long as its tracks do, often well past the last day people can join by start date, so you can still fold a late hire into the class that’s already going. They get their own onboarding from that point; anything already sent to the cohort’s channel won’t be resent. Viewers can open the same list to see who’s joining, but only editors and admins can add, exclude, restore, or move, and only while the cohort is still Scheduled or Active. Once it’s Done, the list is read-only for everyone.

Each cohort’s page

Every cohort has its own page, whether or not it’s started yet. Click a cohort anywhere it’s listed, on the Cohorts page or in a program’s schedule, to open it. A link or bookmark to a cohort keeps working once it starts. Before a cohort starts, its page shows what’s known so far: its name, status, and intake dates, and the program’s facilitators. Channel names the channel the cohort will use: the linked channel on Link existing, or on Create automatically the name this cohort will take, grayed out until it exists. A cohort with nobody in it never opens, so an empty one has no channel name to show yet. People lists everyone currently expected to join, marked By start date or Added manually. Excluded lists anyone held out; restore them from there. Cohort tracks lists what runs once for the whole cohort, Per-person tracks what runs for each person. A track that isn’t active won’t run: activate it on the program page. A draft, paused, or archived program opens no cohorts and runs no tracks either; activate, resume, or restore it on the program page. You can add people, exclude or remove someone, restore someone excluded, and move someone to another cohort in the program right from this page, the same actions as Who’s joining above. Some things only apply once the cohort has started: renaming it, End cohort, retrying a failed open, and, on the roster, the Added date and each person’s Progress. A cohort whose dates passed without it ever starting (its program was a draft or paused, or nobody was added to a manual cohort) says so on its page instead of showing an error.

Access

The Access list controls who can see and manage the program. Access is per program: apart from workspace admins, who see everything, a person sees only the programs they’ve been added to. A program always keeps at least one admin, so you can’t remove or demote the last one. When the program has a channel, each row also has a Facilitator toggle that adds that person to each cohort’s Slack channel to help run it (see Facilitators). A newly added person starts as a viewer with Facilitator on.

Edit the schedule

Editors reshape the schedule in the table, on either kind of program. Click a cohort’s Intake dates cell to open a calendar, pick its first and last day, and save. Cohorts never overlap. Extending a cohort into a neighbor trims that neighbor so the two meet; a neighbor the new dates cover completely is merged into it. Shrinking a cohort away from its neighbor leaves a gap, and start dates in a gap fall forward into the next cohort, so nobody is left without one. Moving a cohort’s first day moves its whole clock: its channel opens and its tracks start on the new day. Changing a boundary reassigns the people whose start dates cross it: they join the cohort that now covers their date, and their per-person onboarding restarts on that cohort’s clock. If Doozy opened a channel for the cohort they left, they’re removed from it; a channel you linked yourself is never touched. Split into two, in the same ⋮ menu as Remove cohort, opens a small calendar to pick the day the new (second) cohort starts. You can only pick an interior day of the cohort’s range, so both halves are at least a day long; on a single-day cohort there’s no interior day to cut at, and the option shows disabled with a reason. The original cohort keeps its name and identity, shrunk to end the day before the split; the new cohort is a separate cohort, named for its start date like any other. On a By start date program, people matched by start date re-sort across the split: anyone starting on or after the chosen day ends up in the new cohort. People added by hand, which on an Add manually program means everyone, stay on the original cohort; the new one starts with nobody on it, so add its people with Add people afterward. Add a cohort, on the Cohorts card above the schedule, opens a calendar to pick the new cohort’s first and last day, the same range calendar the Intake dates cell uses to change a cohort’s dates. It needs admin access. Nothing is picked for you, and while running or finished cohorts are off limits, an upcoming cohort’s days aren’t: picking over them is how you carve out room the schedule doesn’t already have. A range that’s clear of every other cohort just creates on Add. Pick a range that overlaps one or more upcoming cohorts, and the dialog previews how each one reshapes and who’s in it, with the button now reading Add anyway:
  • A cohort the new range fully covers folds into the new cohort. Its people move in.
  • A cohort the new range lands inside splits in two around it.
  • A cohort the new range only partly covers shortens to whatever’s left.
One new cohort can reshape several existing ones at once, each with its own line in the preview. People re-sort by start date once it lands, and the new cohort is named for its start date, like any other.
People you added by hand stay put whatever the dates do around them, whether you’re splitting, removing, or restoring a cohort. The exception is removing the cohort they’re on: they move forward to the cohort taking over those dates, and restoring the week doesn’t bring them back. People matched by start date are re-added by a restored week.

What can’t change

A cohort that’s started, running or done, can’t have its dates changed, can’t be removed, and can’t be split. If you catch a cohort in the minute it’s opening, the edit is refused rather than half-applied; try again shortly.

Changing the cadence

Changing the cadence or start day re-lays the upcoming schedule, and Doozy warns you first. Cohorts that have started, and weeks already past, keep their dates; your edits to upcoming cohorts, including removed weeks, are re-laid onto the new cadence. The channel choice can also be edited, and applies to cohorts that haven’t opened yet.

Pause, resume, and archive

Editors can Pause a program. While paused:
  • No new cohorts are created, and any cohort that hasn’t opened waits.
  • Cohorts already running are not held: their channels stay open and content keeps delivering.
  • People whose start date falls during the pause aren’t added to a cohort. Resume before their start date, or add them by hand.
Resume picks the schedule back up from now, without creating cohorts for periods that fully passed. To cancel one specific upcoming week, remove it from the schedule instead. An admin can Archive a program that’s done for good, a permanent pause: no new cohorts open, but cohorts already running keep delivering. The program leaves the Programs list, though its page stays reachable from its running cohorts. Archiving isn’t deletion: open the page and Restore it.

When something goes wrong

Every row except the per-person invite refusal also DMs the program’s admins and facilitators. Workspace admins who aren’t on the Access list aren’t alerted.