Customer history
Open any customer and click the Activity tab. You’ll see a reverse-chronological feed of every change to the record: field edits, phase moves, task completions, comments, sync writes from your CRM, status flips, and Pi’s automated nudges. Each entry stamps the actor, the timestamp, and a diff if a value changed. The feed is the source of truth when something looks off and you need to figure out who did what.
What gets logged
The feed captures every write that touches the customer or its children. Major event types:
System-driven events (CRM syncs, Pi nudges) appear with the source’s icon so you can tell them apart from human edits at a glance.
Filter the feed
The filter bar above the feed has three controls:
- Actor. You, a specific teammate, an integration (HubSpot, Stripe, Slack), or Pi. Multi-select.
- Event type. Pick from the table above. Useful when chasing a specific change.
- Date range. Preset (7d, 30d, 90d) or custom.
Filters stack, so “HubSpot writes in the last 7 days that changed plan” is Actor: HubSpot + Event: customer.field_changed + date range, then expand the entries to confirm the field.
Export the feed
Click the ⋯ menu at the top right of the tab and pick Export to CSV. The export respects your current filters, so filter first if you want a slice. Columns: timestamp, actor, actor_type, event_type, field, old_value, new_value, onboarding_id. Rows are line-per-event, one row per changed field on multi-field edits.
For programmatic access, hit GET /v1/customers/{id}/activity. Same data shape as the export.
The gotcha: deleted contacts in old entries
If you deleted (not archived) a contact, every old activity entry that referenced them collapses to “removed contact” with no name. The event itself stays, but the actor or target becomes anonymous. This is why most teams archive instead. See manage contacts.
Related
Email help@pivotal.app with a screenshot of where you got stuck and the customer or onboarding id from the URL.