The most common mistake I see TPMs make with vendors is treating them like a slow internal team. The interventions are the same, the escalation paths are the same, the expectations are the same. The results are not, because the incentives are not.
An internal team's incentives are roughly aligned with the program's success. A vendor's incentives are aligned with the contract. Those are not the same thing. The vendor delivers what the contract specifies. If the contract specified the wrong thing, you get the wrong thing, on time and in budget.
At Roku, I worked with a payment processor whose API documentation did not match the actual API behavior. The vendor was not being difficult. They were delivering what they had built, which was not what I had scoped. The contract said integration support. It did not say documentation accuracy. That gap cost me four weeks.
The things I do differently now: scope the contract around outcomes, not deliverables, wherever possible. Build a weekly sync that is about risks, not status. Name your escalation path inside the vendor before you need it. And treat the contract review as a program risk review. If you have not read the contract, you do not know what your vendor is actually committed to.
Vendors can be excellent partners. The relationship works when both sides understand what was actually agreed to.