how do I add role and capability after I create a new user
You should use WP_User class (http://codex.wordpress.org/Class_Reference/WP_User) It has methods: set_role, add_role, remove_role. Example: $uid = wp_insert_user($userdata); $u = new WP_User( $uid ); add_role( $role, $display_name, $capabilities ); // I assume $role, $display_name, $caps are already set before $u->set_role( $role );