Prep the pan and oven. Heat the oven to 350°F (175°C).
Line a 12-cup muffin pan with paper liners.
Mix dry ingredients. In a large bowl, whisk flour, sugar, baking powder, baking soda, and salt until combined.
Mix wet ingredients. In another bowl, whisk melted butter, eggs, milk, and vanilla. Make sure the butter isn’t hot, or it can scramble the eggs.
Combine batter. Pour the wet mixture into the dry. Stir gently until just combined.
A few small lumps are fine. Do not overmix or the cupcakes can turn dense.
Fill and bake. Divide batter evenly among liners, about two-thirds full. Bake 16–19 minutes, until a toothpick comes out clean or the tops spring back.
Cool completely. Let cupcakes cool in the pan 5 minutes, then move to a rack. Don’t frost warm cupcakes—they’ll melt the frosting.
Make the frosting. Beat butter (and cream cheese, if using) until smooth and fluffy.
Add powdered sugar gradually, then vanilla, salt, and just enough milk to reach a creamy, pipeable texture.
Frost the cupcakes. Pipe or spread a generous swirl. A taller mound helps anchor the popcorn.
Add the popcorn. Right before serving, press small clusters of caramel popcorn into the frosting. Work gently so you don’t crush it.
Drizzle and finish. Warm caramel sauce slightly if thick, then drizzle over the popcorn.
Sprinkle with a tiny pinch of flaky salt for contrast.