KnowBe4 Training Campaign Management
Overview
KnowBe4 training campaigns deliver security awareness content to users through structured enrollment workflows. Training can be assigned manually, triggered automatically after phishing test failures, or scheduled on a recurring basis. Each campaign tracks enrollment status, completion rates, and compliance deadlines. The training content library includes interactive modules, videos, games, assessments, and policy documents.
Anti-triggers
- A bare "campaign" question — KnowBe4 has two campaign types with
separate ID spaces and near-identical lifecycles. If the subject is a
simulated phishing test, its templates, or who clicked, it is
knowbe4-phishing; this skill covers only training campaigns and
enrollments.
- The phishing failure that triggered an auto-enrollment — the
trigger is configured here, but the failure data itself is
knowbe4-phishing.
- Completion rates rolled up across campaigns or departments — this
skill reads individual campaigns and enrollments; aggregates and
compliance dashboards are
knowbe4-reporting.
Key Concepts
Training Campaign Lifecycle
CREATED ──> SCHEDULED ──> ACTIVE ──> CLOSED
│ │
└──── CANCELLED └──> ARCHIVED
- Created: Campaign configured with content and target groups
- Scheduled: Queued to begin enrollment at a future date
- Active: Users enrolled and training in progress
- Closed: Campaign deadline passed, final completion recorded
- Cancelled: Campaign aborted
- Archived: Closed campaign moved to archive
Enrollment Statuses
| Status |
Description |
Business Meaning |
| Not Started |
User enrolled but has not begun |
Needs reminder |
| In Progress |
User has started but not completed |
Actively working |
| Completed |
User finished all required content |
Compliant |
| Past Due |
Deadline passed without completion |
Non-compliant |
Training Content Types
| Type |
Description |
Typical Duration |
| Training Module |
Interactive course with slides and quizzes |
15-45 minutes |
| Video |
Pre-recorded security awareness video |
5-15 minutes |
| Game |
Gamified security training |
10-20 minutes |
| Assessment |
Knowledge check quiz |
5-10 minutes |
| Policy |
Policy document requiring acknowledgment |
2-5 minutes |
| Newsletter |
Security awareness newsletter |
3-5 minutes |
| Poster |
Downloadable awareness poster |
N/A |
Auto-Enrollment Triggers
Training can be triggered automatically based on:
| Trigger |
Description |
| Phishing Failure |
User clicked/failed a phishing test |
| New Hire |
User added to the system |
| Group Membership |
User added to a specific group |
| Scheduled |
Recurring enrollment (monthly, quarterly, annually) |
| Manager Request |
Manual enrollment by manager/admin |
Field Reference
Training Campaign Fields
| Field |
Type |
Description |
campaign_id |
int |
Unique campaign identifier |
name |
string |
Campaign name |
status |
string |
Current status |
content |
array |
List of training modules/content assigned |
groups |
array |
Target groups |
duration_type |
string |
How long users have to complete |
start_date |
datetime |
When enrollment begins |
end_date |
datetime |
Completion deadline |
relative_duration |
string |
Days from enrollment to complete |
auto_enroll |
boolean |
Whether new group members are auto-enrolled |
allow_multiple_enrollments |
boolean |
Can users retake the training |
completion_percentage |
float |
Percentage of enrollees who completed |
Training Enrollment Fields
| Field |
Type |
Description |
enrollment_id |
int |
Unique enrollment identifier |
content_type |
string |
Type of content assigned |
module_name |
string |
Name of the training module |
user |
object |
Enrolled user details |
campaign_id |
int |
Parent campaign |
enrollment_date |
datetime |
When user was enrolled |
start_date |
datetime |
When user began training |
completion_date |
datetime |
When user completed training |
status |
string |
not_started, in_progress, completed, past_due |
time_spent |
int |
Seconds spent on training |
current_module |
string |
Module user is currently on |
policy_acknowledged |
boolean |
Whether policy was acknowledged |
Store Purchase Fields
| Field |
Type |
Description |
store_purchase_id |
int |
Unique purchase identifier |
content_id |
int |
Purchased content item |
content_type |
string |
Type of content |
content_name |
string |
Name of content item |
purchase_date |
datetime |
When purchased |
expiration_date |
datetime |
License expiration |
MCP Tools
| Tool |
Description |
Parameters (required in bold) |
knowbe4_training_campaigns_list |
List training campaigns |
page, per_page |
knowbe4_training_campaigns_get |
Get campaign details, including its modules, enrollments and completion stats |
campaign_id |
knowbe4_training_enrollments_list |
List training enrollments across the account |
page, per_page |
knowbe4_training_enrollments_get |
Get enrollment details, including module progress and completion date |
enrollment_id |
knowbe4_store_purchases_list |
List ModStore purchases — the training content this account owns |
page, per_page |
knowbe4_store_purchases_get |
Get purchase details |
purchase_id |
knowbe4_policies_list |
List security policies and their acknowledgment requirements |
page, per_page |
knowbe4_policies_get |
Get one policy, including acknowledgment status |
policy_id |
Two shape notes that change how these get used:
knowbe4_training_enrollments_list is account-wide and takes no
filters. There is no campaign_id and no status argument. "Overdue
enrollments for the HIPAA campaign" is a full paginated read filtered
client-side on the campaign and status fields of each record — not a
query. Budget the request count accordingly (see api-patterns), and pass
per_page=500 rather than accepting the default of 100.
There is no training-module catalog tool. Nothing here lists the
modules available to assign or reads a single module by ID.
knowbe4_store_purchases_list is the nearest real capability and it
answers a different question — what content this account has purchased
from the ModStore, not what modules exist or what a campaign could use.
knowbe4_training_campaigns_get names the modules already attached to a
campaign. Choosing content for a new campaign is console work.
Common Workflows
Create and Monitor Training Campaign
- Review owned content using
knowbe4_store_purchases_list — this
shows what the account has bought, which constrains what a campaign
can assign. Browsing the full module catalog is console-only.
- Select target groups -- choose which user groups need training
- Set completion deadline -- allow adequate time (2-4 weeks typical)
- Launch campaign -- schedule or start immediately
- Monitor enrollment status -- check completion rates weekly
- Send reminders to users with "not_started" or "in_progress" status
- Review final completion after deadline
Track Compliance Status
- List campaigns with
knowbe4_training_campaigns_list, then filter
to the active ones yourself — there is no status argument
- Read enrollments with
knowbe4_training_enrollments_list (account-wide;
match them back to campaigns on the enrollment record)
- Filter by status to find incomplete/past_due enrollments
- Identify non-compliant users -- group by department or manager
- Escalate users who are past due on required training
Post-Phishing Remediation Training
- Identify failed users from phishing campaign results
- Find appropriate remedial module matching the phishing scenario
- Create targeted campaign for failed users only
- Set short deadline (1 week for remediation)
- Track completion and re-test with follow-up phishing simulation
Quarterly Security Awareness Review
- Pull all completed campaigns for the quarter
- Calculate overall completion rate across all campaigns
- Identify departments with lowest completion rates
- Review training content -- are modules current and relevant?
- Plan next quarter based on gaps identified
New Hire Onboarding
- Create onboarding training campaign with essential modules
- Enable auto-enrollment for the "New Hires" group
- Set relative deadline (e.g., 14 days from enrollment)
- Include baseline phishing test after training completion
- Move to regular groups after onboarding completion
Error Handling
Common API Errors
| Code |
Message |
Resolution |
| 400 |
Invalid campaign configuration |
Verify content IDs and group IDs exist |
| 401 |
Invalid API token |
Verify KNOWBE4_API_KEY |
| 403 |
Insufficient permissions |
API token needs Training permissions |
| 404 |
Campaign not found |
Verify campaign_id exists |
| 404 |
Enrollment not found |
Verify enrollment_id exists |
| 429 |
Rate limit exceeded |
Implement backoff (see api-patterns) |
Data Considerations
| Issue |
Cause |
Resolution |
| Zero completion rate |
Campaign just started |
Allow time for users to complete |
| User not enrolled |
Not in target group |
Check group membership |
| Completion not recording |
Module requires assessment pass |
User may need to retake quiz |
| Past due but completed |
Completed after deadline |
Marked past_due at deadline, then completed |
| Duplicate enrollments |
Multiple campaigns with same content |
Check allow_multiple_enrollments |
Best Practices
- Set realistic deadlines -- Allow 2-4 weeks for standard training, 1 week for remediation
- Send reminders -- Notify at 50% and 75% of deadline elapsed
- Keep content fresh -- Rotate training modules quarterly
- Match training to threats -- Use phishing failure data to select relevant modules
- Track completion trends -- Completion rates should improve over time
- Segment by audience -- Executives, IT, finance, and general staff need different content
- Combine with phishing -- Always follow training with a phishing simulation to validate
- Use gamification -- Games and competitions increase engagement
- Report to stakeholders -- Share completion rates with department managers
- Automate remediation -- Auto-enroll phishing test failures in relevant training
Related Skills
1---2name: knowbe4-training3description: KnowBe4 training campaign management: campaign lifecycle, enrollment workflows, completion tracking, training module and content library browsing, store purchases, and compliance deadline monitoring.4---56# KnowBe4 Training Campaign Management78## Overview910KnowBe4 training campaigns deliver security awareness content to users through structured enrollment workflows. Training can be assigned manually, triggered automatically after phishing test failures, or scheduled on a recurring basis. Each campaign tracks enrollment status, completion rates, and compliance deadlines. The training content library includes interactive modules, videos, games, assessments, and policy documents.1112## Anti-triggers1314- **A bare "campaign" question** — KnowBe4 has two campaign types with15 separate ID spaces and near-identical lifecycles. If the subject is a16 simulated phishing test, its templates, or who clicked, it is17 `knowbe4-phishing`; this skill covers only training campaigns and18 enrollments.19- **The phishing failure that triggered an auto-enrollment** — the20 trigger is configured here, but the failure data itself is21 `knowbe4-phishing`.22- **Completion rates rolled up across campaigns or departments** — this23 skill reads individual campaigns and enrollments; aggregates and24 compliance dashboards are `knowbe4-reporting`.2526## Key Concepts2728### Training Campaign Lifecycle2930```31CREATED ──> SCHEDULED ──> ACTIVE ──> CLOSED32 │ │33 └──── CANCELLED └──> ARCHIVED34```3536- **Created**: Campaign configured with content and target groups37- **Scheduled**: Queued to begin enrollment at a future date38- **Active**: Users enrolled and training in progress39- **Closed**: Campaign deadline passed, final completion recorded40- **Cancelled**: Campaign aborted41- **Archived**: Closed campaign moved to archive4243### Enrollment Statuses4445| Status | Description | Business Meaning |46|--------|-------------|------------------|47| **Not Started** | User enrolled but has not begun | Needs reminder |48| **In Progress** | User has started but not completed | Actively working |49| **Completed** | User finished all required content | Compliant |50| **Past Due** | Deadline passed without completion | Non-compliant |5152### Training Content Types5354| Type | Description | Typical Duration |55|------|-------------|-----------------|56| **Training Module** | Interactive course with slides and quizzes | 15-45 minutes |57| **Video** | Pre-recorded security awareness video | 5-15 minutes |58| **Game** | Gamified security training | 10-20 minutes |59| **Assessment** | Knowledge check quiz | 5-10 minutes |60| **Policy** | Policy document requiring acknowledgment | 2-5 minutes |61| **Newsletter** | Security awareness newsletter | 3-5 minutes |62| **Poster** | Downloadable awareness poster | N/A |6364### Auto-Enrollment Triggers6566Training can be triggered automatically based on:6768| Trigger | Description |69|---------|-------------|70| **Phishing Failure** | User clicked/failed a phishing test |71| **New Hire** | User added to the system |72| **Group Membership** | User added to a specific group |73| **Scheduled** | Recurring enrollment (monthly, quarterly, annually) |74| **Manager Request** | Manual enrollment by manager/admin |7576## Field Reference7778### Training Campaign Fields7980| Field | Type | Description |81|-------|------|-------------|82| `campaign_id` | int | Unique campaign identifier |83| `name` | string | Campaign name |84| `status` | string | Current status |85| `content` | array | List of training modules/content assigned |86| `groups` | array | Target groups |87| `duration_type` | string | How long users have to complete |88| `start_date` | datetime | When enrollment begins |89| `end_date` | datetime | Completion deadline |90| `relative_duration` | string | Days from enrollment to complete |91| `auto_enroll` | boolean | Whether new group members are auto-enrolled |92| `allow_multiple_enrollments` | boolean | Can users retake the training |93| `completion_percentage` | float | Percentage of enrollees who completed |9495### Training Enrollment Fields9697| Field | Type | Description |98|-------|------|-------------|99| `enrollment_id` | int | Unique enrollment identifier |100| `content_type` | string | Type of content assigned |101| `module_name` | string | Name of the training module |102| `user` | object | Enrolled user details |103| `campaign_id` | int | Parent campaign |104| `enrollment_date` | datetime | When user was enrolled |105| `start_date` | datetime | When user began training |106| `completion_date` | datetime | When user completed training |107| `status` | string | not_started, in_progress, completed, past_due |108| `time_spent` | int | Seconds spent on training |109| `current_module` | string | Module user is currently on |110| `policy_acknowledged` | boolean | Whether policy was acknowledged |111112### Store Purchase Fields113114| Field | Type | Description |115|-------|------|-------------|116| `store_purchase_id` | int | Unique purchase identifier |117| `content_id` | int | Purchased content item |118| `content_type` | string | Type of content |119| `content_name` | string | Name of content item |120| `purchase_date` | datetime | When purchased |121| `expiration_date` | datetime | License expiration |122123## MCP Tools124125| Tool | Description | Parameters (required in **bold**) |126|------|-------------|----------------|127| `knowbe4_training_campaigns_list` | List training campaigns | `page`, `per_page` |128| `knowbe4_training_campaigns_get` | Get campaign details, including its modules, enrollments and completion stats | **`campaign_id`** |129| `knowbe4_training_enrollments_list` | List training enrollments across the account | `page`, `per_page` |130| `knowbe4_training_enrollments_get` | Get enrollment details, including module progress and completion date | **`enrollment_id`** |131| `knowbe4_store_purchases_list` | List ModStore purchases — the training content this account owns | `page`, `per_page` |132| `knowbe4_store_purchases_get` | Get purchase details | **`purchase_id`** |133| `knowbe4_policies_list` | List security policies and their acknowledgment requirements | `page`, `per_page` |134| `knowbe4_policies_get` | Get one policy, including acknowledgment status | **`policy_id`** |135136Two shape notes that change how these get used:137138**`knowbe4_training_enrollments_list` is account-wide and takes no139filters.** There is no `campaign_id` and no `status` argument. "Overdue140enrollments for the HIPAA campaign" is a full paginated read filtered141client-side on the `campaign` and `status` fields of each record — not a142query. Budget the request count accordingly (see api-patterns), and pass143`per_page=500` rather than accepting the default of 100.144145**There is no training-module catalog tool.** Nothing here lists the146modules available to assign or reads a single module by ID.147`knowbe4_store_purchases_list` is the nearest real capability and it148answers a different question — what content this account has *purchased*149from the ModStore, not what modules exist or what a campaign could use.150`knowbe4_training_campaigns_get` names the modules already attached to a151campaign. Choosing content for a new campaign is console work.152153## Common Workflows154155### Create and Monitor Training Campaign1561571. **Review owned content** using `knowbe4_store_purchases_list` — this158 shows what the account has bought, which constrains what a campaign159 can assign. Browsing the full module catalog is console-only.1602. **Select target groups** -- choose which user groups need training1613. **Set completion deadline** -- allow adequate time (2-4 weeks typical)1624. **Launch campaign** -- schedule or start immediately1635. **Monitor enrollment status** -- check completion rates weekly1646. **Send reminders** to users with "not_started" or "in_progress" status1657. **Review final completion** after deadline166167### Track Compliance Status1681691. **List campaigns** with `knowbe4_training_campaigns_list`, then filter170 to the active ones yourself — there is no `status` argument1712. **Read enrollments** with `knowbe4_training_enrollments_list` (account-wide;172 match them back to campaigns on the enrollment record)1733. **Filter by status** to find incomplete/past_due enrollments1744. **Identify non-compliant users** -- group by department or manager1755. **Escalate** users who are past due on required training176177### Post-Phishing Remediation Training1781791. **Identify failed users** from phishing campaign results1802. **Find appropriate remedial module** matching the phishing scenario1813. **Create targeted campaign** for failed users only1824. **Set short deadline** (1 week for remediation)1835. **Track completion** and re-test with follow-up phishing simulation184185### Quarterly Security Awareness Review1861871. **Pull all completed campaigns** for the quarter1882. **Calculate overall completion rate** across all campaigns1893. **Identify departments** with lowest completion rates1904. **Review training content** -- are modules current and relevant?1915. **Plan next quarter** based on gaps identified192193### New Hire Onboarding1941951. **Create onboarding training campaign** with essential modules1962. **Enable auto-enrollment** for the "New Hires" group1973. **Set relative deadline** (e.g., 14 days from enrollment)1984. **Include baseline phishing test** after training completion1995. **Move to regular groups** after onboarding completion200201## Error Handling202203### Common API Errors204205| Code | Message | Resolution |206|------|---------|------------|207| 400 | Invalid campaign configuration | Verify content IDs and group IDs exist |208| 401 | Invalid API token | Verify KNOWBE4_API_KEY |209| 403 | Insufficient permissions | API token needs Training permissions |210| 404 | Campaign not found | Verify campaign_id exists |211| 404 | Enrollment not found | Verify enrollment_id exists |212| 429 | Rate limit exceeded | Implement backoff (see api-patterns) |213214### Data Considerations215216| Issue | Cause | Resolution |217|-------|-------|------------|218| Zero completion rate | Campaign just started | Allow time for users to complete |219| User not enrolled | Not in target group | Check group membership |220| Completion not recording | Module requires assessment pass | User may need to retake quiz |221| Past due but completed | Completed after deadline | Marked past_due at deadline, then completed |222| Duplicate enrollments | Multiple campaigns with same content | Check `allow_multiple_enrollments` |223224## Best Practices2252261. **Set realistic deadlines** -- Allow 2-4 weeks for standard training, 1 week for remediation2272. **Send reminders** -- Notify at 50% and 75% of deadline elapsed2283. **Keep content fresh** -- Rotate training modules quarterly2294. **Match training to threats** -- Use phishing failure data to select relevant modules2305. **Track completion trends** -- Completion rates should improve over time2316. **Segment by audience** -- Executives, IT, finance, and general staff need different content2327. **Combine with phishing** -- Always follow training with a phishing simulation to validate2338. **Use gamification** -- Games and competitions increase engagement2349. **Report to stakeholders** -- Share completion rates with department managers23510. **Automate remediation** -- Auto-enroll phishing test failures in relevant training236237## Related Skills238239- [KnowBe4 Phishing](../phishing/SKILL.md) - Phishing simulation campaigns240- [KnowBe4 Users](../users/SKILL.md) - User management and groups241- [KnowBe4 Reporting](../reporting/SKILL.md) - Training completion metrics242- [KnowBe4 API Patterns](../api-patterns/SKILL.md) - Authentication, pagination, and rate limits