> For the complete documentation index, see [llms.txt](https://docs.kernel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kernel.ai/integrations/salesforce-integration/custom-object.md).

# Custom Object

{% embed url="<https://assets.usepylon.com/aec4c73f-c8b3-4399-af95-4c17e327d7b0%2F3000f7af-e1b0-465a-9d76-acb59311a2c5-salesforce-object-model-and-field-ownership.mp4?Expires=253370764800&Signature=rZbvIg-GpHUavh8dF4hDnljC-nIL8rcysRTg6tnJzmLqc6ZOOeVy3tGjCe2QPyHvEFM-ExYiyX-~bkOtUvNKBy0RO~gVmjvQsTdsvL83hg-x6BoYNBNivv5E0weH7PrTStcyRYmpPE-EwZ5R64WJZpADKpJzbYHkBaxhkUpiDlZTKNOVvxjpu-tiDYE8nXj93sHhC2D98a1fAqBjYOEwxFq5y2yRt8YsrC9KURZlR1Op1KRqBcKCQ2rZvE4JBvSqmexbGcTbv4-xScTb5l6x8DWjR6qd9z2iKVfsiIlWB7SzI8lBekY1dbLgD45Ad0xuxGRYZNt8Sulj45LbMgxlSg__&Key-Pair-Id=K3NV4LZ47N8M46>" %}

Kernel integrates with Salesforce to keep your account data clean, enriched, and up-to-date. You can choose whether Kernel syncs directly into your Salesforce Account records or into a dedicated custom object (Kernel\_Account\_\_c) that Kernel manages.

By default, we recommend the custom object approach, as it ensures Kernel owns the enrichment and cleaning process while maintaining a 1:1 mapping between your Accounts and Kernel-managed records. This provides maximum flexibility and minimizes risk to your production Salesforce data.

For hierarchies we would also be creating `Kernel_Account__c` records that you can turn into `Account` and link together. This way, you can have full hierarchy coverage while ensuring your CRM is clean.

<figure><img src="/files/i4b3qgKBb2sDtaBP9u41" alt=""><figcaption></figcaption></figure>

The `Security conscious` route limits the fields that Kernel will read from in your CRM. In this set up Kernel will only pull and push to the Kernel Account Object. Therefore we will only be able to interact with data that shared with the Account Object. These fields are very minimal covering basic account details. For a successful cleaning process we recommend Kernel pulling directly from the Account object.

## 1. Reading from Salesforce

* Kernel connects to your Salesforce instance via an integration as configured per the Salesforce Integration documentation.
* Account records (with selected fields and filters) are read into Kernel’s platform.
* This data is then prepared for enrichment, cleaning, and deduplication.

## 2. Processing in Kernel

* Kernel applies enrichment (e.g., adding missing firmographic data, hierarchy modeling).
* Cleaning rules are applied to the standard fields.
* Duplicate records are flagged and grouped for review.

## 3. Writing Back to Salesforce

* Kernel writes updates back into Salesforce at a specified cadence.
* By default, the updates flow into the `Kernel_Account__c`.
* Optionally, you can configure Kernel to write directly into the Account records if that better fits your workflow.

### Setting up the object

#### 1. Navigate to the Record Sync tab

Within the Kernel application (search "Kernel" in the app launcher) you need to go to the **Record Sync** tab. The **Configuration** tab will have been complete while doing the [Package Installation Guide](/integrations/salesforce-integration/package-installation-guide.md).

#### 2. Configure the sync

You need to configure your account object and the Kernel object. The **Source Object** needs to be the object that you use in Salesforce to represent an account. The **Target Object** should be the `Kernel Account` object.

You then need to link the objects using the Salesforce ID. The fields will be as shown in the screenshot.

Finally label the configuration.

<figure><img src="/files/bKIKkygWpJHOEg3Av0Qn" alt=""><figcaption></figcaption></figure>

#### 3. Set up field sync (security conscious route)

This allows Kernel to pull from your source object via the custom object. By default Kernel recommends we pull fields directly from the Account object to allow for maximum flexibility in fields used. If you want to limit access to certain fields the required ones are defined here. You will need to map the fields to Kernel. You will not be able to populate all fields, many are for use later by Kernel in pushing data back to your CRM. Ensure the following are mapped at a minimum:

`Website` , `CreatedDate` and `ActivityDate`

If Kernel is pulling from the Account object this can be left blank.

<figure><img src="/files/2nSH7WuL80E5bL43yN3C" alt=""><figcaption></figcaption></figure>

#### 4. Filter Records

Finally you can filter out records that you don't want data populated for. We recommend leaving this blank. The primary use case is for any accounts with confidential/sensitive information that you don't want Kernel having access to.

Once complete you can sync the records to enact your latest changes.

{% embed url="<https://www.loom.com/share/c68463bebe13411cb7fd1e77293f08a7>" %}

## Custom Object reference

When enabled, Kernel creates and maintains `Kernel_Account__c` records in Salesforce. Each record links 1:1 to a Salesforce Account through the account reference field, stores Kernel-enriched values, and supports CRM cleaning workflows such as deduplication and hierarchy modeling.

The standard Kernel Account object includes the following fields:

<table data-full-width="true"><thead><tr><th>Category</th><th>Field Label</th><th>Salesforce Name</th><th>Type</th><th>Length</th><th>Help Text</th></tr></thead><tbody><tr><td>Identity</td><td>Linked Account</td><td>Linked_Account_Field__c</td><td>Lookup (Account)</td><td>18</td><td>Lookup to the linked standard Account record</td></tr><tr><td>Identity</td><td>KERN ID</td><td>Kernel_ID__c</td><td>Text</td><td>255</td><td>Unique Kernel identifier for this account</td></tr><tr><td>Identity</td><td>Kernel - Legal name</td><td>Kernel_Legal_Name__c</td><td>Text</td><td>255</td><td>Registered legal name of the entity</td></tr><tr><td>Identity</td><td>Kernel - Legal name (Reasoning)</td><td>Kernel_Legal_Name_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel chose this legal name</td></tr><tr><td>Identity</td><td>Kernel - LinkedIn URL</td><td>Kernel_Linkedin_Url__c</td><td>URL</td><td>255</td><td>LinkedIn company page URL</td></tr><tr><td>Identity</td><td>Kernel - Website</td><td>Kernel_Website__c</td><td>URL</td><td>255</td><td>Primary website URL for the entity</td></tr><tr><td>Firmographics</td><td>Kernel - Address</td><td>Kernel_Address__c</td><td>Text</td><td>255</td><td>Street address</td></tr><tr><td>Firmographics</td><td>Kernel - City</td><td>Kernel_City__c</td><td>Text</td><td>255</td><td>City</td></tr><tr><td>Firmographics</td><td>Kernel - State</td><td>Kernel_State__c</td><td>Text</td><td>255</td><td>State or province</td></tr><tr><td>Firmographics</td><td>Kernel - Country</td><td>Kernel_Country__c</td><td>Text</td><td>255</td><td>Country</td></tr><tr><td>Firmographics</td><td>Kernel - Location (Reasoning)</td><td>Kernel_Location_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel chose this address</td></tr><tr><td>Firmographics</td><td>Kernel - Country of incorporation</td><td>Kernel_Country_Of_Incorporation__c</td><td>Text</td><td>255</td><td>Country where the entity is legally registered</td></tr><tr><td>Firmographics</td><td>Kernel - Headcount</td><td>Kernel_Headcount__c</td><td>Number</td><td>18</td><td>Recommended payroll headcount value for CRM workflows</td></tr><tr><td>Firmographics</td><td>Kernel - Headcount (Consolidated)</td><td>Kernel_Headcount_Consolidated__c</td><td>Number</td><td>18</td><td>Consolidated payroll headcount for the entity plus its subsidiaries, when available</td></tr><tr><td>Firmographics</td><td>Kernel - Headcount (Source)</td><td>Kernel_Headcount_Source__c</td><td>Text</td><td>255</td><td>Whether Kernel identified the figure from evidence or estimated it from supporting signals</td></tr><tr><td>Firmographics</td><td>Kernel - Headcount (Reasoning)</td><td>Kernel_Headcount_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Source, date, scope, method, and caveats for Kernel headcount</td></tr><tr><td>Firmographics</td><td>Kernel - Headcount (Confidence)</td><td>Kernel_Headcount_Confidence__c</td><td>Text</td><td>255</td><td>Headcount confidence: Low, Medium, or High</td></tr><tr><td>Firmographics</td><td>Kernel - Revenue</td><td>Kernel_Revenue__c</td><td>Number</td><td>18,2</td><td>Estimated annual revenue in USD</td></tr><tr><td>Firmographics</td><td>Kernel - Revenue (Reasoning)</td><td>Kernel_Revenue_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel estimated this revenue</td></tr><tr><td>Entity classification</td><td>Kernel - Entity category</td><td>Kernel_Entity_Category__c</td><td>Text</td><td>255</td><td>Entity type: Company, Government, Education, etc.</td></tr><tr><td>Entity classification</td><td>Kernel - Entity sub-category</td><td>Kernel_Entity_Sub_Category__c</td><td>Text</td><td>255</td><td>Entity sub-type within the main category</td></tr><tr><td>Entity classification</td><td>Kernel - Entity match (Reasoning)</td><td>Kernel_Entity_Match_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel matched this entity to this identity</td></tr><tr><td>Entity classification</td><td>Kernel - Entity match (Confidence)</td><td>Kernel_Entity_Match_Confidence__c</td><td>Text</td><td>255</td><td>Entity match confidence: HIGH, MEDIUM, or LOW</td></tr><tr><td>Entity classification</td><td>Kernel - Operational status</td><td>Kernel_Operational_Status__c</td><td>Text</td><td>255</td><td>Operating status: Active, Out of Business, or Absorbed</td></tr><tr><td>Entity classification</td><td>Kernel - Operational status (Reasoning)</td><td>Kernel_Operational_Status_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel assigned this operational status</td></tr><tr><td>Entity classification</td><td>Kernel - Regional subsidiary</td><td>Kernel_Entity_Regional_Scope__c</td><td>Checkbox</td><td>-</td><td>Whether this entity is a regional subsidiary</td></tr><tr><td>Entity classification</td><td>Kernel - Regional scope</td><td>Kernel_Regional_Scope__c</td><td>Text</td><td>255</td><td>Region or country this subsidiary operates in</td></tr><tr><td>Entity classification</td><td>Kernel - Regional scope (Reasoning)</td><td>Kernel_Entity_Regional_Scope_Reason__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel flagged this as regional or not</td></tr><tr><td>Vertical</td><td>Kernel - Main vertical</td><td>Kernel_Main_Vertical__c</td><td>Text Area</td><td>255</td><td>Industry vertical per your custom schema</td></tr><tr><td>Vertical</td><td>Kernel - Main vertical (Reasoning)</td><td>Kernel_Main_Vertical_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel assigned this vertical</td></tr><tr><td>Vertical</td><td>Kernel - Sub-vertical</td><td>Kernel_Sub_Vertical__c</td><td>Text Area</td><td>255</td><td>Industry sub-vertical per your custom schema</td></tr><tr><td>Vertical</td><td>Kernel - Sub-vertical (Reasoning)</td><td>Kernel_Sub_Vertical_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel assigned this sub-vertical</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent KERN ID</td><td>Kernel_Parent_Kern_Id__c</td><td>Text</td><td>255</td><td>Kernel ID of the immediate parent entity</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent legal name</td><td>Kernel_Parent_Legal_Name__c</td><td>Text</td><td>255</td><td>Legal name of the immediate parent</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent trading name</td><td>Kernel_Parent_Trading_Name__c</td><td>Text</td><td>255</td><td>Trading name of the immediate parent</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent website</td><td>Kernel_Parent_Website__c</td><td>URL</td><td>255</td><td>Website of the immediate parent</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent country of incorporation</td><td>Kernel_Parent_Country_Incorp__c</td><td>Text</td><td>255</td><td>Country where the parent is legally registered</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent entity category</td><td>Kernel_Parent_Entity_Category__c</td><td>Text</td><td>255</td><td>Parent entity type: Company, Education, Government, etc.</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent entity sub-category</td><td>Kernel_Parent_Entity_Sub_Category__c</td><td>Text</td><td>255</td><td>Parent entity sub-type</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent (Reasoning)</td><td>Kernel_Parent_Reasoning__c</td><td>Text Area (Long)</td><td>10000</td><td>Why Kernel identified this parent</td></tr><tr><td>Parent hierarchy</td><td>Kernel - Parent (Confidence)</td><td>Kernel_Parent_Confidence__c</td><td>Text</td><td>255</td><td>Parent identification confidence: HIGH, MEDIUM, or LOW</td></tr><tr><td>Ultimate parent</td><td>Kernel - Top Parent Account ID</td><td>Kernel_Top_Parent_Account_Id__c</td><td>Text</td><td>255</td><td>Kernel ID of the ultimate parent in the corporate hierarchy. Used as the grouping key for hierarchy queries and as the BUILDING sentinel during async processing.</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent account</td><td>Kernel_Ultimate_Parent_Account__c</td><td>Lookup (Account)</td><td>18</td><td>Lookup to the top-level parent account record</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent KERN ID</td><td>Kernel_Ultimate_Parent_Kern_Id__c</td><td>Text</td><td>255</td><td>Kernel ID of the top-level parent</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent legal name</td><td>Kernel_Ultimate_Parent_Legal_Name__c</td><td>Text</td><td>255</td><td>Legal name of the top-level parent</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent name</td><td>Kernel_Ultimate_Parent_Name__c</td><td>Text</td><td>255</td><td>Name of the top-level parent in the system</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent trading name</td><td>Kernel_Ultimate_Parent_Trading_Name__c</td><td>Text</td><td>255</td><td>Trading name of the top-level parent</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent URL</td><td>Kernel_Ultimate_Parent_Url__c</td><td>URL</td><td>255</td><td>Website of the top-level parent</td></tr><tr><td>Ultimate parent</td><td>Kernel - Ultimate parent incorp. country</td><td>Kernel_Ult_Parent_Country_Incorp__c</td><td>Text</td><td>255</td><td>Country where the top-level parent is registered (ISO code)</td></tr><tr><td>Identity</td><td>Kernel - Tracked</td><td>Kernel_Tracked__c</td><td>Checkbox</td><td>-</td><td>Whether Kernel will auto-refresh this account</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.kernel.ai/integrations/salesforce-integration/custom-object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
