Si llaman al API directo con un número que ya trae '549', normalizarTelefono lo deja y aFormatoWhatsapp le agrega otro '549'. El frontend lo evita (maxLength=10), pero el backend no se protege.
La validación no rechaza números que empiezan con '15' (prefijo móvil antiguo). El comentario dice 'sin el 15' pero el código solo chequea '0'.
preview_url hardcoded to false; URLs in text messages won't show previews. Make configurable if needed.
firmaValida returns false when WHATSAPP_APP_SECRET is missing, which may hide configuration errors in production.
marcarLeido reuses postMensaje which is semantically for sending messages; consider a dedicated low-level POST helper.
enviarRespuestas ignores individual send failures; a failed message won't stop the loop but errors are lost.
Spread operator allows payload to overwrite messaging_product; use explicit object to avoid accidents.
fetch has no timeout; a stalled request can hang indefinitely.