Add guards to ensure that metadata is being set correctly when transitioning to certain states
There are certain states that we conventionally set metadata on: for example, when selecting a tier or creating a charge. We do not currently enforce that this metadata is set, but we should because we depend on it in other places.