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

# Required tables

The three core tables iCustomer Platform reads from your warehouse: Accounts, Contacts, and Events, plus the optional tables that enhance scoring and outcome tracking.

{% hint style="info" %}
**For warehouse workspaces.**
{% endhint %}

The platform runs on three core data entities. Everything else is optional.

| Table    | Required | Purpose                                   |
| -------- | -------- | ----------------------------------------- |
| Accounts | Yes      | The companies you target                  |
| Contacts | Yes      | The people at those companies             |
| Events   | Yes      | The behavioral signals that drive scoring |

Optional tables that make the system sharper:

| Table            | Required | Purpose                            |
| ---------------- | -------- | ---------------------------------- |
| Opportunities    | Optional | Pipeline data for outcome tracking |
| Products         | Optional | Product-usage signals              |
| Website Sessions | Optional | Anonymous visitor tracking         |

## The minimum each table needs

* **Accounts**: `account_id` (unique), `name`, and `domain`. The domain is the matching key, so it matters most.
* **Contacts**: `contact_id` (unique), `account_id` (the link to the company), and `email`. Email drives identity matching.
* **Events**: `event_id` (unique), `timestamp`, `entity_id` plus `entity_type` (who did it), and `event_type` (what happened).

Fields beyond the minimum feed scoring directly. Industry, employee count, and revenue sharpen Fit. Title, department, and seniority map the buying committee. UTM fields on events carry attribution. Field types, examples, and warehouse DDL are covered when our team sets up your warehouse connection.

{% hint style="info" %}
Blanks are not neutral. A missing domain or industry silently drops good accounts out of ranking, so completeness on the matching and Fit fields pays for itself.
{% endhint %}

## Quality bar

| Check                                         | Target                              |
| --------------------------------------------- | ----------------------------------- |
| `account_id`, `contact_id`, `event_id` unique | 100%                                |
| `account.domain` present                      | above 95%                           |
| `contact.email` present                       | above 95%                           |
| `event.timestamp` present                     | 100%                                |
| Accounts and Contacts refresh                 | daily (weekly minimum)              |
| Events refresh                                | real-time or hourly (daily minimum) |

Run the readiness checks in [Preparing your data](/setup-and-onboarding/preparing-your-data.md) before connecting, and monitor after connecting in [Data health](/setup-and-onboarding/data-health.md).

## Outside the app

Everything on this page can be inspected outside the app via [API](/settings/api-keys.md) and [MCP](/iharness/bring-your-own-agent.md) as well.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.icustomer.ai/integrations/required-tables.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
