Mapping over a collection that might return multiple values or a single value

I'm currently mapping over a collection for validation, and I need to return back a single or multiple validation errors:

val errors: Seq[Option[ProductErrors]] = products.map {
   if(....) Some(ProductError(...))
   else if(...) Some(ProductError(..))
   else None

}
errors.flatten

So currently I am returning an Option[ProductError] per map iteration, but in some cases I need to return multiple ProductError's, how can I acheive this? e.g.

   if(...) {
     val p1 = Some(ProductError(...))
     val p2 = Some(ProductError(....))
   }

case class ProductErrors(msg: String = "anything")

val products = (1 to 10).toList

def convert(p: Int): Seq[ProductErrors] = {
  if (p < 5) Seq(ProductErrors("less than 5"))
  else if (p < 8 && p % 2 == 1) Seq(ProductErrors("element is odd"), ProductErrors("less than 8"))
  else Seq()
}

val errors = products.map(convert)


// errors.flatten.size
// val res8: Int = 8

// you can just use flatMap here

products.flatMap(convert).size // 8