entries.onSaveEntry does not fire from frontend
Where is your "craft()-on()" code located?

Per the documentation, the best place is in your primary plugin file in a method named "init()".

https://craftcms.com/docs/plugins/hooks-and-events#listening-for-events

For example, here's mine:

public function init()
{
    parent::init();

    // event triggers
    craft()-&gt;on('charge.onValidate', array($this, '_validateRegistrationForm'));
    craft()-&gt;on('entries.saveEntry', array($this, '_processEditPricelistLocationForm'));
    craft()-&gt;on('entries.saveEntry', array($this, '_processEditGuestUsersForm'));
    craft()-&gt;on('entries.saveEntry', array($this, '_processGuestUserAccessForm'));
    craft()-&gt;on('entries.onBeforeSaveEntry', array($this, '_processEditGuestRemoveUsersForm'));
}


and here's just showing that I do in fact handle the Event $event in the method:

/**
 * Charge onValidate
 *
 * @param Event $event
 */
public function _validateRegistrationForm(Event $event)
{
    // do stuff
}