Recently, many Internet of Things (IoT) or wireless sensor network (WSN) applications adopt ZigBee as their communication protocol. In these applications, messages may need to be disseminated to some specific objects or nodes using multicast transmissions. However, we observe that the original ZigBee multicast protocol causes extremely high packet overhead and energy consumption. In this work, we propose a ZigBee-compatible energy efficient multicast protocol, which allows nodes to execute the designed procedures in a distributed manner. By our scheme, each node uses the designed maintenance module to manage its neighbors. When multicasting, a node utilizes the designed multicasting module to compete for being a relay node by the proposed backoff mechanism. In addition, each node overhears its neighbors' broadcasts to avoid unnecessary transmissions and to ensure that the transmitted multicast packets are successfully received. Our results indicate that the proposed protocol can indeed lengthen network lifetime, reduce redundant packets, and preserve network reliability.