It is common to use binary variables for arc traversals in the network. So, for instance, you might introduce $z_{i,j}^d\in \lbrace 0,1\rbrace$ with value 1 if driver $d$ visits node $j$ immediately after node $i$ and 0 otherwise, along with constraints to ensure that the nodes form a path (each node is followed by exactly one node). I am assuming here that, in your problem, each driver visits each node at most once.
Addendum: Based on a comment below, you can add continuous variables $u_i^d \ge 0$ together with constraints of the form $$u_j^d \ge u_i^d + z_{i,j}^d - M(1 - z_{i,j}^d) \quad \forall i,j,d,$$ where $M$ is a sufficiently large constant. ($M$ can be the maximum number of stops.) The $u$ variables basically act as counters for the stops, with the counter going up by (at least) 1 each time an arc is crossed. Now add constraints of the form $$u_j^d \ge u_i^d + 1 - M(2 - y_{j,p}^d - x_{i,p}^d)\quad \forall i,j,d,p.$$ This says that if product $p$ is picked up at location $i$ by driver $d$ ($x_{i,p}^d = 1$) and dropped off at location $j$ by the same driver ($y_{j,p}^d =1$) then node $j$ must have a higher count than node $i$ on the route driven by driver $d.$