Alexa Skill Events
Alexa Skill Events let you know when a user enables your skill, disables it, links their account, or grants permissions. These out-of-session events are crucial for tracking engagement, onboarding new users, and cleaning up user data when skills are removed.
Available Events
| Event | When it fires |
|---|---|
| AlexaSkillEvent.SkillEnabled | User enables your skill |
| AlexaSkillEvent.SkillDisabled | User disables your skill |
| AlexaSkillEvent.SkillAccountLinked | User completes account linking |
| AlexaSkillEvent.SkillPermissionAccepted | User grants permissions |
| AlexaSkillEvent.SkillPermissionChanged | User changes permissions |
| AlexaSkillEvent.ProactiveSubscriptionChanged | Proactive event subscription changes |
Subscribing to Events
First, add the events to your skill manifest in jovo.project.ts:
alexa: {
manifest: {
events: {
subscriptions: [
{ eventName: 'SKILL_ENABLED' },
{ eventName: 'SKILL_DISABLED' },
{ eventName: 'SKILL_ACCOUNT_LINKED' },
],
endpoint: { uri: 'arn:aws:lambda:...' }
}
}
}
Handling Events in Jovo
Then handle the events in your component:
async ON_AlexaSkillEvent_SkillEnabled() {
const userId = this.$user.id;
await analytics.track('skill_enabled', { userId });
// No response needed — these are server-side events
}
async ON_AlexaSkillEvent_SkillDisabled() {
const userId = this.$user.id;
await db.deleteUserData(userId);
await analytics.track('skill_disabled', { userId });
}
Important: Skill Events are out-of-session — they don't happen during a user conversation. Your Lambda receives the event asynchronously, and you cannot send a voice response back. Use them for analytics, user management, and data cleanup only.