Concrete isn't a single material — it's a composite of cement paste, aggregate, and pore structure. That pore structure is what makes concrete prep different from metal prep, and it's what makes moisture testing non-optional.
A slab that looks perfectly dry on top can be actively passing water vapor from below. That vapor has to go somewhere. If it can't escape up through a permeable surface, it builds pressure under any coating that gets applied — and eventually the coating blisters, peels, or delaminates from below. Most "failed" epoxy floors weren't bad epoxy. They were applied on slabs that were passing moisture the spec never accounted for.
The other half of the problem is surface profile. Raw concrete comes out of a form or a trowel with a surface that's either too smooth (power-troweled slabs) or contaminated by curing compounds, form release agents, laitance, or residual adhesive from previous flooring. A coating needs a mechanically roughened surface — often called a mechanical key — to grip. If you apply epoxy to a smooth, power-troweled slab without profiling it, adhesion is whatever the coating's own chemistry provides. Usually not much.
Correct prep solves both problems at once — it removes the surface contamination and creates the profile in a single mechanical operation. This page covers how we classify profiles, which method to use for which substrate condition, and how we test for moisture before recommending any coating.