You can use the user_registration
action to set a custom role directly after wp_insert_user() has been called.
add_action('user_register', 'foo_set_new_user_role', 9999, 1);
function foo_set_new_user_role($user_id){
$user = new WP_User( $user_id );
$user->set_role('your_new_role');
}
You can also use the action profile_update
for just that, profile updates. It takes two parameters $user_id
and $old_user_data
.
Hope this helps you out.