Product Features

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:

FieldCanonical source
Name, emailtenant-scoped contacts_v2 projection
Titlelatest governed provider observation
Accountimmutable contact-to-company binding
Sourceprovider namespace retained with the contact
Last verifiedobservation timestamp, newest provider record first
Custom fieldsimmutable 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:

Rendering diagram...

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/records

Both 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.

On this page