Categories are a way of differentiating different leads, by building logic based on one or more fields.
The categories can be either defined in a campaign workflow, or in a contract.
A category can change the base price of a lead, an can be either included (opt-in) or excluded (opt-out) from a contract.
NB: the price of a lead is therefore based on the base price and the sum of the changes off the categories which are active.
A contract can also opt-in or opt-out of a vertical without a category.
Categories cannot be changed manually but will be updated automatically based on the fields. So if you want to update a category of an inbound lead you have to change to values of the contributing fields accordingly.
Categories can be created either on a general level in a workflow, or specifically in a contract.
Categories can be either public or private, meaning if they will be shown to your client or not.