I've built the same webhook consumer three times at three companies. The fourth time, I want a better primitive.