Best practices for configuring firmware

When it comes to embedded, what approaches to firmware configuration works well? My use-case is that I would like to provide configuration separately to flashing the firmware itself. Some thoughts I have are to flash data to a specific memory location, and serial port-based configuration via some protocol (perhaps via Bluetooth). Thanks.