# Events

<table><thead><tr><th width="206">Event Name</th><th>Event Description</th><th data-hidden></th></tr></thead><tbody><tr><td>geoflowReady</td><td>Fires when the visitor data properties are ready.</td><td></td></tr><tr><td>geoflowError</td><td>Fires when an error was thrown while the visitor data properties were being fetched (e.g. due to a server error).</td><td></td></tr><tr><td>geoflowUpdated</td><td>Fires when the 'geoflow' object has been successfully updated after the <a href="methods">updateData()</a> method is called.</td><td></td></tr><tr><td>geoflowExtComplete</td><td>Fires when a script extension has finished running. The extension name can be accessed on the event's detail property.</td><td></td></tr></tbody></table>

{% hint style="info" %}
**Developer Tip**: When listening for the *geoflowReady* and *geoflowUpdated* events, the current 'geoflow' object can also be accessed through the event's detail property.
{% endhint %}

### Examples

```javascript
window.addEventListener('geoflowReady', function (e) {

    console.log('Geoflow Is Ready!', e.detail);

});

window.addEventListener('geoflowError', function (e) {

    console.log('Geoflow Error!', e.detail);

});

window.addEventListener('geoflowUpdated', function (e) {

    console.log('Geoflow Was Updated!', e.detail);

});

window.addEventListener('geoflowExtComplete', function (e) {

    console.log('This Script Extension Finished Running:', e.detail);

});
```
