Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🚀 Cómo insertar dinámicamente el título de la página en el asunto del email de Contact Form 7

🚀 Cómo insertar dinámicamente el título de la página en el asunto del email de Contact Form 7

Su sitio tiene una docena de páginas con un formulario de contacto, y cada correo llega con el mismo asunto «Message from site». ¿Desde qué sección escribió el visitante? ¿Desde qué página de servicios? Termina adivinando a partir del texto del mensaje.

Contact Form 7 es el estándar para formularios en WordPress, con más de 10 millones de instalaciones activas. Pero tal como viene, no puede indicar desde qué página se envió un formulario. El asunto y el cuerpo del correo deben configurarse de forma estática, por lo que un mismo formulario usado en varias páginas produce mensajes idénticos.

El plugin Dynamic Text Extension (DTX) resuelve esto en cinco minutos sin una sola línea de PHP. Usted añade un campo oculto al formulario, y este captura automáticamente el título de la página, la URL o el slug. Luego, muestra esa variable en el asunto o el cuerpo del correo mediante la plantilla. A continuación, una guía paso a paso desde cero.

💡 Resumen rápido:

  • Instale DTX desde el directorio de WordPress.org y actívelo junto con Contact Form 7
  • Añada a su formulario una etiqueta oculta [dynamichidden] con el shortcode CF7_get_post_var
  • Inserte la variable en el asunto o el cuerpo del correo desde la pestaña «Mail»
  • Pruebe enviando desde dos páginas diferentes; los correos llegarán con asuntos distintos
  • Si lo necesita, añada la URL de la página o parámetros GET usando el mismo mecanismo

Paso 1: Instalar Dynamic Text Extension

Página del plugin Contact Form 7 Dynamic Text Extension en el directorio de WordPress.org

Primero, el plugin en sí. Es gratuito y está disponible en el directorio de WordPress.org con el nombre Contact Form 7, Dynamic Text Extension.

La instalación es la habitual: Plugins → Añadir nuevo → busque «Dynamic Text Extension» → Instalar → Activar. Ya debería tener Contact Form 7 activo, puesto que DTX lo extiende específicamente; sin CF7 no sirve para nada.

Tenga en cuenta que el plugin recibe mantenimiento activo. A junio de 2026 cuenta con más de 100 000 instalaciones activas, una valoración de 4,5 en WordPress.org y compatibilidad con la última versión de WordPress. El autor, Chris Mav, también desarrolla UberMenu. No es uno de esos plugins abandonados tras la primera versión.

Paso 2: Añadir un campo oculto al formulario

Ahora, la configuración dentro de Contact Form 7. Abra el formulario que desea editar: Contacto → Formularios de contacto → haga clic en el nombre del formulario. Se encuentra en la pestaña Formulario.

Copie este código y péguelo en el cuerpo del formulario después de sus campos principales, pero antes del botón de envío:

1[dynamichidden page-title "CF7_get_post_var key='title'"]

Esto es lo que sucede. dynamichidden es un tipo de campo de DTX: invisible para el visitante, pero incluido en el envío. page-title es el nombre interno de la variable (arbitrario, pero descriptivo). Dentro de las comillas, el shortcode CF7_get_post_var key='title' obtiene el título de la página actual de WordPress a través del objeto global $post.

Si necesita la URL de la página en lugar del título, sustituya el shortcode interno por CF7_URL:

1[dynamichidden page-url "CF7_URL"]

Para el slug, use CF7_get_post_var key='slug':

1[dynamichidden page-slug "CF7_get_post_var key='slug'"]

Puede añadir los tres campos a la vez y así verá el título, la URL y el slug en el correo. Haga clic en Guardar bajo el editor del formulario.

Paso 3: Mostrar la variable en la plantilla del correo

El último paso es indicarle a Contact Form 7 dónde insertar los datos recopilados. Vaya a la pestaña Mail dentro del formulario.

En el campo Asunto, añada el nombre de la variable entre corchetes:

1[page-title]

El asunto completo podría verse así: Message: [page-title]. O, si añadió la URL: Inquiry from page: [page-url].

El mismo enfoque funciona en el campo Cuerpo del mensaje. Puede insertar la variable [page-title] en cualquier lugar de la plantilla, antes o después del texto principal del mensaje:

1Submission page: [page-title]
2URL: [page-url]
3
4Message:
5[your-message]

Las variables page-title, page-url y page-slug son los nombres exactos que asignó en las etiquetas [dynamichidden] del paso anterior. Deben coincidir exactamente.

Guarde el formulario y pruébelo: abra dos páginas cualesquiera de su sitio que contengan este formulario y envíe un mensaje de prueba desde cada una. Los correos llegarán con asuntos diferentes según el título de la página donde se encontraba el visitante.

Usar parámetros GET

