Next-generation applications based on Web services impose additional requirements on the use of coordination protocols with various optimizations, such as the two-phase commit protocol (2PC). This article analyses the well-known 2PC optimizations “presumed commit” and “presumed abort,” and presents an improved 2PC that is suitable for Web-service-based applications. More specifically, the protocol allows every individual service provider to choose dynamically the most appropriate presumption for any distributed transaction. This new capability is especially useful when a composite Web service is integrating component services that make different presumptions in their commit protocols. The protocol does not introduce extra overhead to the previous 2PC variants in terms of number of messages and log records, and it is easy to understand and realize. Our simulation shows that the choice of appropriate presumption has significant influence on system performance, and that in some heterogeneous settings, combining different presumptions in individual transactions outperforms adopting only one single presumption.