El caso base es siempre el mismo: en tu ordenador esa variable vive en un fichero que no se sube al publicar, a propósito, porque suele contener credenciales. El sitio donde corre tu app publicada no tiene ese fichero, así que hay que darle las variables a mano en su panel.
Cuando ya las diste de alta y sigue fallando, mira estas cuatro por orden. La primera y más común: no volviste a desplegar. Las variables se leen al construir la app, así que un despliegue anterior nunca las va a recoger. La segunda: la diste de alta solo en un entorno, y la app falla en las previsualizaciones aunque vaya bien en producción, o al revés. La tercera: el nombre no coincide exactamente, y basta un guion bajo de más o una letra distinta. La cuarta: la variable la necesita el navegador y no lleva el prefijo VITE_ o NEXT_PUBLIC_, así que existe en el servidor pero no llega hasta donde se usa.
Y una quinta que despista mucho: que estés dando de alta las variables en Vercel pero quien construye tu app sea Lovable, Bolt o Replit. Si publicas desde ahí, las variables van en el panel de esa herramienta y las de Vercel no las ve nadie.