Just to clarify, it's true that there's no single substance that causes allergies. And it's unclear why certain people are allergic to certain substances (from a genetic point of view). However, the allergic response itself is pretty well understood, and it occurs upon binding of an antibody to an allergen (which is almost always a protein). Non-protein allergies (like nickel allergies) generally involve the allergen (like Ni2+) binding a protein and causing it to misfold or change its conformation in some other way. Subsequently, the misfolded protein (called an epitope) is bound by the antibody, inducing an allergic response. (side note--I use the term "misfolded" very loosely here.)