> For the complete documentation index, see [llms.txt](https://herd-security.gitbook.io/herd-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://herd-security.gitbook.io/herd-security-docs/tracks/training-tracks.md).

# Training Tracks

Training Tracks let you bundle individual trainings into a sequenced curriculum and deliver them to users over time: one per week, one per month, or any cadence you choose.

### What is a track?

A **Track** is an ordered list of trainings assigned to users or groups. Instead of sending trainings ad hoc, you define a learning path once and Herd handles the scheduling.

When a user is assigned to a track:

1. Their first training is delivered immediately (or after an onboarding delay).
2. Each subsequent training is queued and sent based on the cadence you configure.
3. Herd tracks their progress through every training in the track.

***

### Catalog vs. custom tracks

| Type             | What it is                                                                                      |
| ---------------- | ----------------------------------------------------------------------------------------------- |
| **Herd Catalog** | Pre-built tracks managed by Herd. Browse from the catalog and clone into your org to customize. |
| **Custom**       | Tracks you build from scratch using your own trainings.                                         |

To use a catalog track, open the **Catalog** tab, find the track, and click **Clone** (or **Clone Track** on the track's detail page). This creates an editable copy in your organization. The original is unaffected.

***

### Building a track

#### 1. Create the track

In the left sidebar, expand **Training** and click **Tracks** (it sits beside **Library**, the trainings list). Click **Create Track** and fill in:

| Field           | Notes                                                   |
| --------------- | ------------------------------------------------------- |
| **Title**       | Required. Shown to users and admins.                    |
| **Description** | Optional summary of the curriculum.                     |
| **Tags**        | Used to filter and organize tracks across your library. |

#### 2. Add trainings

From the **Trainings** tab inside the track:

* Click **Add Training to Track** and search for any training in your library. (In the new-track create form, the per-row button is simply **Add**.) Closed and archived trainings aren't offered, and a training that is closed while inside a track is skipped by delivery and no longer counts toward the track's progress.
* A **Mandatory by default** toggle on the track marks the trainings the track assigns **from now on** as mandatory, with an optional **Passing score**. Existing assignments are unchanged.
* Trainings appear in a numbered list, which is the order they will be delivered.
* Drag rows to reorder. Position is saved automatically.
* A track must contain at least one training, up to a maximum of 50.

**Tip:** The track sends trainings in strict sequence. A user only receives Training 2 after completing Training 1.

#### Policy acknowledgements in a track

A track can also ask learners to read and sign a [policy](/herd-security-docs/policies/policies.md), for example at the end of an onboarding track. On the track's **Trainings** tab, click **Add Policy Acknowledgement**, then search and pick policies in the **Add policy acknowledgements** dialog. Pick one to add it on its own: it appears in the list with a **Policy acknowledgement** badge and can be dragged and removed like a training. Pick several to add them as **one section** (**Add N policies as one section**). The tab header counts both, for example *5 trainings · 2 policies*. Policies are added after the track is created; the create form holds trainings only.

How policy items behave:

* **A track must start with a training.** The editor won't save an order that puts a policy first.
* **If a policy ends up first anyway**, because the track's first training was later archived, closed or deleted, a learner who starts the track opens on the policy: they get the track's welcome once, then the leading policies one at a time. The first training is held until the last of them is signed, then starts straight away with a transition from the policy and the kickoff intro. The welcome's first-training title and due date still refer to the first training. Learners who had already started the track carry on as before, and a learner who finished every training without ever being sent that leading policy now gets it.
* **A policy is sent as soon as the learner reaches it**, through Slack, or as a link in Teams or by email, the same as any policy assignment. The cadence applies between trainings. Once the policy is signed, the next training is scheduled per the cadence from that moment.
* **The next item waits for the signature**, and the track is complete only when every policy in it is signed. Track progress, the Results tab and the CSV export count policies alongside trainings.
* **Already signed counts.** If the learner has already acknowledged the policy elsewhere, the item is marked complete and the track moves on. The learner gets a short Slack or Teams message naming the policy and the date they acknowledged it (in their own time zone), so the step doesn't pass silently. Outside business hours it is held until business hours begin. If that policy was the last item, the note leads into the track's [completion message](#completion-message).
* **Due date and reminders** come from the track's due date. Reminders for the policy follow its usual schedule against that date.
* **Removing a policy** moves anyone waiting on it to the next item. An archived policy shows **Archived — not delivered**.
* **Cloning a track** copies its policy items, including sections.

**Policy sections.** A section bundles several policies into one step of the track, so "10 trainings + 6 policies" doesn't read as 16 parts. It shows as a single **Policy acknowledgements** card that is numbered, dragged and removed as one unit. Inside it you can remove a single policy, and **Add policies to section** adds more.

* **The learner still signs each policy on its own**, in order. The next policy is sent as soon as the previous one is signed, and after the last one the track moves on per its cadence.
* **A section counts as one step** in track progress, the intro's series preview (for example "Policy acknowledgements (3 policies)") and the transition message. It is complete only when every policy in it is signed; a partly signed section counts as not done.
* **Each policy keeps its own record**: its own acknowledgement, its own row in the policy report and export, its own reminders against the track's due date, and its own re-acknowledgement when the policy's version changes. A policy already signed elsewhere is skipped.
* When a track holds any policy, its messages count **parts** instead of trainings, for example *Part 3 of 5*. Training-only tracks read as before.

The same training can sit in more than one track. When a user is on several active tracks that include it, completing it once advances **every** one of those tracks, each on its own schedule. If two tracks lead to the same next training, the user gets it once.

#### Welcome message (optional)

A track can open with its own **Welcome Message**: the first DM a learner gets when they're assigned the track, sent as a message of its own before the first training's message. It's off by default. Turn it on and edit it on the track's page, above the trainings. The editor has the same presets (**Friendly**, **Minimal** and a neutral one for onboarding and compliance tracks), rich-text editor, variables and preview as the transition message. Variables include the learner's first name, the track's name, the number of trainings, the first training's title, and the due date (the first training's, or the track's). With no wording saved, Herd sends a default welcome.

After the welcome, the first training's intro follows when the **Pre-Training Message** or the **Track kickoff message** is on, framed as *📚 Training 1 of N in Track* without repeating the series, and the steps thread under it. With both off, only the welcome is sent and the steps thread under it. Cloning a track keeps its welcome wording but starts with the switch off.

#### Transition messages (optional)

The welcome, transition and completion editors each have an **Insert variable** menu listing exactly the variables that message supports, so you don't have to type a tag by hand.

You can show learners a short message before each training after the first (or before the first training too, when a policy comes before it; a transition is never sent before a policy), for example to congratulate them on finishing one module and set up the next. Enable transition messages on the track, then write the message (up to 2,000 characters) between any two trainings in the list; a preview shows exactly what the learner will see.

The transition is sent **when the next training starts**, right before its intro, not when the previous one finishes. The learner sees the transition, then the next training's intro, then step 1 in the intro's thread. If no intro follows (the intro is off, or there wasn't time to send it), step 1 replies under the transition instead, which names the training. It congratulates the learner on whatever they finished last, training or policy; if they haven't finished anything, it reads "Up next: *training*". A training shared by two tracks gets at most one transition.

#### Completion message

When a learner finishes a track's last item themselves (a training or a policy acknowledgement), they get a closing message in Slack or Teams. Edit it under the track's items in the **Completion Message** editor, which works like the welcome and transition editors: an on/off switch, presets, a preview, and variables for the track's name, the learner's first name and an @mention. It is **on** for every track by default; switch it off per track. Duplicating a track copies the wording and the switch.

It is sent once per completion, right after the learner's own action, so business hours don't hold it. It isn't sent when a track completes without the learner doing anything just then, for example after an admin edits the track. A track whose [feedback](/herd-security-docs/trainings/getting-started-with-trainings/training-feedback.md#controlling-how-often-learners-are-prompted) is set to **Once at track end** adds its rating prompt to this message.

#### Routing to a later item

A [routing question](/herd-security-docs/trainings/getting-started-with-trainings/creating-trainings.md) (one with no right answer) can send a learner past part of the track, for example straight to the policy acknowledgement for people who answer that they've already done the onboarding course. On the track's **Trainings** tab, a training that has a routing question shows **Route to track item**. Pick the **Question**, the answer (**When the answer is**) and the later item to **Route to**, then **Save rule**.

* The target must come **after** the item in the same track, so a track can't loop. To route into a policy section, pick the section's first policy.
* An item can hold up to 10 rules. Duplicating a track copies its rules, and a rule is dropped when its question, source or target leaves the track.
* The items in between become **N/A — routed past** for that learner. They are never assigned and don't count toward the learner's progress or completion. Finishing one of them somewhere else doesn't move this track either.
* The learner is told *Based on your answer, you're moving on to …* in Slack or Teams before the item they were routed to. This line is sent even when the track's transition messages are off; when they're on, it's added to the transition message.
* Skips belong to one run of the track: reassigning or restoring the track starts clean, and editing or deleting the rule later doesn't change what already happened.

#### Track kickoff message

When someone is assigned a track, the first message they get names the **track** rather than just its first training, and previews the series: how many trainings the track has, the first five titles (then *…and N more*), which one comes first, and the due date. Each later training's message says where it sits, for example *Training 3 of 10 in Onboarding*. This keeps learners from mistaking a long track for a single training.

The kickoff is controlled by one organization-wide switch. Click the **Track settings** gear next to **Create Track** on the Tracks page and turn **Track kickoff message** on or off (it's on by default; changing it needs permission to edit tracks). With it on, the kickoff goes out whenever a track's first training starts, even if the **Pre-Training Message** is off. Later trainings in the track, and trainings assigned on their own, still follow the Pre-Training Message settings. Each learner gets the kickoff once per assignment of the track: reordering or removing trainings doesn't send it again, but reassigning the track does.

**Show step progress in Slack and Teams**, which adds a *Step 3 of 7* line above each step delivered in chat, has moved from this gear to **Training settings → Messaging & delivery**, since the count is per training and never spans a track. See [How steps look in Slack and Teams](/herd-security-docs/trainings/getting-started-with-trainings/sending-trainings.md#how-steps-look-in-slack-and-teams).

The tile shows a preview. The wording comes from your **Pre-Training Message** (**Training settings** → **Messaging & delivery**), which has two variables for tracks: `{assignmentTitle}` (the track's name on its first training, otherwise the training's name) and `{seriesPhrase}` (the track's training count and titles, or empty outside a track). Herd's default message already uses both. If you saved a custom Pre-Training Message without either variable, the kickoff names only the first training, and the tile warns you about this.

#### 3. Set up due dates and reminders (optional)

In the **Nudges** tab, give the track a **due date** and attach a reminder schedule. Reminders are anchored to the due date: by default Herd nudges users **2 weeks, 1 week, and 3 business days before** it's due (or, with **Repeating**, every N business days from a start you choose), optionally **on the due date**, and then **after the due date** at a frequency you choose (every 3 business days by default). In the **Escalations** tab you can also **escalate**: after a number of days overdue, Herd notifies each user's manager or specific people you pick, with a customizable message. Both tabs share the due date and save automatically, exactly as on a single training. Reminders and escalations set here apply to all users assigned to the track.

Someone an admin has paused for leave gets no track reminders, and their manager no escalations, until the pause ends. The track's due date doesn't move for them, so if it passes during the leave the track shows as overdue when they're back, and the reminder and escalation they missed go out once. See [Leave and Paused Notifications](/herd-security-docs/users/users/leave-and-paused-notifications.md).

Track reminders read **Overdue Track** (not "Overdue Training") and, in Slack, land in the thread of the training the person is currently on. When the learner's next item is a policy they haven't signed, the reminder is followed by that policy again with its **I Acknowledge** button (in Slack, a Teams card, or the policy's magic-link email for a learner with no Slack or Teams account, where that email serves as the reminder). The same happens when an admin nudges the learner. Signing the reposted policy advances the track as usual, and the policy is reposted at most once per reminder window. Reminder timing, daily caps, and the learner's snooze options are the same as for a single training; see the reminders section of [Assigning Users to Training](/herd-security-docs/trainings/getting-started-with-trainings/assigning-users-to-training.md).

***

### Previewing a track

Click **Preview** on the track's header to play the whole track in a new tab, as a learner would get it in Slack or Teams (whichever your organization delivers on). It works for any saved track with at least one item, published or not. The preview shows the track's real messages (welcome, kickoff, transitions, policy messages, feedback prompts and the completion message) and plays each training in turn. A policy waits on a stand-in **Continue** button. Answer a routing question and the preview follows the track's routing rules, jumping to the target item and listing the items it routed past. **Skip to next item** moves on without evaluating routing. Nothing in the preview is sent to anyone or recorded as progress.

### Assigning the track

Go to the **Assignments** tab on the track detail page and click **New assignment**.

The track detail page has five tabs: **Trainings**, **Assignments**, **Nudges**, **Escalations**, and **Results**. **Assignments** works as it does on a training: a card for each time the track was sent, **New assignment** to send it again, and **All people** for everyone enrolled (see [Assigning Users to Training](/herd-security-docs/trainings/getting-started-with-trainings/assigning-users-to-training.md)).

#### Assign users directly

Search for users by name or email and add them individually. Each person begins the track from Training 1.

#### Assign a group

Select an Okta, Google, Azure (Entra), or Herd group. Every current member is enrolled. New members added to the group later are automatically enrolled if **Auto-assign to new group members** is enabled. Group assignments with it on show an **Auto-assign new** badge. To enroll only future members, turn on **Only people who join later** under **Group rules**: the group's current members are skipped and only people who join afterwards are enrolled.

***

### Configuring the cadence

The cadence controls how long Herd waits between completing one training and delivering the next. You set it per assignment, not per track, so the same track can run at different speeds for different groups.

| Cadence       | Behavior                                                                               |
| ------------- | -------------------------------------------------------------------------------------- |
| **Immediate** | Next training sends as soon as the current one is completed.                           |
| **Daily**     | Next training queued for the following day. Optionally restrict to business days only. |
| **Weekly**    | Next training queued for the same day next week.                                       |
| **Biweekly**  | Next training queued two weeks after completion.                                       |
| **Monthly**   | Next training queued one month after completion.                                       |
| **Custom**    | Next training queued after a specific number of hours you specify.                     |

**Example:** A five-training security awareness track on a weekly cadence delivers over five weeks, one training each week.

#### Business days

When using **Daily** cadence, enable **Business days only** to skip weekends. If a training would land on Saturday or Sunday, it shifts to Monday.

#### Catch-up

Enable **Catch-Up** to handle users who fall behind. Set a threshold (e.g., 3 days). If a user's next queued training is overdue by more than that many days, Herd bypasses the cadence delay and delivers it immediately to get them back on track.

### Onboarding delay

If your organization has an onboarding delay configured, newly added users are queued but not sent their first training until the delay period expires. You'll see these users in **All people** on the **Assignments** tab, with an onboarding-hold pill.

To bypass the delay for a specific user, click **Send Now** next to their name.

### Monitoring progress

#### All people

On the **Assignments** tab, **All people** shows every enrolled user and their current status:

| Status          | Meaning                                                                                                 |
| --------------- | ------------------------------------------------------------------------------------------------------- |
| **Not started** | User has been assigned but hasn't interacted with their first training yet.                             |
| **In progress** | User has taken a first step in a training (delivery alone doesn't count) and hasn't finished the track. |
| **Completed**   | User has finished every training in the track and signed every policy in it.                            |

The same definition of "started" is used everywhere: the status chips, the progress card, the Results tab, and the CSV export all agree.

#### Results tab

Provides a training-by-training breakdown per user:

* Which trainings have been completed and when.
* How long each training took.
* Overall completion across the track.
* Each learner's due date for the track, on their card. Past the due day it turns red and reads **· Overdue**.
* **Still to do:** each learner's outstanding items, naming a policy as a policy. The CSV export has the same list as **Outstanding Items**.
* Items that don't apply to a learner are marked **N/A** with the reason: **N/A — routed past** (with the answer that routed them) or **N/A — added after they passed it** (a training inserted earlier in the track than where the learner already was). If the learner completed the item anyway, it counts as completed.

A learner whose every applicable item is done shows **Completed**, even when the last item was finished by a path that didn't update the track at the time: Herd re-checks every 15 minutes and stamps the completion with the last item's own completion time. When a track's [feedback](/herd-security-docs/trainings/getting-started-with-trainings/training-feedback.md) is set to **Once at track end**, a **Feedback** card under the results shows the track's ratings.

The progress card at the top shows each percentage with its denominator (for example *3 of 12 people*), a **Trainings Complete** tile counting completed training assignments across all assignees, **Avg Time to Start** (assignment to first interaction), and **Avg Active Completion Time** (first interaction to completion, so time spent waiting to start isn't counted). People who never started are left out of both averages.

Use the search box and the status filters (All, Completed, In Progress, Not Started) to narrow the list, and **Export CSV** to download the results.

### Editing a track

You can update a track's title, description, tags, and training order at any time from the track detail page. Changes to training order take effect for users who haven't yet reached those trainings; users mid-training are unaffected. A training you insert ahead of where a learner already is becomes **N/A — added after they passed it** for that learner rather than being sent back to them, and a learner an edit leaves with nothing left to do is marked complete.

> Removing a training from a track does not un-send it from users who have already received or completed it. Anyone currently on the removed training is moved along to the next one in the track. Learners who hadn't reached it yet never receive it through the track, and learners whose start is still held back (for example by an onboarding delay) start the track from its first item as edited.

### Archiving a track

To retire a track without deleting it, open the track's detail page and click **Archive Track**. An archived track:

* Is hidden from the active tracks list. The list's archive filter switches between **Active** (default), **Archived**, and **All**, and archived tracks carry an **Archived** badge.
* Can't receive new assignments and is excluded from reports.
* Keeps its historical completion data, and can be restored at any time with **Unarchive Track**.

Archiving the track doesn't archive the trainings inside it, so each training remains independently usable. Archiving is blocked while the track still has in-flight assignments; complete or remove them first.

### Deleting a track

Tracks are soft-deleted: they are hidden from your library but historical completion data is preserved. Deleting a track does not remove user progress records.

### Common patterns

#### Monthly security awareness curriculum

1. Create a track with 12 trainings (one per security domain).
2. Set cadence to **Monthly**.
3. Assign your whole organization via your primary Herd group.
4. Enable **Auto-assign to new group members** so new hires are enrolled automatically.

#### New hire onboarding track

1. Build a track covering your most critical policies (5–7 trainings).
2. Set cadence to **Weekly**.
3. Assign the track to your "New Hires" group.
4. Let the org-level onboarding delay hold the first training until their first week settles.

#### Role-based training

1. Add a Herd catalog track relevant to the role (e.g., engineering, finance) to your library.
2. Customize the training order or swap in your own content.
3. Assign to the relevant department group.
4. Set a reminder schedule to follow up with non-completers after 2 days.
