Quick answer: Unity Netcode for GameObjects pooled prefab handler dropping the spawn payload on reuse? Pool's GetNetworkPrefabInstance is called before payload is applied - apply payload in OnNetworkSpawn instead.

Pooled enemy spawns with default stats; payload was meant to set their level.

Apply in OnNetworkSpawn

public override void OnNetworkSpawn() {
  ApplyPayload(spawnPayload);
}

Runs after the spawn pipeline completes. Payload is committed by then.

Or use NetworkVariable

Store the level as a NetworkVariable. Replicates on spawn; no manual payload needed.

Audit pool handlers

Each custom INetworkPrefabInstanceHandler is suspect. Verify the spawn timing.

“Pooled spawns skip construction. Construction-time logic needs migration to OnNetworkSpawn.”

If you build pooled networking, treat spawn payload as a known concern. Plan it; don't discover it.

Related reading