Most businesses believe they have consent and cannot demonstrate it. The phone numbers arrived over years from web forms, in-store sign-ups, exhibitions, referrals, and a spreadsheet a former employee compiled. Somewhere in there, some of those people agreed to something.
Four fields, from now on
Store consent as structured data on the contact: what they agreed to receive, expressed as a purpose rather than a channel; when, to the date and ideally the time; where, meaning the form, page, or interaction; and the wording they actually saw, or a stored version of it. That fourth field is the one businesses skip and the one that answers a complaint, because consent is only meaningful in relation to what was described.
Consent per purpose
Do not hold one messaging switch. Hold a small set of named purposes: order and service updates, appointment reminders, account notices, and promotions or offers. Build every audience from a purpose rather than from a raw number list.
This is not bureaucracy for its own sake. It solves the most common real-world situation, which is a customer who is entirely happy to receive their delivery notification and entirely unhappy to receive a weekend promotion. With one switch you must choose between annoying them and losing the ability to serve them. With purposes, you honour exactly what they asked for.
What to do about the legacy list
Be honest about it. Contacts with no recorded consent basis are not the same as contacts who opted in, and folding them together to make the number bigger is how businesses end up with poor quality signals and complaints. Treat them as a separate population. Where you have a genuine existing relationship and a lawful basis to make contact, a single, clearly identified, easy-to-decline message that asks whether they want to hear from you is a defensible approach in many contexts, and it produces a smaller but real list. Confirm what is permitted where your contacts are before you do it.