You can use Textline for largely inbound support, and never need to initiate a text to a customer who isn't already in your Address Book. This would ensure that you are not texting someone who you know does not want to be texted.
If you'd like more explicit opt-in, the Textline Address Book does have notes, tags, and custom fields which can be used to keep track of this. You could also use an online form in combination with our Zapier integration or API to only add contacts who request SMS communication to your Textline Address Book.
We also fully support industry standard opt out messages like STOP, UNSUBSCRIBE, CANCEL, etc, and don't allow messages to be sent to customers who've opted out using one of these commands. Many of our users who initiate texts to their customers will simply add "Reply STOP to opt out" to the end of their first message, to make sure the customer knows they have that option.
You can also manually unsubscribe customers by clicking on the unsubscribe button in their Contact profile or in the Contact Details toolbar in the Conversation page. Contacts manually unsubscribed by agents can be re-subscribed by agents (unlike Contacts that have sent in an Opt-out command).