It really depends on the type of deployment as networking requirements vary greatly. While injecting a customized connection profile for each device could be automated, a dynamic runtime approach could be more versatile.
A connection profile can be created using the NetworkManager’s D-Bus API (Changing the Network at Runtime). WiFi Connect also uses internally the same API.
If a custom connection profile has to be injected on each SD card for a large-scale deployment, then the type of automation will differ as probably a stand-alone hardware device will be used for writing the cards. Those devices are quite expensive. We will be releasing soon our own Etcher Pro hardware, which will target those types of use-cases.