Hi @Stephen M2, you just about had it right in your model. The main thing you were missing was a reference to the items themselves in the list. Because of this, the process flow didn't know what items it was supposed to tell the crane to move. There were a couple things I did to fix this issue. First, on the Wait for Event sources I added a piece that records the item that entered the queue (which caused the token to be created in the first place). You can see how I did that in the image below. I assign a label to the token called "Item" that stores a reference to the item that entered the queue.

Next, on the Push to List activity I changed the Push Value to token.Item. This will push the item to the list instead of the token. Now when the Pull from List activity happens, it will pull a reference to the item in the model that we want to move. One other thing I changed was the Query in the Pull from List activity. I changed it to be WHERE Product = Puller.Product. This will pull items from the list that match the Product value of the Puller. In this case, the token is set to be the Puller so it's really matching the token.Product label if that makes sense.

As a bonus, I also added a second process flow to give you an example of how some of your activities could be consolidated if you wanted (by no means necessary, just if you were curious). To see how this works, just connect the sources to the activities below them and remember to disconnect the sources in the original process flow.
Let me know if you have any questions about this!
listtestclosest-em.fsm