If you have to render an object with different materials, you can either change everytime the material by hand or you can use this little xpresso script and „takes-manager“ to automate your renders. There are for sure other methods, but this works quite well for me.
(In my case i had like 30 different products to render, each with 10 different main colors. )
You would set up your products and then animate the user-data-input in your timeline. You can also extend you data to more materials-slots or connect it to more link-lists … and so on.

example setup

add material to your objects or objects

add xpresso-tag

add – user data to your object or Null

name: „what you like“
type: integer
interface: cycle button
The order of the items is important for later, the names not really, it´s just for you

move your object and material/s into the expresso editor

add node: link-list

activate node-port USER_DATA on your object and select your user-data …. from before. in my case „Data-material“

on the material-node you activate the port > Tag Properties > Material

select the node link-list and move your selected materials into the list

>> as mentioned before, the names are not that important, but the order

Final setup, which you can now animate in your timeline and in combination with the „takes-manager“ you can „automate“ your renders. I setup 1 take, duplicate it and just modify the visiblity of each product like needed.