> For the complete documentation index, see [llms.txt](https://docs.dinmo.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dinmo.io/identity-resolution/event-stitching/event-profile-graph.md).

# Event profile graph

The event profile graph is the structure Event Stitching builds to connect event records through configured identifiers.

For step-by-step examples of how identifiers create, protect, merge, or exclude event profiles, see [How Event Stitching works](/identity-resolution/event-stitching/event-stitching-how-it-works.md).

## Core terms

| Term                        | Meaning                                                                                                      |
| --------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Event record                | A source row from an event model, such as a purchase, page view, session, app event, or support interaction. |
| Identifier observation      | A standardized identifier value observed on an event, such as email, user ID, anonymous ID, or device ID.    |
| Event profile               | A group of event records that DinMo can safely connect through configured identifiers.                       |
| `dinmo_stitched_profile_id` | The resolved event profile key produced by Event Stitching.                                                  |
| Redirect                    | A record that shows one event profile was merged into another event profile.                                 |

## Graph logic

Event Stitching does not merge every event that shares any value.

DinMo evaluates identifiers by priority. Higher-confidence identifiers run first and can protect the graph from weaker identifiers that would otherwise connect unrelated behavior. Lower-confidence identifiers can still improve coverage, but only within the limits and windows you configure.

This model is useful when the same person can appear as:

* an anonymous visitor before login
* a known user after authentication
* a purchaser with an email or phone number
* an app user with a device or installation identifier
* a support contact with a CRM or ticketing identifier

## Over-merge protection

Event graphs can collapse when shared or low-quality identifiers are trusted too much.

Common risky patterns include:

| Pattern                 | Risk                                                                                 | Typical control                                                 |
| ----------------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------- |
| Shared device ID        | Several people use the same browser, tablet, kiosk, or call-center device.           | Lower priority, stitching lifetime, maximum profiles per value. |
| Placeholder values      | Values such as `unknown`, `null`, `undefined`, or test emails appear on many events. | Blocked values and standardization.                             |
| Reused email or phone   | A family, business, or support workflow reuses one contact value.                    | Maximum unique values and manual review of large profiles.      |
| Long-lived anonymous ID | A weak identifier connects too much history after login or account switching.        | Stitching lifetime and anchor protection.                       |

## Identity stability

During normal incremental runs, existing event profiles remain stable when new events attach to them.

When new evidence safely connects two event profiles, one event profile can survive and the other can redirect to it. Use redirect and audit outputs to understand these changes instead of treating old `dinmo_stitched_profile_id` values as deleted.

Use `resolved_dinmo_stitched_profile_id` as the current event-journey key when older event profile IDs redirect after a merge.

## Downstream use

Use the event profile graph to:

* analyze behavior across anonymous and known events
* build event-level features for analytics or modeling
* inspect identifier quality before broad activation
* understand how event coverage changes over time

Use [Event Stitching output tables](/identity-resolution/event-stitching/event-stitching-output-tables.md) to consume the generated tables.


---

# 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.dinmo.io/identity-resolution/event-stitching/event-profile-graph.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.
