по факту в callback_data можно запихнуть чтото вроде item:<category_id>:<product_id> и при нажатии на Кнопку назад удалять последнее значение после разделителя и делать новый запрос с предыдущим значением
У тебя должен быть полный граф переходов между состояниями. Включая переходы назад, в предыдущие узлы. У перехода (считай, твоя кнопка) должен быть id узла, куда тебе нужно изменить состояние. Больше тебе ничего не должно быть нужно.