> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailerpath.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contact journey

> Read the full activity timeline for any contact: events, tags, sends, and subscription changes.

The contact journey is a unified, newest-first timeline of everything MailerPath has recorded for a specific contact.

Use it to understand a contact's full lifecycle, debug delivery or workflow issues, and verify that events and tag assignments are working as expected.

## What appears in the timeline

Each timeline entry has an `entry_type` and a corresponding payload object:

| Entry type           | What it represents                                       |
| -------------------- | -------------------------------------------------------- |
| `event`              | An event sent by your application for this contact.      |
| `tag_assigned`       | A tag was assigned to this contact.                      |
| `tag_removed`        | A tag was removed from this contact.                     |
| `workflow_execution` | A workflow ran for this contact.                         |
| `campaign_recipient` | The contact was included in a campaign send.             |
| `profile`            | The contact record was created or updated.               |
| `subscription`       | The contact's subscription state changed.                |
| `direct_email`       | A transactional email was sent directly to this contact. |

## How to read each entry type

**profile**

* `action: created` — the contact record was first created.
* `action: updated` — contact fields were updated.
* Shows the email at the moment of the change.

**subscription**

* `state: subscribed` — contact opted in or was re-subscribed.
* `state: unsubscribed` — contact opted out.
* `unsubscribe_reason` is shown when provided.

**direct\_email**

* Shows subject, from address, and delivery status.
* `status_text` gives the human-readable status: `sent`, `received`, `delivered`, `opened`, `clicked`, `deferred`, `bounced`, `failed`, `skipped`.
* `deferred` means the provider temporarily delayed delivery — the email will be retried automatically.
* Use `sent_email_id` to cross-reference the full sent email record.

**workflow\_execution**

* Shows which workflow ran, its status, and timestamps.
* Includes `email_opened` and `email_clicked` when the execution sent an email.
* `sent_email_ref` links to the specific sent email record.

**tag\_assigned / tag\_removed**

* Shows which tag changed and the timestamp.
* Useful for verifying that event-driven tag rules are firing correctly.

**event**

* The raw event your application sent (type, action, source, status).
* Useful for confirming events are arriving and being attributed to the right contact.

**campaign\_recipient**

* Shows the campaign, send status, and engagement milestones (opened, clicked).

## Real example: a new user's first 24 hours

Here is a real contact journey for a newly signed-up user. The timeline reads newest-first and covers two days of activity.

***

**June 19, 2026 — 3 events**

| Time    | Entry                     | Type                 | Detail |
| ------- | ------------------------- | -------------------- | ------ |
| 6:23 PM | Verify your email address | `direct_email`       | opened |
| 9:00 AM | Welcome Workflow          | `workflow_execution` | opened |
| 9:00 AM | Welcome Workflow          | `workflow_execution` | opened |

The contact opened the verification email the evening after signup. The Welcome Workflow email was opened twice that morning — consistent with a double-read or re-open on a second device.

***

**June 18, 2026 — 15 events**

| Time       | Entry                     | Type           | Detail     |
| ---------- | ------------------------- | -------------- | ---------- |
| 8:16:07 PM | Subscribed                | `subscription` | subscribed |
| 8:16:07 PM | Profile created           | `profile`      | created    |
| 8:16:07 PM | Verify your email address | `direct_email` | sent       |
| 8:16:07 PM | Verify your email address | `direct_email` | sent       |
| 8:16:07 PM | Verify your email address | `direct_email` | received   |
| 8:16:09 PM | Verify your email address | `direct_email` | delivered  |
| 8:16:10 PM | Verify your email address | `direct_email` | opened     |
| 8:16:19 PM | Verify your email address | `direct_email` | opened     |
| 8:16:24 PM | signup                    | `event`        | received   |
| 8:16:24 PM | Onboarding                | `tag_assigned` | assigned   |
| 8:16:24 PM | New Signup                | `tag_assigned` | assigned   |
| 8:16:24 PM | Lead                      | `tag_assigned` | assigned   |
| 8:16:24 PM | Profile updated           | `profile`      | updated    |
| 8:16:24 PM | Verify your email address | `direct_email` | clicked    |
| 8:16:26 PM | Verify your email address | `direct_email` | clicked    |

**What the sequence tells you:**

1. At 8:16:07 PM the contact signed up: `Profile created` and `Subscribed` appeared together, meaning the registration flow created the contact and opted them in simultaneously.
2. The transactional `Verify your email address` email was dispatched immediately: `sent` → `received` → `delivered` within 2 seconds.
3. The contact opened the email at 8:16:10 PM — within 3 seconds of delivery.
4. At 8:16:24 PM the `signup` event arrived from your application. This triggered tag assignment: `Lead`, `New Signup`, and `Onboarding` were all assigned in the same second.
5. `Profile updated` appeared alongside the tags — the contact record was enriched from the signup event payload.
6. The contact clicked the verification link at 8:16:24 PM and again at 8:16:26 PM (double-click pattern is common on verification links).

This timeline shows a healthy, fully operational signup flow: event received → contact created → tags assigned → transactional email delivered and engaged within a few seconds.

***

## Common uses

**Debugging why a workflow did not run**

* Check for the expected trigger event in the timeline.
* Confirm the tag was assigned.
* Look for a `workflow_execution` entry with a `failed` status and review `error_message`.

**Verifying a subscription change**

* Look for a `subscription` entry with the expected `state` and timestamp.

**Checking delivery for a specific contact**

* Look for `direct_email`, `campaign_recipient`, or `workflow_execution` entries and check `status_text`.

**Auditing tag assignment**

* Review `tag_assigned` and `tag_removed` entries with timestamps to trace how tags changed over time.

## Related pages

* [Contacts](/documentation/core-functionalities/contacts)
* [Events](/documentation/events/overview)
* [Tags and segmentation](/documentation/core-functionalities/tags-and-segmentation)
* [Sent emails and delivery](/documentation/send/sent-emails-and-delivery)
