KnowBe4 User and Group Management
Overview
Users and groups are the foundation of KnowBe4's security awareness platform. Users represent individual employees who receive phishing simulations and training. Groups organize users for targeted campaign delivery, reporting segmentation, and risk analysis. Each user has a risk score calculated from their phishing test performance and training completion, providing a quantitative measure of human security risk.
Anti-triggers
- Proofpoint's user risk data — both vendors expose a per-user
"risk score", but KnowBe4's is derived from simulations the MSP ran,
while Proofpoint's Attack Index counts real attacks aimed at that
person. They are not interchangeable; use
proofpoint-people for
VAP, Attack Index, and top-clicker data.
- Per-campaign recipient rows — a recipient belongs to a phishing
security test and carries that test's click and reply timestamps;
use
knowbe4-phishing.
- Org- or department-level risk aggregates and benchmarks — use
knowbe4-reporting.
- Creating, disabling, or offboarding the actual mailbox account —
KnowBe4 users are training records, not identities. Microsoft 365
user lifecycle is
cipp-users.
Key Concepts
User Lifecycle
PROVISIONED ──> ACTIVE ──> ARCHIVED
│
└──> SUSPENDED
- Provisioned: User account created, not yet active in campaigns
- Active: User receiving phishing tests and training assignments
- Archived: User deactivated (left the organization)
- Suspended: Temporarily excluded from campaigns (leave, etc.)
Risk Score
The KnowBe4 risk score quantifies an individual user's susceptibility to social engineering:
| Score Range |
Risk Level |
Description |
| 0-20 |
Low |
User consistently passes phishing tests and completes training |
| 20-40 |
Moderate-Low |
Occasional failures but generally aware |
| 40-60 |
Moderate |
Average susceptibility, needs regular training |
| 60-80 |
High |
Frequently fails phishing tests, priority for remediation |
| 80-100 |
Critical |
Consistently fails tests, immediate intervention needed |
Risk Score Factors
The risk score is influenced by:
| Factor |
Weight |
Description |
| Phishing click rate |
High |
Percentage of phishing tests clicked |
| Data entry rate |
Very High |
Submitted credentials on landing pages |
| Training completion |
Medium |
Percentage of assigned training completed |
| Reporting rate |
Medium (positive) |
Frequency of reporting phishing via PAB |
| Time to click |
Low |
How quickly user clicked (impulse vs. deliberate) |
| Recency |
Modifier |
Recent events weighted more heavily |
Group Types
| Type |
Description |
Use Case |
| Department |
Organizational department (IT, Sales, HR) |
Department-specific campaigns |
| Location |
Office location or region |
Location-based targeting |
| Role-based |
Job function (Executive, Manager, Staff) |
Role-specific content |
| Risk-based |
Grouped by risk score range |
Targeted remediation |
| Custom |
Manual grouping |
Ad-hoc campaigns |
| Smart |
Auto-populated based on criteria |
Dynamic targeting |
Field Reference
User Fields
| Field |
Type |
Description |
id |
int |
Unique user identifier |
employee_number |
string |
HR employee number |
first_name |
string |
First name |
last_name |
string |
Last name |
email |
string |
Primary email address |
job_title |
string |
Job title |
department |
string |
Department name |
location |
string |
Office location |
division |
string |
Division |
manager_name |
string |
Manager's name |
manager_email |
string |
Manager's email |
employee_start_date |
datetime |
Hire date |
phish_prone_percentage |
float |
Individual phish-prone percentage |
current_risk_score |
float |
Current calculated risk score |
status |
string |
active, archived, suspended |
groups |
array |
Groups the user belongs to |
aliases |
array |
Email aliases |
joined_on |
datetime |
When user was added to KnowBe4 |
last_sign_in |
datetime |
Last platform sign-in |
custom_field_1 through custom_field_4 |
string |
Custom fields |
custom_date_1 |
datetime |
Custom date field |
organization |
string |
Organization name |
language |
string |
Preferred language |
comment |
string |
Admin notes |
Group Fields
| Field |
Type |
Description |
group_id |
int |
Unique group identifier |
name |
string |
Group name |
group_type |
string |
Type of group |
provisioning_managed |
boolean |
Managed by provisioning (AD/SCIM) |
member_count |
int |
Number of members |
current_risk_score |
float |
Group average risk score |
status |
string |
active, archived |
Risk Score History Fields
| Field |
Type |
Description |
risk_score |
float |
Risk score at this point in time |
date |
datetime |
Date of the risk score calculation |
change |
float |
Change from previous score |
factors |
object |
Breakdown of contributing factors |
MCP Tools
| Tool |
Description |
Parameters (required in bold) |
knowbe4_users_list |
List users — email, name, risk score, department |
status (active|archived), group_id, page, per_page |
knowbe4_users_get |
Get user details: risk score, PPP, training status, group memberships |
user_id |
knowbe4_users_risk_score_history |
Risk score history for one user |
user_id, page, per_page |
knowbe4_groups_list |
List groups — names, member counts, risk scores |
page, per_page |
knowbe4_groups_get |
Get group details, including risk score and member count |
group_id |
knowbe4_groups_members |
List members of a group, with user details for each |
group_id, page, per_page |
knowbe4_groups_risk_score_history |
Risk score history for one group |
group_id, page, per_page |
knowbe4_account_get |
Account-level info: subscription, seats, admin details, current risk score |
none |
knowbe4_account_risk_score_history |
Account-level risk score over time |
page, per_page |
There is no per-user event feed. No tool returns a user's phishing and
training history as a stream, and knowbe4_users_get does not carry one —
it returns the user's current standing (risk score, phish-prone
percentage, training status, groups), not the events behind it. Per-person
behavioural detail lives on the phishing side instead, as recipient
records within a specific Phishing Security Test: see
knowbe4_phishing_security_test_recipients and
knowbe4_phishing_security_test_recipient in the phishing skill. Building
"everything this user did" means walking the PSTs they were part of, which
is deliberate friction around individually identifying monitoring data —
see GOVERNANCE.md.
Note knowbe4_groups_list has no status filter, and a KnowBe4 group is
not a department: department is a field on the user record, so
department rollups have to be computed from knowbe4_users_list.
Common Workflows
User Risk Assessment
- Get user details with
knowbe4_users_get for current risk score
- Pull risk score history with
knowbe4_users_risk_score_history
- Check phishing behaviour -- find the PSTs the user was part of and
pull their recipient records (there is no per-user event feed)
- Compare to group average -- use
knowbe4_groups_get for the group's
risk score; note a group is not necessarily their department
- Recommend action based on risk level and trend direction
Identify High-Risk Users
- List all users with
knowbe4_users_list
- Sort by
current_risk_score descending
- Filter to users with risk score above threshold (e.g., 60+)
- Cross-reference with group membership for department context
- Generate prioritized remediation list
Group Risk Comparison
- List all groups with
knowbe4_groups_list
- Get group risk scores for each group
- Rank departments by average risk score
- Identify outlier groups -- significantly higher or lower than average
- Recommend targeted campaigns for high-risk groups
New Employee Onboarding
- Create user or verify auto-provisioned via AD/SCIM sync
- Add to appropriate groups (department, location, "New Hires")
- Verify enrollment in onboarding training campaign
- Monitor initial phishing test results
- Adjust group membership after onboarding period
User Offboarding
- Identify departing user by employee ID or email
- Archive the user to remove from active campaigns
- Note: Historical data (phishing results, training) is preserved for reporting
- Verify user is removed from active campaign targeting
Risk Score Trend Analysis
- Pull risk score history for user or group over 6-12 months
- Plot trend -- is risk decreasing (good) or increasing (bad)?
- Correlate with events -- training completion should precede risk decrease
- Identify plateau -- if risk score stopped improving, change training approach
- Report progress to stakeholders
Error Handling
Common API Errors
| Code |
Message |
Resolution |
| 400 |
Invalid user parameters |
Check email format, required fields |
| 401 |
Invalid API token |
Verify KNOWBE4_API_KEY |
| 403 |
Insufficient permissions |
API token needs User Management permissions |
| 404 |
User not found |
Verify user_id exists |
| 404 |
Group not found |
Verify group_id exists |
| 409 |
Duplicate email |
User with this email already exists |
| 429 |
Rate limit exceeded |
Implement backoff (see api-patterns) |
Data Considerations
| Issue |
Cause |
Resolution |
| Risk score is null |
New user with no test data |
Wait for first phishing test |
| User not in expected group |
AD sync not configured |
Check provisioning settings |
| Archived user still in reports |
Historical data preserved by design |
Filter by status=active |
| Group member count mismatch |
Includes archived users |
Filter by active status |
| Custom fields empty |
Not configured in console |
Set up in Account Settings |
Best Practices
- Use AD/SCIM provisioning -- Automate user lifecycle from Active Directory
- Maintain clean groups -- Regularly audit group membership
- Track risk trends -- Monthly risk score reviews are more useful than point-in-time
- Set risk thresholds -- Define organizational policy for risk score actions
- Segment campaigns by risk -- High-risk users need more frequent, targeted training
- Use manager email field -- Enables manager notification for training compliance
- Clean up departed users -- Archive promptly to keep metrics accurate
- Leverage custom fields -- Map to HR attributes for richer reporting
- Monitor group averages -- Department-level risk trends reveal systemic issues
- Correlate with incidents -- Compare risk scores to actual security incidents
Related Skills
1---2name: knowbe4-users3description: KnowBe4 user and group management: user lifecycle and status, group creation and membership, risk scores and risk score history, user event tracking, provisioning, and group-based targeting for campaigns.4---56# KnowBe4 User and Group Management78## Overview910Users and groups are the foundation of KnowBe4's security awareness platform. Users represent individual employees who receive phishing simulations and training. Groups organize users for targeted campaign delivery, reporting segmentation, and risk analysis. Each user has a risk score calculated from their phishing test performance and training completion, providing a quantitative measure of human security risk.1112## Anti-triggers1314- **Proofpoint's user risk data** — both vendors expose a per-user15 "risk score", but KnowBe4's is derived from simulations the MSP ran,16 while Proofpoint's Attack Index counts real attacks aimed at that17 person. They are not interchangeable; use `proofpoint-people` for18 VAP, Attack Index, and top-clicker data.19- **Per-campaign recipient rows** — a recipient belongs to a phishing20 security test and carries that test's click and reply timestamps;21 use `knowbe4-phishing`.22- **Org- or department-level risk aggregates and benchmarks** — use23 `knowbe4-reporting`.24- **Creating, disabling, or offboarding the actual mailbox account** —25 KnowBe4 users are training records, not identities. Microsoft 36526 user lifecycle is `cipp-users`.2728## Key Concepts2930### User Lifecycle3132```33PROVISIONED ──> ACTIVE ──> ARCHIVED34 │35 └──> SUSPENDED36```3738- **Provisioned**: User account created, not yet active in campaigns39- **Active**: User receiving phishing tests and training assignments40- **Archived**: User deactivated (left the organization)41- **Suspended**: Temporarily excluded from campaigns (leave, etc.)4243### Risk Score4445The KnowBe4 risk score quantifies an individual user's susceptibility to social engineering:4647| Score Range | Risk Level | Description |48|-------------|------------|-------------|49| 0-20 | Low | User consistently passes phishing tests and completes training |50| 20-40 | Moderate-Low | Occasional failures but generally aware |51| 40-60 | Moderate | Average susceptibility, needs regular training |52| 60-80 | High | Frequently fails phishing tests, priority for remediation |53| 80-100 | Critical | Consistently fails tests, immediate intervention needed |5455### Risk Score Factors5657The risk score is influenced by:5859| Factor | Weight | Description |60|--------|--------|-------------|61| Phishing click rate | High | Percentage of phishing tests clicked |62| Data entry rate | Very High | Submitted credentials on landing pages |63| Training completion | Medium | Percentage of assigned training completed |64| Reporting rate | Medium (positive) | Frequency of reporting phishing via PAB |65| Time to click | Low | How quickly user clicked (impulse vs. deliberate) |66| Recency | Modifier | Recent events weighted more heavily |6768### Group Types6970| Type | Description | Use Case |71|------|-------------|----------|72| **Department** | Organizational department (IT, Sales, HR) | Department-specific campaigns |73| **Location** | Office location or region | Location-based targeting |74| **Role-based** | Job function (Executive, Manager, Staff) | Role-specific content |75| **Risk-based** | Grouped by risk score range | Targeted remediation |76| **Custom** | Manual grouping | Ad-hoc campaigns |77| **Smart** | Auto-populated based on criteria | Dynamic targeting |7879## Field Reference8081### User Fields8283| Field | Type | Description |84|-------|------|-------------|85| `id` | int | Unique user identifier |86| `employee_number` | string | HR employee number |87| `first_name` | string | First name |88| `last_name` | string | Last name |89| `email` | string | Primary email address |90| `job_title` | string | Job title |91| `department` | string | Department name |92| `location` | string | Office location |93| `division` | string | Division |94| `manager_name` | string | Manager's name |95| `manager_email` | string | Manager's email |96| `employee_start_date` | datetime | Hire date |97| `phish_prone_percentage` | float | Individual phish-prone percentage |98| `current_risk_score` | float | Current calculated risk score |99| `status` | string | active, archived, suspended |100| `groups` | array | Groups the user belongs to |101| `aliases` | array | Email aliases |102| `joined_on` | datetime | When user was added to KnowBe4 |103| `last_sign_in` | datetime | Last platform sign-in |104| `custom_field_1` through `custom_field_4` | string | Custom fields |105| `custom_date_1` | datetime | Custom date field |106| `organization` | string | Organization name |107| `language` | string | Preferred language |108| `comment` | string | Admin notes |109110### Group Fields111112| Field | Type | Description |113|-------|------|-------------|114| `group_id` | int | Unique group identifier |115| `name` | string | Group name |116| `group_type` | string | Type of group |117| `provisioning_managed` | boolean | Managed by provisioning (AD/SCIM) |118| `member_count` | int | Number of members |119| `current_risk_score` | float | Group average risk score |120| `status` | string | active, archived |121122### Risk Score History Fields123124| Field | Type | Description |125|-------|------|-------------|126| `risk_score` | float | Risk score at this point in time |127| `date` | datetime | Date of the risk score calculation |128| `change` | float | Change from previous score |129| `factors` | object | Breakdown of contributing factors |130131## MCP Tools132133| Tool | Description | Parameters (required in **bold**) |134|------|-------------|----------------|135| `knowbe4_users_list` | List users — email, name, risk score, department | `status` (`active`\|`archived`), `group_id`, `page`, `per_page` |136| `knowbe4_users_get` | Get user details: risk score, PPP, training status, group memberships | **`user_id`** |137| `knowbe4_users_risk_score_history` | Risk score history for one user | **`user_id`**, `page`, `per_page` |138| `knowbe4_groups_list` | List groups — names, member counts, risk scores | `page`, `per_page` |139| `knowbe4_groups_get` | Get group details, including risk score and member count | **`group_id`** |140| `knowbe4_groups_members` | List members of a group, with user details for each | **`group_id`**, `page`, `per_page` |141| `knowbe4_groups_risk_score_history` | Risk score history for one group | **`group_id`**, `page`, `per_page` |142| `knowbe4_account_get` | Account-level info: subscription, seats, admin details, current risk score | none |143| `knowbe4_account_risk_score_history` | Account-level risk score over time | `page`, `per_page` |144145**There is no per-user event feed.** No tool returns a user's phishing and146training history as a stream, and `knowbe4_users_get` does not carry one —147it returns the user's current standing (risk score, phish-prone148percentage, training status, groups), not the events behind it. Per-person149behavioural detail lives on the phishing side instead, as recipient150records within a specific Phishing Security Test: see151`knowbe4_phishing_security_test_recipients` and152`knowbe4_phishing_security_test_recipient` in the phishing skill. Building153"everything this user did" means walking the PSTs they were part of, which154is deliberate friction around individually identifying monitoring data —155see GOVERNANCE.md.156157Note `knowbe4_groups_list` has no `status` filter, and a KnowBe4 group is158not a department: `department` is a field on the user record, so159department rollups have to be computed from `knowbe4_users_list`.160161## Common Workflows162163### User Risk Assessment1641651. **Get user details** with `knowbe4_users_get` for current risk score1662. **Pull risk score history** with `knowbe4_users_risk_score_history`1673. **Check phishing behaviour** -- find the PSTs the user was part of and168 pull their recipient records (there is no per-user event feed)1694. **Compare to group average** -- use `knowbe4_groups_get` for the group's170 risk score; note a group is not necessarily their department1715. **Recommend action** based on risk level and trend direction172173### Identify High-Risk Users1741751. **List all users** with `knowbe4_users_list`1762. **Sort by `current_risk_score`** descending1773. **Filter** to users with risk score above threshold (e.g., 60+)1784. **Cross-reference** with group membership for department context1795. **Generate prioritized remediation list**180181### Group Risk Comparison1821831. **List all groups** with `knowbe4_groups_list`1842. **Get group risk scores** for each group1853. **Rank departments** by average risk score1864. **Identify outlier groups** -- significantly higher or lower than average1875. **Recommend targeted campaigns** for high-risk groups188189### New Employee Onboarding1901911. **Create user** or verify auto-provisioned via AD/SCIM sync1922. **Add to appropriate groups** (department, location, "New Hires")1933. **Verify enrollment** in onboarding training campaign1944. **Monitor initial phishing test** results1955. **Adjust group membership** after onboarding period196197### User Offboarding1981991. **Identify departing user** by employee ID or email2002. **Archive the user** to remove from active campaigns2013. **Note**: Historical data (phishing results, training) is preserved for reporting2024. **Verify** user is removed from active campaign targeting203204### Risk Score Trend Analysis2052061. **Pull risk score history** for user or group over 6-12 months2072. **Plot trend** -- is risk decreasing (good) or increasing (bad)?2083. **Correlate with events** -- training completion should precede risk decrease2094. **Identify plateau** -- if risk score stopped improving, change training approach2105. **Report progress** to stakeholders211212## Error Handling213214### Common API Errors215216| Code | Message | Resolution |217|------|---------|------------|218| 400 | Invalid user parameters | Check email format, required fields |219| 401 | Invalid API token | Verify KNOWBE4_API_KEY |220| 403 | Insufficient permissions | API token needs User Management permissions |221| 404 | User not found | Verify user_id exists |222| 404 | Group not found | Verify group_id exists |223| 409 | Duplicate email | User with this email already exists |224| 429 | Rate limit exceeded | Implement backoff (see api-patterns) |225226### Data Considerations227228| Issue | Cause | Resolution |229|-------|-------|------------|230| Risk score is null | New user with no test data | Wait for first phishing test |231| User not in expected group | AD sync not configured | Check provisioning settings |232| Archived user still in reports | Historical data preserved by design | Filter by status=active |233| Group member count mismatch | Includes archived users | Filter by active status |234| Custom fields empty | Not configured in console | Set up in Account Settings |235236## Best Practices2372381. **Use AD/SCIM provisioning** -- Automate user lifecycle from Active Directory2392. **Maintain clean groups** -- Regularly audit group membership2403. **Track risk trends** -- Monthly risk score reviews are more useful than point-in-time2414. **Set risk thresholds** -- Define organizational policy for risk score actions2425. **Segment campaigns by risk** -- High-risk users need more frequent, targeted training2436. **Use manager email field** -- Enables manager notification for training compliance2447. **Clean up departed users** -- Archive promptly to keep metrics accurate2458. **Leverage custom fields** -- Map to HR attributes for richer reporting2469. **Monitor group averages** -- Department-level risk trends reveal systemic issues24710. **Correlate with incidents** -- Compare risk scores to actual security incidents248249## Related Skills250251- [KnowBe4 Phishing](../phishing/SKILL.md) - Phishing simulation campaigns252- [KnowBe4 Training](../training/SKILL.md) - Training campaign management253- [KnowBe4 Reporting](../reporting/SKILL.md) - Risk metrics and dashboards254- [KnowBe4 API Patterns](../api-patterns/SKILL.md) - Authentication, pagination, and rate limits