Amplify is anonymously tracking the user's journey through the amp conversation flow. With its session tracking system, it can gather data about the user's interactions without compromising their anonymity. This feature can provide valuable insights into how users engage with the amp and help improve the overall experience for everyone involved.
These are the user events that Amplify tracks:
-
The user enters and leaves the amp conversation.
-
Whenever the amp changes to a new conversation (and how the conversation was changes, e.g. if was changed due to a go to node, a menu item or other).
-
Node specific interactions:
-
Question responses
-
Button group responses
-
Condition nodes and the outcome of the condition
-
Self-detailers opened via open nodes
-
For more details regarding the specific data that is tracked, see the list below:
export enum EventType {
SESSION_ENTER = 'SESSION_ENTER',
SESSION_LEAVE = 'SESSION_LEAVE',
QUESTION_RESPONSE = 'QUESTION_RESPONSE',
BUTTON_GROUP_RESPONSE = 'BUTTON_GROUP_RESPONSE',
CONDITION = 'CONDITION',
CONVERSATION_CHANGE = 'CONVERSATION_CHANGE',
SELF_DETAILER_CHANGE = 'SELF_DETAILER_CHANGE',
}
export enum ConditionEventOutcomeType {
TRUE = 'TRUE',
FALSE = 'FALSE',
}
export enum ConversationChangeEventType {
MENU = 'MENU', // Menu click;
NUDGE = 'NUDGE', // Nudge click (compact or normal);
TRIGGER = 'TRIGGER', // Normal trigger;
GO_TO = 'GO_TO', // Go to node;
}
export enum SelfDetailerChangeEventType {
OPEN = 'OPEN',
CLOSE = 'CLOSE',
}
interface SessionEvent {
id: string; // auto-generated UUID;
ampId: string; // amp UUID;
sessionId: string; // client session UUID;
organizationId: string; // organization UUID;
timestamp: number; // timestamp of event;
eventType: EventType; // event type;
}
export interface SessionEnterEvent extends SessionEvent {
eventType: EventType.SESSION_ENTER; // event type;
timeZone: string; // time zone;
deviceType: string; // device type;
domainId: string; // domain UUID
countryCode: string; // country code;
}
export interface SessionLeaveEvent extends SessionEvent {
eventType: EventType.SESSION_LEAVE; // event type;
timeZone: string; // time zone;
deviceType: string; // device type;
domainId: string; // domain UUID
countryCode: string; // country code;
}
export interface SessionQuestionResponseEvent extends SessionEvent {
eventType: EventType.QUESTION_RESPONSE; // event type;
conversationId: string; // conversation UUID;
questionId: string; // question UUID;
responseId: string; // response UUID;
}
export interface SessionButtonGroupResponseEvent extends SessionEvent {
eventType: EventType.BUTTON_GROUP_RESPONSE; // event type;
conversationId: string; // conversation UUID;
buttonId: string; // button UUID;
responseId: string; // response UUID;
}
export interface SessionConditionEvent extends SessionEvent {
eventType: EventType.CONDITION; // event type;
conversationId: string; // conversation UUID;
conditionId: string; // condition UUID;
outcomeType: ConditionEventOutcomeType; // condition outcome;
}
export interface SessionConversationChangeEvent extends SessionEvent {
eventType: EventType.CONVERSATION_CHANGE; // event type;
conversationId: string; // conversation UUID;
prevConversationId: string; // previous conversation UUID;
changeEvent: ConversationChangeEventType; // conversation change event;
}
export interface SessionSelfDetailerChangeEvent extends SessionEvent {
eventType: EventType.SELF_DETAILER_CHANGE; // event type;
conversationId: string; // conversation UUID;
openId: string; // UUID of the Open node;
changeEvent: SelfDetailerChangeEventType; // self-detailer change event;
}