Please read the overwolf.games.events documentation page to learn how to use Overwolf game events.
Due to a recent update in Dota 2 in order for Overwolf apps to work correctly you will need to inform your users to add under Launch Options the following command line:
-gamestateintegration - [More details here](https://support.overwolf.com/en/support/solutions/articles/9000212745-how-to-enable-game-state-integration-for-dota-2) In order to know which user is already using this command line parameter, you should use getGameInfo API, there you will get this parameter in the response under gameInfo --> GameInfo --> ProcessCommandLine - [More details here](.games)
Sample Apps
Available Features
- gep_internal
- game_state
- game_state_changed
- match_state_changed
- match_detected
- daytime_changed
- clock_time_changed
- ward_purchase_cooldown_changed
- match_ended
- kill
- assist
- death
- cs
- xpm
- gpm
- gold
- hero_leveled_up
- hero_respawned
- hero_buyback_info_changed
- hero_boughtback
- hero_health_mana_info
- hero_status_effect_changed
- hero_attributes_skilled
- hero_ability_skilled
- hero_ability_used
- hero_ability_cooldown_changed
- hero_ability_changed
- hero_item_cooldown_changed
- hero_item_changed
- hero_item_used
- hero_item_consumed
- hero_item_charged
- match_info
- roster
- party
- error
- hero_pool
- me
- game
Game events status
It is highly recommended to communicate errors and warnings to your app users.
Check here the game events status. OR - easily check the game events status from your app, using our API.
gep_internal
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
gep_internal | gep_internal | Local + Public version number | See notes | 143.0 |
gep_internal note
Data Example:
{"info":{"gep_internal":{"version_info":"{"local_version":"157.0.1","public_version":"157.0.1","is_updated":true}"}},"feature":"gep_internal"}
game_state
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
new_game | null | Match started | See notes | 77.3 |
game_over | null | Match ended | See notes | 77.3 |
new_game note
Data Example:
{"events":[{"name":"new_game","data":""}]}
game_over note
Data Example:
{"events":[{"name":"game_over","data":""}]}
game_state_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
game_state_changed |
| See notes | 77.3 |
game_state_changed note
- game_state – Can be ‘playing’, ‘idle’ or ‘spectating’. Idle is when there isn’t a game being played or spectated.
- match_state – The internal match state. See ‘match_state_changed’ event for more info.
- match_id (not available for ‘idle’): The id of the match.
- player_steam_id (not available for ‘idle’): Steam id of the local player.
Fired when:
The user starts playing, begins spectating or stops playing. Note that simply bringing up the menu is not enough to trigger the ‘idle’ event – an active game (played or spectated) must be closed.
Data Example:
{"events":[{"name":"game_state_changed","data":"{"game_state": "playing", "match_state": "DOTA_GAMERULES_STATE_INIT", "match_id": "0", "player_steam_id": "76561197971316549", "player_team": "radiant"}"}]}
match_state_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_state_changed | Check notes | See notes | 77.3 |
match_state note
Event Data:
match_state – One of the following:
- DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD
- DOTA_GAMERULES_STATE_HERO_SELECTION
- DOTA_GAMERULES_STATE_PRE_GAME
- DOTA_GAMERULES_STATE_GAME_IN_PROGRESS
- DOTA_GAMERULES_STATE_POST_GAME
- DOTA_GAMERULES_STATE_TEAM_SHOWCASE
Event data example:
{"events":[{"name":"match_state_changed","data":"{ "match_state": "DOTA_GAMERULES_STATE_HERO_SELECTION"}"}]}
Fired when:
The internal game match state has changed.
- DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD – Shown during the pre-game “Waiting for loaders” screen.
- DOTA_GAMERULES_STATE_HERO_SELECTION – Shown during the hero selection screen.
- DOTA_GAMERULES_STATE_PRE_GAME – Shown when the game begins, before the battle horn is heard.
- DOTA_GAMERULES_STATE_GAME_IN_PROGRESS – Shown when the horn sounds to open the match.
- DOTA_GAMERULES_STATE_POST_GAME – Shown during the post-game screen.
- DOTA_GAMERULES_STATE_TEAM_SHOWCASE
match_detected
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_detected | Check notes | See notes | 77.3 |
match_detected note
This feature is not available at the momentEvent Data:
- gameMode – One of the supported game modes.
- playersInfo – An array of 10 players' information with the following fields: * faction – Radiant/Dire * isLocalPlayer – True if this is the local player's information, false otherwise. * playerIndex – The index of this player (0 – 9, left to right). * steamId – Steam Id of the player.
Fired when:
As soon as 10 players have accepted a match, right after the 'accept' button is clicked by all. Supported game modes:
- AllPick
- AllPickRanked
- SingleDraft
- RandomDraft
- AllRandom
- LeastPlayed
- LimitedHeroes
- CaptainsMode
- CaptainsDraft
daytime_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
daytime_changed | Check notes | See notes | 77.3 |
daytime_changed note
Event Data:
- daytime – True if it is current day time, false otherwise.
- clock_time – The amount of seconds from when the game clocked shows (0:00). It can be negative during the Pre-Game phase.
- nightstalker_night – True if it is currently a Night Stalker ultimate night.
Fired when:
The game transitions between day time and night time.
Data Example:
{"events":[{"name":"daytime_changed","data":"{ "daytime": true, "clock_time": -89, "nightstalker_night": false}"}]}
clock_time_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
clock_time_changed | Same as ‘map_daytime_changed’. | Fired every second | 77.3 |
clock_time_changed note
{"events":[{"name":"clock_time_changed","data":"{ "daytime": true, "clock_time": -89, "nightstalker_night": false}"}]}
ward_purchase_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
ward_purchase_cooldown_changed | Check notes | Fired every second where wards are on cooldown. | See notes | 77.3 |
ward_purchase_cooldown_changed note
Event Data:
- ward_purchase_cooldown – The remaining store cooldown in seconds before a ward is available for purchase again.
Data Example:
{"events":[{"name":"ward_purchase_cooldown_changed","data":"{"ward_purchase_cooldown":128}"}]}
match_ended
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_ended | radiant/dire | When an ancient is destroyed and the game ends. | See notes | 77.3 |
match_ended note
{"events":[{"name":"match_ended","data":"{ "winner": "radiant"}"}]}
kill
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
kill | Check notes | Whenever the player kills an enemy hero. | See notes | 77.3 |
kill note
Event Data:
{"events":[{"name":"kill","data":"{ "kills": 10, "kill_streak": 7, "label": "kill"}"}]}
- kills – The total number of kills the player has.
- kill_streak – The current number of hero kills without dying, denying oneself to neutral creeps does not reset this counter.
- label – the type of kill (kill/double_kill/triple_kill/ultra_kill/rampage)
assist
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
assist | assists – The total number of assists the player has. | Whenever the player assists in a kill of an enemy champion. | See notes | 77.3 |
assist note
Data Example:
{"events":[{"name":"assist","data":"{"assists": 1}"}]}
death
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
death | deaths – The total number of deaths the player has. | Whenever the player dies. | See notes | 77.3 |
death note
Data Example:
{"events":[{"name":"death","data":"{"deaths":1}"}]}
cs
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
cs | Check notes | Whenever the player last hits/denies non-champion units that grant creep score. | See notes | 77.3 |
cs note
Event Data:
- last_hits – The total amount of last hits (not denies) the player has.
- denies – The total amount of denies the player has.
- type – last_hits/deny.
Data Example:
{"events":[{"name":"cs","data":"{"last_hits": 1,"denies":0,"type":"last_hit"}"}]}
xpm
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
xpm | xpm – The current Experience Per Minute value. | Whenever the XPM changes. | See notes | 77.3 |
xpm note
Data Example:
{"events":[{"name":"xpm","data":"{ "xpm": 250}"}]}
gpm
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
gpm | gpm – The current Gold Per Minute value. | Whenever the GPM changes. | 77.3 |
gpm note
Data Example:
{"events":[{"name":"gpm","data":"{ "gpm": 363605184}"}]}
gold
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
gold | Check notes | Whenever gold changes. | See notes | 77.3 |
gold note
- gold – Total current gold.
- gold_reliable – Reliable gold part.
- gold_unreliable – Unreliable gold part.
Data Example:
{"events":[{"name":"gold","data":"{ "gold": 10599, "gold_reliable": 0, "gold_unreliable": 10599}"}]}
hero_leveled_up
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_leveled_up | hero_level – The current hero level. | Whenever the player levels up. | See notes | 77.3 |
hero_leveled_up note
Data Example:
{"events":[{"name":"hero_leveled_up","data":"{ "hero_level": 30}"}]}
hero_respawned
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_respawned | N/A | Whenever the player respawns. This is also true when buying back. | See notes | 77.3 |
hero_respawned note
Currently this event is NOT supported.hero_buyback_info_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_buyback_info_changed | Check notes | See notes | 77.3 |
hero_buyback_info_changed note
Event Data:
- buyback_cost – Gold cost to buyback
- buyback_cooldown – Cooldown remaining for buyback to become available
Fired when:
Every 4 seconds and every level-up, since buyback cost is affected by game time and player level. It will also be called every second when buyback is on cooldown.
Data Example:
{"events":[{"name":"hero_buyback_info_changed","data":"{ "buyback_cost": 8541, "buyback_cooldown": 0}"}]}
hero_boughtback
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_boughtback | buyback_cooldown – The cooldown remaining for buyback to become available. | Whenever the player buys back. | See notes | 77.3 |
hero_boughtback note
Data Example:
{"events":[{"name":"hero_boughtback","data":"{}"}]}
hero_health_mana_info
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_health_mana_info | Check notes | Whenever either of the players mana, health, max mana or max health changes. | See notes | 77.3 |
hero_health_mana_info note
Event Data:
- health – Current health.
- max_health – Current maximum health.
- mana – Current mana.
- max_mana – Current maximum mana.
Data Example:
{"events":[{"name":"hero_health_mana_info","data":"{ "health": 2620, "max_health": 2620, "mana": 711, "max_mana": 711}"}]}
hero_status_effect_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_status_effect_changed | Check notes | Whenever any of these effects changes. | See notes | 77.3 |
hero_status_effect_changed note
Event Data:
- silenced – True if the player is silenced, false otherwise.
- stunned – True if the player is stunned, false otherwise.
- disarmed – True if the player is disarmed, false otherwise.
- magicimmune – True if the player is magic immune, false otherwise.
- hexed – True if the player is hexed, false otherwise.
- muted – True if the player is muted, false otherwise.
- break – True if the player is broken, false otherwise.
- has_debuff – True if the player is affected by any debuff, false otherwise.
Data Example:
{"events":[{"name":"hero_status_effect_changed","data":"{ "silenced": true, "stunned": false, "disarmed": false, "magicimmune": false, "hexed": false, "muted": false, "break": false, "has_debuff": false}"}]}
hero_attributes_skilled
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_attributes_skilled | attributes_level – The current level of the player’s attributes. | Whenever the player skills up his attributes. | 77.3 |
hero_attributes_skilled note
hero_ability_skilled
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_skilled | Check notes | Whenever the player skills up an ability. | See notes | 77.3 |
hero_ability_skilled note
- slot – The index of the ability slot (0 – 5, left to right)
- name – The name of the ability.
- level – The current level of the ability.
- can_cast – True unless the ability is not skilled, there’s not enough mana to cast it, the player is silenced, or is on cooldown.
- passive – True if the ability is passive.
- ability_active – Unknown, TBD.
- cooldown – Remaining cooldown until the ability is ready to cast.
- ultimate – True if the ability is an ultimate ability.
Data Example:
{"events":[{"name":"hero_ability_skilled","data":"{ "slot": 1, "name": "sven_great_cleave", "level": 1, "can_cast": false, "passive": true, "ability_active": true, "cooldown": 0, "ultimate": false}"}]}
hero_ability_used
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_used | Same as ‘hero_ability_skilled’ | Whenever the player uses an ability. | See notes | 77.3 |
hero_ability_used note
Data Example:
{"events":[{"name":"hero_ability_used","data":"{"slot":0,"name":"sven_storm_bolt","level":4, "can_cast":false,"passive":false,"ability_active":true,"cooldown":7,"ultimate":false}"}]}
hero_ability_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_cooldown_changed | Same as ‘hero_ability_skilled’ | Whenever an ability’s remaining cooldown is changed. | See notes | 77.3 |
hero_ability_cooldown_changed note
Data Example:
{"events":[{"name":"hero_ability_cooldown_changed","data":"{ "slot": 3, "name": "sven_gods_strength", "level": 3, "can_cast": false, "passive": false, "ability_active": true, "cooldown": 59, "ultimate": true}"}]}
hero_ability_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_changed | Same as ‘hero_ability_skilled’ | Whenever an ability’s name changes. | See notes | 77.3 |
hero_ability_changed note
Currently this event is NOT supported.hero_item_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_cooldown_changed | Check notes | Whenever an item’s remaining cooldown is changed. | See notes | 77.3 |
hero_item_cooldown_changed note
Event Data:
- slot – The index of the item slot (0 – 5, top row from the left to bottom row from the right)
- location – hero/stash
- name – The name of the item
- passive – True if the item is passive
- can_cast – True unless there’s not enough mana to use the item, the player is muted, or when the item is on cooldown. (only when passive = false)
- cooldown – The remaining cooldown until the item is ready to be used. (only when passive = false)
- charges – The remaining charges of the item (only when passive = false and where item can be charged)
Data Example:
{"events":[{"name":"hero_item_cooldown_changed","data":"{ "slot": 3, "location": "hero", "name": "item_mask_of_madness", "can_cast": false, "passive": false, "cooldown": 16, "charges": null}"}]}
hero_item_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_changed | Check notes | See notes | 77.3 |
hero_item_changed note
Currently this event is NOT supported.Event Data:
- slot – The index of the item slot (0 – 5, top row from the left to bottom row from the right)
- location – hero/stash
- name – The name of the item.
- passive – True if the item is passive.
- can_cast – True unless there’s not enough mana to use the item, the player is muted, or when the item is on cooldown. (only when passive = false)
- cooldown – Remaining cooldown until the item is ready to be used again (only when passive = false)
- charges – Remaining charges of the item (only when passive = false and where item can be charged)
Fired when:
Whenever the item name in some hero/stash slot changes. This would mean that swapping items will trigger 2 events, one for each item.
hero_item_used
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_used | Same as ‘hero_item_changed’ | Whenever an item is used – Essentially this is when the item goes on cooldown. | See notes | 77.3 |
hero_item_used note
Data Example:
{"events":[{"name":"hero_item_used","data":"{ "slot": 0, "location": "hero", "name": "item_blink", "can_cast": false, "passive": false, "cooldown": 15, "charges": null}"}]}
hero_item_consumed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_consumed | Same as ‘hero_item_changed’ | Whenever an item’s charges decreases. | See notes | 77.3 |
hero_item_consumed note
Data Example:
{"events":[{"name":"hero_item_consumed","data":"{ "slot": 1, "location": "hero", "name": "item_tango", "can_cast": true, "passive": false, "cooldown": 0, "charges": 4}"}]}
hero_item_charged
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_charged | Same as ‘hero_item_changed’ | Whenever an item’s charges increases. | See notes | 77.3 |
hero_item_charged note
Data Example:
{"events":[{"name":"hero_item_charged","data":"{ "slot": 0, "location": "hero", "name": "item_ward_observer", "can_cast": true, "passive": false, "cooldown": 0, "charges": 2}"}]}
match_info
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
pseudo_match_id | match_info | The current match’s ID code. | See notes | 130.0 |
game_mode | match_info | Type of mode that is currently played | See notes | 171.1 |
team_score | team_score | Score of each team during the game | See notes | 198.1 |
pseudo_match_id note
Data Example:
0c0ea3df-97ea-4d3a-b1f6-f8e34042251f
game_mode note
Data Example:
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "NONE"}"}},"feature":"match_info"}
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "GameMode_AllPick"}"}},"feature":"match_info"}
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "GameMode_Turbo"}"}},"feature":"match_info"}
team_score note
Data Example:
{"feature":"match_info","category":"team_score","key":"{\"radiant\":12,\"dire\":13}"}
roster
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
players | roster | A string holding a JSON array of player objects. | See notes | 114.1 |
bans | roster | A string holding a JSON array of bans objects. | See notes | 114.1 |
draft | roster | A string holding a JSON array of draft objects. | See notes | 114.1 |
players note
Dota 2 has disabled some functionality used by third-party tools. This includes disabling a large number of console commands during matchmaking games and limiting access to player profiles during the pregame phase As a result 'steamId' and 'name' in the roster will return empty values until the game state changes to DOTA_GAMERULES_STATE_STRATEGY_TIME, then we can show the full roster again with all the details
Data Example:
Full roster:
{"steamId":"76561198095792069","name":"mladen90","pickConfirmed":false,"hero":"","team":2,"role":1,"player_index":4}
Pregame phase roster:
{"steamId":"","name":"","pickConfirmed":false,"hero":"","team":2,"role":1,"player_index":4}
Player object structure:
- "steamId" - steamId string
- "name" - player name in game
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in team
- “heroId” – Heroes IDs (0 if still not picked)
- "role" - role type. (1 - Safelane, 2 - Offlane, 4 - Midlane, 8 - Other, 16 - HardSupport, 888\any other number - Can be received during bot matchups and should be ignored)
- "index" - player slot (int 0-9)
bans note
Data Example:
[{"heroId": "75" , "team" : "0"},{"heroId": "14" , "team" : "0"}]
Bans object structure:
- “heroId” – Heroes IDs (0 if still not picked)
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in team
draft note
Data Example:
"[{"heroId": 56 , "team" : 3},{"heroId": 69 , "team" : 2},{"heroId": 101 , "team" : 2},{"heroId": 28 , "team" : 3}]"
Draft object structure:
- “heroId” – Heroes IDs (0 if still not picked)
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in team
party
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
party | party | A string holding a JSON array of player objects. | See notes | 130.0 |
party note
Data Example:
[{"steamId":"76561198059980868","isLeader":false,"isCoach":false}]
- steamId – the player’s Steam ID
- isLeader – (bool) whether the player is the leader of the party
- isCoach – (bool) whether the player is the coach of the party
Important note:
- The leader can be the coach as well
- There’s exactly one leader
- There’s at most one coach (it’s optional)
- This info-update is being updated for every party change
error
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
plugin_error | error | This info update fires when the plugin is not initializing for some reason. | See notes | 133.8 |
plugin_error note
This event is currently NOT supported.
Data Example:
{"feature":"error","category":"error","key":"plugin_error","value":"failed_initializing_monitor"}
hero_pool
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_pool | game_info | The numberical ID's of heroes that are available for picking. | See notes | 139.0 |
hero_pool note
This data is available only in "Single Draft" & "Random Draft" modes in Dota.
You can find the Hero ID's in the following link
Data Example:
{"category":"game_info","key":"hero_pool","value":"[2,4,5,7,8,16,18,20,21,22,23,27,31,32,34,35,37,38,44,47,48,49,52,53,59,64,65,67,70,71,72,74,75,81,84,85,91,92,95,98,99,100,104,105,106,109,110,113,120,121]}
me
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
team | me | radiant / dire | See notes | 139.0 |
steam_id | me | ID number | See notes | 139.0 |
hero | me | Name of the hero you're playing | See notes | 139.0 |
me note
Event data example:
{"info":{"me":{"team":"radiant"}},"feature":"me"}
{"info":{"me":{"steam_id":"7654654654"}},"feature":"me"}
{"info":{"me":{"hero":"keeper_of_the_light"}},"feature":"me"}
game
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
game_state | game | Playing | 139.0 | |
match_state | game | Current game-state | 139.0 |
Event data example:
{"info":{"game":{"game_state":"playing"}},"feature":"game"}
{"info":{"game":{"match_state":"DOTA_GAMERULES_STATE_INIT"}},"feature":"game"}