Restore proper payload parsing per GitHub docs