> For the complete documentation index, see [llms.txt](https://docs.aloop.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.aloop.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 dynamically by asking a question.

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

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
