So my agency only does custom themes for clients, but whatever nevertheless scope creep is a real thing. It’s especially difficult in an industry where the client doesn’t always entirely understand what they’re asking for. Some of the requests I get, mid project, are the equivalent of pulling in your car for an oil change then, in the middle of the oil being swapped, looking at the mechanic and saying, “Hey, while you’re under the hood, do you mind changing the transmission for me?”
From my understanding you have the two schools of thought. First is that you make the contract and never deviate. The latter is that you have no boundaries (generally a kind, well meaning person) and just let it happen. I think the healthiest answer is to have a plan of how deviation is handled and when. Accepting scope creep should be the exception, not the rule. Especially in projects, if scope creep is very common, there’s probably something wrong with the process.
For this sort of work, I can appreciate that it’s a bit challenging as the lines are being blurred as to whether folks are buying a product or a service as you provide support after the fact. It’s especially challenging if your support is public facing as how you respond to one person sets the expectation for how you’ll respond to everyone. I’d probably take some time to determine some boundaries that make sense for you and your product, and analyze what the benefit of being that strict/loose would be. Loose support draws more customers and may turn a customer into a client (i.e. custom development) but can also become a time eater for you; strict support may turn off some folks, but you can also provide better support to in-scope needs as you’re not as strapped for time.
We do our best to have a plan for how we’re going to support our clients, then follow through and be consistent. If we make slow changes through iteration to our support, that’s fine. We’re always trying to hone in on the best balance of value for the client and manageability/profitability for us.
Hope this helps! Sorry if I got a bit wordy.