I booked the ferry in advance through 12GoAsia. My flight was late and I arrived 5 minutes after the ferry departed. The next ferry with that company didn’t leave for 4 hours. Another company had one leaving in just over an hour so I bought a new ticket for that company. For my return to Phuket, I wanted to change the destination but was told by the operator that since I booked online, I would need to contact them. However, when I called the phone number listed, it said the number didn’t exist. I replied to the email confirmation and received a message saying nobody manages that account. I had no way of contacting the company (12goasia) so I had to buy another ticket through the operator. So both of my ferry tickets were wasted and I could not get a refund.
I used 12go Asia for a train ticket from Chiang Mai to Bangkok and it worked out just fine. But the ferries from Phuket and the surrounding islands are so plentiful, you do not need to book in advance. I recommend you buy your ticket when you arrive. It’s cheaper and if you need to make changes, the operators are all very flexible.