Contacts and opportunities
Inspect verified stakeholders and governed commercial stages with tenant-defined fields, search, filters, and durable drill-in context.
Contacts and Opportunities are native tenant record projections. They are not independent spreadsheets and the browser does not own their canonical state.
Contacts
The Contacts grid projects people captured by governed signal providers. Each row includes the latest provider observation and its associated company:
| Field | Canonical source |
|---|---|
| Name, email | tenant-scoped contacts_v2 projection |
| Title | latest governed provider observation |
| Account | immutable contact-to-company binding |
| Source | provider namespace retained with the contact |
| Last verified | observation timestamp, newest provider record first |
| Custom fields | immutable record-field events projected by GTM Brain |
Email is classified as confidential record data. It is returned only through authenticated, tenant-scoped APIs and is never included in Temporal workflow history.
Search covers name, email, account, domain, and tenant-defined searchable fields. Display and Sort use the active field definitions from Data model. Selecting a row opens the shared account workspace without losing the grid.
Opportunities
An opportunity exists only after a governed transition. The grid replays
GtmOpportunityV2Transitioned events and shows the latest state for each company:
Operators cannot edit Stage as an arbitrary custom value. A stage change calls
gtm.transition_opportunity_v2; Fabric Platform validates the current state, actor, tenant,
idempotency identity, and allowed transition before emitting the next event. Tenant-defined owner,
value, and other fields remain separate versioned record metadata and use gtm.upsert_record_fields.
API and autonomous agents
The protected product API exposes the same cursor-paged projections used by the UI:
GET /gtm/contacts/records
GET /gtm/opportunities/recordsBoth endpoints support bounded pages, query-bound cursors, search, sort, and tenant-defined columns. Opportunity queries can filter by stage. A cursor from a different query is rejected instead of being silently replayed against changed filters.
Read access does not grant mutation authority. Autonomous agents must use the registered action catalog and invoke the same Fabric Platform actions as the UI. Contact data cannot be written directly by an agent tool, and opportunity stages cannot bypass the canonical transition state machine.
Next: Accounts, Data model, and Pipeline.
Accounts and account memory
Use account records to understand signals, scores, plays, contacts, touches, replies, outcomes, and the evidence behind every GTM decision.
Meetings, lists, and reusable filters
Inspect booked meetings, define governed static or dynamic lists, and reuse multi-condition queries across tenant records.