Prep the pan and oven. Preheat the oven to 350°F (175°C). Grease a 9×13-inch baking pan and line the bottom with parchment for easy removal if desired.
Mix the dry ingredients. In a medium bowl whisk together flour, baking powder, baking soda, cinnamon, nutmeg, ginger, cloves, and salt until evenly combined.
Beat the eggs and sugar. In a large bowl beat the eggs and granulated sugar on medium-high speed for 4–5 minutes until the mixture turns pale, thick, and roughly triples in volume. The batter should fall in ribbons when you lift the beaters.
Add pumpkin and vanilla. Gently mix in the pumpkin puree and vanilla until just combined. The batter will look slightly denser but still airy.
Fold in the dry ingredients. Add the flour mixture in two additions, folding with a spatula until no dry streaks remain. Avoid overmixing so the cake stays light.
Bake the cake. Pour the batter into the prepared pan and smooth the top. Bake 28–32 minutes until the center springs back lightly and a toothpick comes out clean. The edges should look golden and pull slightly from the sides.
Cool and poke. Let the cake cool in the pan for 15 minutes. Use a fork or skewer to poke holes all over the surface, spacing them about ½ inch apart so the milk can soak evenly.
Make the milk mixture. Whisk the evaporated milk, sweetened condensed milk, heavy cream, and ½ teaspoon cinnamon until smooth.
Soak the cake. Slowly pour the milk mixture over the warm cake, pausing to let it absorb. Cover and refrigerate at least 4 hours or overnight so the liquid fully distributes.
Whip the topping. Just before serving, beat the cold heavy cream, powdered sugar, and vanilla until medium-stiff peaks form. Spread evenly over the chilled cake and dust lightly with cinnamon.