Software has the advantage of being able to be written once and distributed millions of times with near $0 incremental costs. For example, if it costs $20,000 to write the software for one customer, then it will cost $20,000 for that software to be produced and distributed to 1 customer or 1000 customers.
A lot of software business owners are aware of this advantage, but I also think a lot of owners think they get this benefit for default just because they are software creators. Just because you produce software does not mean you get $0 incremental cost by default. It takes design, not introducing technical debt and taking analysis of customer wants and needs to the next step, synthesizing solutions to patterns of user goals instead of responding to individual requests.
If it takes 100 man hours to write a piece of software and will require 20 hours for you to re-write it for another customer then you do not have a $0 incremental cost software product. You will have branches of custom software, each with their own customer.
So, it’s important to also do the team activities that find and communicate patterns of user goals to the whole team and design the customization and extensibility points. Customization points are best content, like replacing a string with another string. For example, if customers want their own logo in the app, then this would be a customization point.
Integration points are best when you want hooks that will be invoked with custom processing. For example, if the user goal pattern is people want a notification to be sent when a field in your software has a value entered, then how the notification is sent might be designed as an integration point. This is because one customer might want an email notification and another customer might want a text message.