Poll Rules integration
It turned out to be fairly easy to do through custom module:

MYMODULE.module

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  switch ($form_id) {
    case 'poll_view_voting':
      $form['vote']['#submit'][] = 'MYMODULE_poll_view_voting_submit';
      break;
  }
}

/**
 * Submit handler for poll_view_voting form.
 */
function MYMODULE_poll_view_voting_submit($form, &amp;$form_state) {
  // Invoke our custom rule and pass the loaded node object as an argument.
  rules_invoke_event('MYMODULE_poll_vote', node_load($form['#node']-&gt;nid));
}


MYMODULE.rules.inc

/**
 * Implements hook_rules_event_info().
 */
function MYMODULE_rules_event_info() {
  return array(
    'MYMODULE_poll_vote' =&gt; array(
      'label' =&gt; t('User casts a poll vote'),
      'help' =&gt; t('Triggers when users are casting votes on polls.'),
      'group' =&gt; t('MYMODULE HUMAN NAME'),
      'variables' =&gt; array(
        'poll' =&gt; array(
          'type' =&gt; 'node',
          'label' =&gt; t('Poll node'),
          'description' =&gt; t('Voted poll node.'),
        ),
      ),
    ),
  );
}