DTX puede leer parámetros de la URL, lo cual resulta útil cuando se pasa información adicional a través de un enlace. Por ejemplo, un botón «Solicitar consultoría» en una página de precios podría enlazar a /contact/?plan=pro. El shortcode para esto:

1[dynamichidden selected-plan "CF7_GET key='plan'"]

En la plantilla del correo, use [selected-plan]. El formulario insertará automáticamente el valor pro de la cadena de consulta.

La misma técnica funciona para etiquetas UTM, identificadores de campaña y cualquier otro parámetro que pase en la URL.

En este video, el autor del plugin, Chris Mav, demuestra la configuración básica de DTX en tres minutos, desde la instalación hasta el primer campo dinámico. Si alguno de los pasos anteriores le genera dudas, véalo: todas las acciones se muestran en pantalla en tiempo real.

Qué hacer cuando el formulario aparece en todas las páginas pero necesita títulos diferentes

El escenario básico descrito arriba cubre la gran mayoría de los casos: un formulario, el título de la página en el asunto del correo. Pero ¿qué ocurre si tiene docenas de páginas, cada una con su propio formulario y un conjunto único de campos? Crear y configurar DTX manualmente para cada una lleva tiempo.

Aquí tiene tres escenarios en orden creciente de complejidad:

  • Un formulario en todas las páginas. El caso ideal para DTX: añada el campo oculto una vez y el asunto del correo tomará [page-title]. La configuración lleva cinco minutos.

  • Varios formularios diferentes. Configure DTX en cada formulario por separado, pero copie las etiquetas entre formularios mediante el portapapeles. El campo oculto con CF7_get_post_var funciona igual en todos los formularios.

  • Docenas de páginas y pruebas A/B. Si necesita no solo distinguir páginas, sino también rastrear las conversiones de los formularios, considere Gravity Forms o WPForms. Estos incluyen analíticas de envíos y enrutamiento condicional de notificaciones. DTX no es un competidor aquí; resuelve una tarea específica (campos dinámicos) y lo hace de forma gratuita.

⁉️🤔 Preguntas frecuentes

¿Funciona DTX con la última versión de WordPress?

Sí, el plugin es compatible con WordPress 6.7+ y recibe actualizaciones periódicas. A junio de 2026, el autor publica actualizaciones cada 1 o 2 meses; la más reciente fue en mayo de 2026. Consulte la versión en la página del plugin, donde siempre se indica la compatibilidad actual.

¿Puedo insertar el título de una página específica en lugar de la actual?

CF7_get_post_var obtiene los datos del objeto global $post, que se refiere a la página donde se muestra el formulario. Para insertar el título de una página diferente, especifique su ID: CF7_get_post_var key='title' post_id='42'. Puede encontrar el ID de la página en el administrador: Páginas → Todas las páginas → pase el cursor sobre el título y el ID aparecerá en la URL.

¿Qué hago si la variable no aparece en el correo?

Revise tres cosas. Primero: ¿coinciden los nombres? El valor del atributo en [dynamichidden name ...] y la variable [name] en la plantilla deben ser idénticos, incluyendo mayúsculas y minúsculas. Segundo: ¿el shortcode de CF7 está envuelto en tipos de comillas diferentes? Dentro de comillas dobles, los atributos de DTX deben usar comillas simples ("CF7_get_post_var key='title'"). Tercero: ¿está activo Contact Form 7? Sin él, DTX no funciona.

¿Por qué usar un campo oculto si podría simplemente escribir el título en el asunto?

El campo oculto automatiza el proceso. Si tiene un formulario en diez páginas, sin DTX necesitaría crear diez copias del formulario con asuntos diferentes o cambiar manualmente el asunto para cada página. DTX lo hace por usted: añada el campo oculto una vez y el asunto del correo siempre coincidirá con la página de envío.

¿Puedo usar DTX para prerrellenar campos visibles?

Sí, sustituya dynamichidden por dynamictext o dynamicemail. Por ejemplo, [dynamictext user-name "CF7_get_current_user key='user_nicename'"] prerrellenará el campo con el nombre del usuario que ha iniciado sesión. El visitante verá el valor prerrellenado y podrá editarlo antes de enviar.

¿El plugin entra en conflicto con el caché?

No. DTX inserta los valores del lado del servidor cuando se renderiza la página, por lo que los plugins de caché como WP Rocket no lo afectan. Si usa caché a nivel de servidor (Varnish, Nginx FastCGI), asegúrese de que las páginas con formularios estén excluidas de la caché; de lo contrario, el título podría «quedarse pegado» al del primer visitante.

Comience con el primer escenario: instale DTX, añada un campo oculto a su formulario actual y pruebe los correos desde dos páginas diferentes. Nueve de cada diez sitios se detienen aquí, porque la necesidad de una lógica más compleja simplemente nunca surge.