Use MarshalJSON directly and check that the resulting payload length is less than the max allowed 256
Allow for Alert to be just a string "alert":"Hello!", as opposed to a dictionary "alert":{"body":"Hello!"}
Add Payload method DeleteCustom(key string)