Programmatically creating site in a network

You’re using $user_id = get_option( 'admin_email' ); and then using that $user_id. However, get_option( 'admin_email' ); returns an email address, not the int that wpmu_create_blog() expects. So your sites are (presumably) being created with a user_id of 0.

Here’s how I’d address this:

$user_email  = get_option('admin_email');
$user_object = get_user_by( 'email', $user_email );
if ( false !== $user_object ) {
    $user_id = $user_object->ID;
}
$id = wpmu_create_blog( $newdomain, get_network()->path, $domain, $user_id, $meta, get_current_network_id() );

References