# Active users

## Account ownership

The purpose of Kernel's AI Cleaning & Hierarchies module is to bring the CRM into a functional state *without* risking any existing business processes.

When making structural changes to a live CRM, one of the most important considerations is whether an account is actively owned and actively managed by a sales rep.

An account may be out of business or an exact duplicate of another account, but deleting or merging this account may still be disruptive to a sales rep who was actively managing this account.

Account ownership is an integral part of how Kernel thinks of [account-risk](https://docs.kernel.ai/app/configuration/account-risk "mention")

## User definitions

Kernel categorizes all users as either Active, Inactive, or Integration

### How categorization works

Kernel applies user rules in a specific order of priority:

***

1. **Your Custom Rules (Highest Priority)**
   * **User Overrides**: Any user you’ve manually assigned to a category will be placed there first.
   * **Custom Conditions**: If you’ve defined custom conditions for Active, Inactive, or Integration, these rules are applied before Kernel’s defaults.

This means your rules always take precedence over Kernel’s logic.

***

2. **Kernel’s Default Logic**\
   If a user doesn't match any of your custom rules, we apply our default logic in the following order:
   * **Integration Users**:

     A user is marked as Integration if they meet any of these conditions. If they do, no further rules are checked.

     * Keyword Match: Their Name, Username, or Profile Name contains terms like "integration," "salesforce," or "zoominfo" (case-insensitive).
     * API Permission: Profile has API-only permissions.
     * User Type: Their user type field is set to 'Integration' or 'Api Only User'.
   * **Inactive Users**:

     If the user is not an Integration user, we'll mark them as Inactive if they meet any of these conditions:

     * Inactive Flag: Their `IsActive` field is set to false.
     * Last Login: Their `LastLoginDate` was more than 90 days ago.
   * **Active Users:**

     Finally, they're marked Active: If a user is not categorized as Integration or Inactive by any of the rules above, they are considered Active.

***

### Summary Table

<table><thead><tr><th width="157.0390625">Category</th><th>Definition</th></tr></thead><tbody><tr><td><h4>Active</h4></td><td>Active human users, e.g., SDRs and Account Executives.</td></tr><tr><td><h4>Inactive</h4></td><td>Inactive human users, including users who have not been active <a data-footnote-ref href="#user-content-fn-1">for at least 3 months</a>, as well as RevOps and System Administrators.</td></tr><tr><td><h4>Integration</h4></td><td>Integration (robot) users, e.g., users called “Integration User” or users with a Profile permission set that gives API access only.</td></tr></tbody></table>

## User fields

Kernel uses the following standard fields in Salesforce:

* `Name`
* `Username`
* `Title`
* `ProfileId` (--> `Profile.Name`)
* `LastLoginDate`
* `IsActive`
* `UserType`

Kernel's algorithm uses a combination of static rules, keyword matching, and AI analysis to determine which type of user it is.

<table><thead><tr><th width="196.2890625">Name</th><th width="119.67578125">Title</th><th width="110.11328125">IsActive</th><th width="151.56640625">LastLoginDate</th><th>User type<select><option value="85tv6bFe8TSM" label="Active" color="blue"></option><option value="gKx7pNwpjghg" label="Inactive" color="blue"></option><option value="vx4qRZwn4CKu" label="Integration" color="blue"></option></select></th></tr></thead><tbody><tr><td>Gary Smith</td><td>Account Executive</td><td>false</td><td>[6 months ago]</td><td><span data-option="gKx7pNwpjghg">Inactive</span></td></tr><tr><td>Ringlead Integration</td><td>null</td><td>true</td><td>[1 day ago]</td><td><span data-option="vx4qRZwn4CKu">Integration</span></td></tr><tr><td>Betty Smith</td><td>SDR</td><td>true</td><td>[3 days ago]</td><td><span data-option="85tv6bFe8TSM">Active</span></td></tr><tr><td>Zak Benney</td><td>RevOps</td><td>true</td><td>[1 day ago]</td><td><span data-option="gKx7pNwpjghg">Inactive</span></td></tr><tr><td>Chad Smith</td><td>Account Executive</td><td>true</td><td>[6 months ago]</td><td><span data-option="gKx7pNwpjghg">Inactive</span></td></tr></tbody></table>

## Custom logic

Kernel's standard logic can be modified to your needs, and also augmented with custom logic, such as using custom fields on the User object in the logic. For example, these may be fields related to cost centers, segments, managers, or title variations.&#x20;

If you don't use the native `OwnerId` field to track account ownership, e.g., using a custom field, Kernel can also accommodate this.

<figure><img src="https://1215786129-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvRYB7XIKCnmUi9oCEQGV%2Fuploads%2FZTJn9xVWTM7MgCV6aKcf%2Fimage.png?alt=media&#x26;token=279c3a83-374a-4bf0-8a7e-7f0eb1075687" alt=""><figcaption></figcaption></figure>

[^1]: Kernel's default period is 3 months, but this is fully configurable by the user
