Supondo que você precise de um endereço de e-mail para todos os pedidos online, você pode criar uma conta temporária para cada cliente na conclusão de cada pedido quando eles não estiverem logados.
Isso pode ser feito usando o endereço de entrega e outras informações fornecidas durante o checkout para preencher a conta e enviando um e-mail com uma senha temporária aleatória para eles (opcionalmente sinalizando-a para exigir alteração no primeiro login, se essa funcionalidade for criada no site). Isso requer um esforço mínimo da parte deles para configurar a conta e permite que eles façam login para verificar o status do pedido.
Como a chave primária em seu banco de dados é o customer_id, não deve causar conflitos se eles continuarem criando novas contas com o mesmo e-mail/endereço/etc, a menos que você já tenha um código para evitar duplicatas. No entanto, é raro alguém criar mais de uma conta temporária, já que é mais fácil fazer login com a senha enviada por e-mail do que inserir seus dados novamente.
Para os pedidos de back-end, geralmente criamos uma conta da mesma forma acima para cada cliente. No entanto, se eles não tiverem um endereço de e-mail (ou só quiserem comprar por telefone), geramos uma conta com seus dados de envio e um endereço de e-mail em branco (tem que codificar uma exceção para não enviar senhas temporárias /confirmações do pedido quando está em branco). O customer_id é fornecido a eles, e suas informações de envio e o nome da empresa são armazenados na conta para pesquisar e agilizar pedidos futuros.