in app/com/gu/memsub/promo/Formatters.scala [120:127]
override def reads(json: JsValue): JsResult[LandingPage] = (json \ "productFamily").toOption orElse (json \ "type").toOption match {
case Some(JsString(SupporterPlus.id)) => Json.reads[SupporterPlusLandingPage].reads(json)
case Some(JsString(TierThree.id)) => Json.reads[TierThreeLandingPage].reads(json)
case Some(JsString(DigitalPack.id)) => Json.reads[DigitalPackLandingPage].reads(json)
case Some(JsString(Newspaper.id)) => Json.reads[NewspaperLandingPage].reads(json)
case Some(JsString(GuardianWeekly.id)) => Json.reads[WeeklyLandingPage].reads(json)
case _ => JsError("Unknown landing page type")
}