Skip to main content
ContactButton records one canonical lifecycle stream for hosted web Agents, REST, MCP, and A2A. The same public event ID is used for internal reporting and browser analytics, so retries and streaming reconnects do not create additional ContactButton events.

Event names

The lifecycle includes:
  • opened
  • conversation_started
  • question_sent
  • answer_completed
  • answer_failed
  • feedback
  • contact_captured
  • action_proposed
  • action_completed
  • action_failed
  • handed_off
Hosted web Agents project these events to window.dataLayer with an event value such as contactbutton_agent_answer_completed. ContactButton also dispatches a contactbutton:agent-lifecycle DOM event.
The payload contains only:
Prompts, answers, email addresses, phone numbers, OTPs, credentials, and internal database IDs are never included. If a ContactButton cookie banner is configured, embedded browser events are sent to GA/GTM only after analytics consent. The workspace Disable user cookies setting disables the customer browser projection. Canonical server events for the requested Agent service remain tenant-scoped and power ContactButton reporting. Browsers remember the latest public event IDs and do not project the same event twice. Server events also have a unique idempotency fingerprint, so replayed API mutations and reconnects do not inflate the internal funnel.