Investigate results
Use this page when you need to understand why events were stitched, why events were excluded, or whether the event profile graph is safe to use downstream.
Start in the UI, then use the warehouse output tables for detailed investigation.
Investigation workflow
Use this order after a new project, a configuration change, or an unexpected metric movement:
Open Overview to check processed events, stitch rate, profiles, trends, model breakdown, and identifier breakdown.
Open Runs to confirm the latest run succeeded and processed the expected event volume.
Open Quality to inspect health checks, identifier quality, exclusion reasons, and audit entries.
Open Policy to review priority, anchors, limits, stitching lifetime, and blocked values.
Query the public output tables when you need event-level or profile-level proof.
Overview tab
Use Overview to answer:
How many events were processed in the latest run?
What share of events were stitched?
How many active profiles exist after the run?
What share of profiles are known through anchor identifiers?
Which model has the lowest stitch rate?
Which identifier has low coverage or high conflicts?

If the stitch rate is lower than expected, look first at the model breakdown. A single model with low stitch rate often points to missing identifiers, wrong field mapping, or a tracking change.
If active conflicts are not zero, inspect Quality before using outputs downstream.
Runs tab
Use Runs to answer:
Did the latest run succeed?
Was the run manual or scheduled?
How many events were processed?
How many were stitched?
How many were excluded?
Did stitch rate change sharply from previous runs?

When a run fails, check source field changes, output permissions, and whether the selected event partition column still exists.
Quality tab
Use Quality to answer:
Are health checks green?
Are active conflicts zero?
Which identifiers have low coverage?
Which identifiers have many conflicted values?
Why were events excluded?
Which audit events explain recent graph changes?

Interpret exclusion reasons this way:
no_matchable_identifier
The event had no usable identifier after standardization, blocked values, and stitching lifetime checks.
Check mappings and identifier coverage.
conflicted_identifier_value
The event depended on a quarantined identifier value.
Inspect weak identifiers, max profiles per value, and blocked values.
limit_conflict
Stitching the event would violate a configured identifier policy.
Review identifier priority, anchor settings, and limits.
Policy tab
Use Policy when you need to adjust matching behavior.

Common changes:
Low stitch rate because identifiers expire too quickly
Increase stitching lifetime for trusted identifiers.
Weak identifiers connect too many profiles
Lower Max profiles per value or shorten stitching lifetime.
One profile accumulates too many active values for one identifier
Lower Max unique values per profile.
Placeholder values appear in audit or exclusions
Add them to blocked values.
Weak identifiers dominate matching
Move them lower in priority and keep anchors at the top.
Do not loosen limits only to improve stitch rate. A high stitch rate is useful only when the resulting event profile graph remains explainable.
Warehouse output tables
Event Stitching writes public output tables in the connected source, usually in dinmo_identity.
Physical table names may include the project ID. In the queries below, replace the logical table names with the physical names shown in DinMo.
identity_event_profile_attribution
Event-level attribution and exclusion reasons.
identity_event_profiles
Current and merged event profiles.
identity_event_profile_identifier_values
Identifier values attached to event profiles.
identity_event_profile_redirects
Resolve older profile IDs after merges.
identity_event_profile_audit_events
Explain graph changes and guardrail decisions.
identity_event_profile_run_metrics
Aggregated metrics by run, model, identifier, exclusion reason, and audit event type.
See Event Stitching output tables for the table reference.
Read the audit trail
Use audit outputs when a metric tells you that something changed, but you need to know why.
Event ID
Why was this event stitched or excluded?
identity_event_profile_attribution, then identity_event_profile_audit_events
Identifier value
Is this value active, expired, blocked, demoted, or conflicted?
identity_event_profile_identifier_values, then audit events
Old profile ID
Where did this profile merge?
identity_event_profile_redirects
Current profile ID
Which identifiers and events explain this profile?
Profiles, identifier values, attribution
Run ID
What changed during this run?
Run metrics and audit events
For downstream models, join on resolved_dinmo_stitched_profile_id. Use raw dinmo_stitched_profile_id only when you are intentionally inspecting historical IDs and redirects.
Query latest run metrics
Use run metrics to reproduce UI-level numbers without scanning all event history:
Find the latest run with processed events:
Investigate exclusions
Count excluded events by reason:
Sample excluded events:
If most excluded events are no_matchable_identifier, inspect the source model mappings and identifier coverage.
If most excluded events are conflicted_identifier_value or limit_conflict, inspect identifier policy and audit events.
Investigate identifier quality
Find identifiers with active conflicts or many conflicted values:
Inspect demoted identifier values. Demoted values remain useful audit evidence, but they no longer create new matches:
Inspect expired identifier values:
Investigate one event profile
Start from an event profile ID:
List identifiers on the profile:
List events attached to the profile:
Investigate profile merges
Use redirects when older profile IDs may have merged into a surviving profile:
Always use resolved_dinmo_stitched_profile_id for downstream joins.
Investigate audit events
Audit events explain why the graph changed:
Use audit events together with identifier values when investigating a conflict or demotion:
Rollout checklist
For a new Event Stitching project:
Prepare event data and check identifier coverage.
Create the project with conservative policy.
Run manually.
Review Overview and Runs.
Inspect Quality exclusion reasons and active conflicts.
Query sample profiles and excluded events in the warehouse.
Adjust policy if needed.
Enable the schedule only after the graph is explainable.
Use
resolved_dinmo_stitched_profile_idin downstream models.
Last updated

