Custom Request Intake: configuración y ayuda
Inicio rápido
- Instala el ZIP mediante "Modules > Module Manager > Upload a module" y abre "Custom Requests > Settings > Configuration" con una sola tienda seleccionada.
- En "Basic", configura si lo necesitas "Recipient email override", además de "Maximum size per file", "Maximum requests per visitor", "Rate limit window" y "Reply promise", y pulsa "Save".
- En "Surfaces", elige "Product page block", "Contact page section" y Página independiente. Activa Solicitudes de presupuesto para productos que no se pueden pedir solo para ese flujo concreto.
- Rellena "GDPR retention note" y "Privacy policy URL" en cada idioma, configura "Closed request retention" y deja "Purge requests when uninstalling" desactivado para conservar los datos.
- Envía una consulta de prueba desde cada ubicación activa; verifica la referencia, el boceto obligatorio o la excepción de presupuesto, el registro en la cola, la confirmación al cliente y la notificación a la tienda.
- Abre el registro, usa Guardar estado, después elige una Plantilla de respuesta, revisa Asunto, Mensaje y Estado tras el envío correcto, y pulsa Enviar y guardar la respuesta.
- Configura la tarea "Purge retained closed custom requests" en contexto cron y verifica sus resultados, el almacenamiento protegido de archivos y el correo saliente.
Requiere PrestaShop 1.6 o posterior y PHP 7.1 o posterior.
Se necesitan Fileinfo, inspección de imágenes, cargas de archivos, OpenSSL, mbstring, HTTPS, almacenamiento de archivos subidos protegido y con escritura, correo y limpieza programada mediante cron.
Manual de configuración
Instala y prepara la tienda
Requisitos
Requiere PrestaShop 1.6 o posterior y PHP 7.1 o posterior.
Comprueba estos servicios antes de aceptar solicitudes:
- HTTPS para la página de solicitud y el punto de envío.
- Cargas PHP habilitadas, Fileinfo e inspección de imágenes funcional.
- OpenSSL y mbstring para almacenar contactos de clientes y procesar texto.
- Un directorio
var/mprcustomrequest/uploads/con escritura bajo la raíz de la tienda, protegido frente al acceso público directo. - Una ruta de envío de correo funcional y una identidad de correo válida de la tienda.
- Un planificador que ejecute la limpieza diaria en contexto cron.
El módulo acepta JPEG, PNG, WebP, HEIC y PDF. Los límites del alojamiento deben permitir cada archivo y el conjunto del boceto y los archivos complementarios. Mantén upload_max_filesize, post_max_size y los límites de solicitud del servidor web acordes al límite elegido en el módulo. Los archivos de clientes se guardan fuera del directorio del módulo, por lo que sustituir los archivos del módulo no sustituye los archivos de clientes.
No necesitas una cuenta externa de un servicio de solicitudes. Los clientes pueden enviar sin registrarse. Los clientes conectados reciben los campos de nombre y correo ya rellenados.
Instala y abre la configuración
- Sube el ZIP mediante "Modules > Module Manager > Upload a module" e instálalo.
- Abre "Custom Requests > Settings > Configuration" o pulsa "Configure" para el módulo en "Module Manager".
- Selecciona una tienda en multitienda. Los contextos de grupo y todas las tiendas no permiten editar estos ajustes.
- Configura "Basic", "Surfaces" y "Privacy and retention", y pulsa "Save".
El módulo crea sus propias tablas de solicitudes, registra los hooks compatibles y una tarea de conservación, añade la cola "Custom Requests" e instala la dirección de la página independiente. Los cambios de configuración requieren permiso de edición.
Configura los ajustes básicos
Límites de correo, archivos y solicitudes
| Ajuste | Valor inicial | Cómo usarlo |
|---|---|---|
| "Recipient email override" | Vacío, por lo que se usa el correo de la tienda | Introduce una dirección alternativa para las notificaciones de nuevas solicitudes. Los valores vacíos, no válidos o sin resolver usan el correo de la tienda. Cambia el destinatario, no la identidad de envío de la tienda. |
| "Maximum size per file" | 10 MB | Acepta de 1 a 50 MB por boceto o archivo complementario, sujeto a los límites PHP y del alojamiento. |
| "Maximum requests per visitor" | 3 | Acepta de 1 a 100 intentos de envío durante el periodo configurado. Se limitan tanto la sesión del navegador como la dirección de red. |
| "Rate limit window" | 3600 segundos | Acepta de 60 a 86400 segundos. Los visitantes de una misma red pueden compartir el límite de red. |
| "Reply promise" | 24 horas en días laborables | Acepta de 1 a 720 horas. Este texto aparece en los mensajes de éxito y confirmación. Establece una promesa que tu equipo pueda cumplir. |
Un intento cuenta cuando el formulario supera las comprobaciones iniciales, antes de subir los archivos y guardar la solicitud. Un fallo de carga o almacenamiento puede consumir un intento. La promesa de respuesta no calcula un plazo, asigna personal, envía recordatorios ni realiza una revisión.
Pulsa "Save" tras cambiar estos valores.
Selecciona los puntos de entrada de clientes
Pestaña "Surfaces"
| Ajuste | Valor inicial | Comportamiento |
|---|---|---|
| "Product page block" | Activado | Añade el activador y el diálogo de solicitud de producto mediante el hook de producto disponible. |
| Solicitudes de presupuesto para productos que no se pueden pedir | Desactivado | Si está activado, un producto marcado como no disponible para pedidos en la tienda seleccionada recibe un formulario de presupuesto con boceto opcional. |
| "Contact page section" | Activado | Añade una sección en la página de contacto. Se usa una salida alternativa en el pie si el hook principal de contacto no la mostró. |
| Página independiente | Activado | Habilita la página separada del formulario y su enlace en el pie. |
Los interruptores de ubicación controlan cada lugar completo. Esta pantalla no incluye una lista de selección de productos ni un creador de campos personalizados.
Solicitudes de medidas personalizadas de productos
Con el modo presupuesto desactivado, cada página de producto usa ¿Necesitas otra medida? Envíanos tu boceto y exige un boceto. Un producto que se puede pedir sigue usando este formulario aunque el modo presupuesto esté activado.
Una solicitud de producto conserva la asociación al producto. No captura la combinación elegida ni una copia histórica fija del nombre y la referencia del producto. El personal consulta los datos actuales del producto al revisar la solicitud.

Solicitudes de presupuesto de productos
Activa Solicitudes de presupuesto para productos que no se pueden pedir solo si quieres este flujo alternativo. En la misma tienda, marca el producto de catálogo deseado como no disponible para pedidos. Abre su página y comprueba Solicitar un presupuesto.
En este modo, Boceto (opcional) sustituye al boceto obligatorio. Medidas (si las conoces) y Fotos del lugar u otros archivos (opcional, hasta 4) permiten al cliente aportar contexto adicional. Nombre, correo, descripción y consentimiento siguen siendo obligatorios. El botón de envío es Enviar solicitud de presupuesto.
El módulo vuelve a comprobar el ajuste y el estado actual del producto al enviar. Este modo depende de la disponibilidad para pedidos, no simplemente de las existencias. Los formularios de contacto y de la página independiente siguen siendo solicitudes personalizadas normales con boceto obligatorio.
Formularios independientes y de contacto
Abre la página independiente desde el enlace del pie. Usa su URL localizada generada al añadir un enlace al menú de la tienda. Las solicitudes de esta página y de la sección de contacto pueden llegar sin producto de referencia.

Comprueba tu tema
Prueba las ubicaciones de producto, contacto y página independiente en el tema activo. El activador de producto y el diálogo se emiten desde hooks separados; el diálogo necesita la salida del pie. El activador puede aparecer sin un diálogo funcional si un tema personalizado omite esa salida.
El formulario de producto incluye un diseño para PrestaShop 1.6 y se prepara antes de mostrar la página.
Configura privacidad y conservación
Pestaña "Privacy and retention"
| Ajuste | Valor inicial | Cómo usarlo |
|---|---|---|
| "GDPR retention note" | Explicación traducida incluida sobre evaluación y contacto | Explica cómo usas la solicitud. Aparece en la página independiente. Cambiar este texto no cambia el momento de borrado. |
| "Closed request retention" | 365 días | Acepta de 1 a 3650 días. La limpieza selecciona solicitudes que siguen en Cerrada y cuya última actualización de estado es anterior a este periodo. |
| "Privacy policy URL" | Vacío | Opcional y traducido. Los valores vacíos o inutilizables recurren a la nota de privacidad de la página independiente localizada. |
| "Purge requests when uninstalling" | Desactivado | Déjalo desactivado para conservar registros y archivos al desinstalar o restablecer. Si se activa para desinstalar, la purga cubre los datos de solicitudes del módulo de todas las tiendas. |
Comprueba el enlace de privacidad de cada idioma. Si desactivas Página independiente, configura una "Privacy policy URL" separada y accesible. La nota alternativa no puede servir como página de política accesible mientras esa página esté desactivada.
Cada solicitud guarda el texto del consentimiento, su resumen con clave y la hora de consentimiento. Los nombres y correos de solicitantes usan almacenamiento de contactos compartido y cifrado; los datos telefónicos también se cifran. El texto del mensaje, medidas, archivos y la solicitud completa no están todos cifrados. Considera esta diferencia en tus procedimientos de privacidad y copias de seguridad.
Los ajustes y el acceso diario a la cola se limitan a la tienda seleccionada. La purga al desinstalar tiene deliberadamente un alcance mayor.
Prueba un envío completo
Envía el formulario
Usa una sesión de cliente limpia. Abre cada ubicación habilitada y envía:
- Nombre y Correo electrónico.
- ¿Qué necesitas?, con una descripción clara.
- Un Boceto para una solicitud personalizada normal.
- Opcionalmente teléfono, medidas aproximadas y hasta cuatro archivos complementarios.
- Consentimiento para la evaluación y el contacto.
La descripción se limita a 10000 caracteres, el teléfono a 64 y las medidas a 255. Una solicitud personalizada normal necesita un boceto. El modo de presupuesto de producto descrito antes puede omitirlo por completo.
Para un panel a medida, un ejemplo de descripción es:
What do you need?: A panel to fit the recess shown in my sketch.
Rough dimensions: Measurements are marked on the attached drawing.
Sketch: recess-sketch.pdf
Extra file: recess-photo.jpg
El módulo comprueba el token firmado del formulario, la ubicación habilitada, los campos obligatorios, el consentimiento y los límites de archivos. El control oculto de bots y la limitación de frecuencia se ejecutan antes de guardar. La solicitud normal aceptada comienza como Nueva, recibe una referencia como REQ-2026-00001 y se guarda antes de intentar los correos. Las referencias usan un contador anual por tienda.
Confirma por separado la recepción y el correo
Comprueba el mensaje de éxito y la referencia. Después abre la cola y encuentra esa misma referencia. Verifica por separado la confirmación al cliente y la notificación a la tienda. Una solicitud guardada sigue disponible cuando alguno de los correos se rechaza o falla.
La notificación a la tienda puede incluir archivos del cliente como adjuntos, hasta un total de 10 MiB de contenido real. Los archivos ausentes, ilegibles o que superan el límite figuran como no adjunto y siguen disponibles desde la solicitud si existen en el almacenamiento. La lista de adjuntos enlaza al acceso exclusivo del personal cuando se conoce el directorio admin de la tienda. La confirmación al cliente y las respuestas del personal no adjuntan estos archivos.

Revisa y actualiza solicitudes
Encuentra el registro
Abre "Custom Requests". Las solicitudes más recientes aparecen primero. Filtra "ID", Referencia, Estado, "Product reference", "Has product", Origen y Recibida. "Requester" muestra un correo enmascarado y no es una columna de búsqueda por correo completo.
Usa "Has product > No" para encontrar consultas al taller sin un producto de catálogo. Las referencias de producto enlazan al editor del catálogo. Abre la acción de visualización de la fila para revisar sus detalles.

Inspecciona requisitos y archivos
El detalle incluye información de contacto, Lo que necesita el cliente, Medidas aproximadas, contexto del producto, Archivos adjuntos, Historial de respuestas e Historial de estados. JPEG, PNG y WebP muestran vistas previas. Descarga HEIC y PDF para un visor adecuado. Las descargas requieren permiso de visualización del personal y pertenecen a la tienda seleccionada.
La información del producto y las variables de los mensajes del personal usan la tienda y el idioma de la solicitud. Si un nombre de producto o una nota no está disponible para mostrarse, se omite o sustituye por texto explicativo en lugar de mostrar una variable sin rellenar.

Cambia el estado
Los estados disponibles son Nueva, En revisión, Plano enviado, Presupuestada, Cerrada y Spam.
- En Cambiar estado, elige Estado.
- Añade una Nota de auditoría opcional, de hasta 191 caracteres.
- Pulsa Guardar estado.
Un cambio real registra su hora, empleado y nota. Guardar el mismo estado no añade una nota separada ni actualiza su fecha de conservación. Los cambios de estado requieren permiso de edición.
Para el trabajo compartido, el primer empleado puede elegir En revisión y explicar la evaluación en la nota. El siguiente puede inspeccionar los archivos y el historial antes de continuar. Al terminar, Cerrada hace que la solicitud sea apta para la limpieza de conservación tras el periodo configurado. Spam no forma parte de la conservación de solicitudes cerradas.
Envía y audita respuestas
Redacta un mensaje saliente
- En Enviar respuesta, selecciona Plantilla o Mensaje personalizado.
- Revisa y edita Asunto y Mensaje.
- Elige Estado tras el envío correcto.
- Pulsa Enviar y guardar la respuesta.
Los textos iniciales incluidos son Revisión de la solicitud, Pedir más información, Plano listo y Presupuesto enviado. Seleccionan inicialmente En revisión, En revisión, Plano enviado y Presupuestada respectivamente. Son textos iniciales editables para cada respuesta, no planos ni presupuestos generados automáticamente.
Los marcadores disponibles para la solicitud son:
{customer_name}
{request_reference}
{product_name}
Por ejemplo:
Hello {customer_name},
For request {request_reference}, please confirm the opening width shown in your sketch.
Thank you.
Elimina las menciones innecesarias al producto de una solicitud sin producto de referencia. Las respuestas de clientes llegan a tu buzón habitual. El módulo no las importa a este registro ni ofrece un portal de conversaciones para clientes.
El editor envía texto sin un control para adjuntar archivos. Prepara planos técnicos o documentos de presupuesto mediante tu proceso habitual. No hay una pantalla de ajustes para guardar más textos iniciales reutilizables.

Comprende los resultados del envío
El módulo guarda el mensaje saliente y su resultado. Si el envío funciona, se aplica el estado elegido; si falla, el estado no cambia. Una variable de contenido o un nombre de producto obligatorio que no se puede completar, una respuesta no válida después de completar las variables o una identidad de remitente de la tienda ausente o no válida también detienen el envío y añaden un registro fallido al historial.
El asunto debe caber en 191 bytes. El cuerpo se limita a 20000 caracteres y al límite de bytes de la columna de texto de la base de datos. Estos límites se vuelven a comprobar tras resolver variables y marcadores.
Un resultado "unconfirmed" significa que el correo salió con una identidad de remitente de la tienda sin confirmar. El estado de la solicitud no cambia. No reenvíes el mensaje solo por este resultado; comprueba primero si el cliente lo recibió. Un resultado Enviada significa que la tienda entregó el correo al servidor de correo, no que haya llegado a la bandeja ni que se haya leído.
Programa la limpieza y conserva los datos
Ejecuta la tarea diaria de conservación
La tarea "Purge retained closed custom requests" se programa cada 86400 segundos y se ejecuta mediante cron. Configura su ejecución mediante cron. Las visitas a la tienda y al panel no la ejecutan.
Usa tu gestor de tareas programadas para ejecutar las tareas registradas mediante cron y supervisar fallos. El módulo no tiene una URL /module/mprcustomrequest/cron.
Un administrador del servidor puede, como alternativa, programar el método público de purga del módulo una vez al día. Sustituye la ruta de la tienda y ejecútalo con una cuenta PHP con acceso a la tienda y los archivos:
php -r 'require "/absolute/path/to/shop/config/config.inc.php"; $m = Module::getInstanceByName("mprcustomrequest"); if (!$m || !$m->active) {exit(1);} $r = $m->cronPurge(); echo json_encode($r), PHP_EOL; exit(empty($r["failed"]) ? 0 : 1);'
Comprueba el resultado, incluidos deleted, attachments_deleted, failed y errors. El método procesa las tiendas de la instalación con el ajuste de conservación de cada una. La limpieza programada elimina las solicitudes aptas con estado Cerrada, los archivos, las respuestas salientes y el historial de estados. Libera referencias de contacto y conserva un contacto compartido que aún necesite otro registro o lista de correo. También limpia los límites de frecuencia caducados y las referencias de contacto huérfanas.
Haz copias de los datos de ejecución
Copia juntos las tablas de solicitudes, los contactos compartidos, las claves de cifrado necesarias de la tienda y var/mprcustomrequest/uploads/. El archivo de actualización del módulo no contiene los archivos de clientes. Configura tu servidor web para denegar el acceso directo al directorio. Los archivos de denegación Apache solo se aplican a Apache.
Soluciona problemas de recepción y correo
Falta el formulario o el diálogo
Comprueba el interruptor de ubicación y la tienda seleccionada. Revisa el hook de producto y la salida del pie en tu tema. La página independiente necesita su propio interruptor. En un producto de presupuesto, verifica el ajuste de presupuesto y la disponibilidad para pedidos de esa tienda. Un producto agotado por sí solo no selecciona el modo presupuesto.
Formulario caducado o demasiadas solicitudes
Recarga un formulario caducado. Los tokens están vinculados a tienda e idioma y caducan tras 48 horas. Si la caché sigue sirviendo un formulario antiguo, actualiza la caché afectada. Ante un mensaje de límite de frecuencia, espera hasta que termine la ventana actual. Los intentos de carga fallidos que superaron los controles iniciales pueden seguir contando, y los visitantes de una misma red pueden compartir un límite.
Se rechaza un archivo
Usa una extensión permitida con contenido correspondiente. Cambiar el nombre no basta. Revisa el límite de tamaño del módulo, los límites PHP de upload/post, los límites de solicitud del servidor y el número de archivos extra. Confirma Fileinfo, inspección de imágenes y almacenamiento protegido con escritura. El límite es un boceto y hasta cuatro archivos extra, con la excepción del boceto en modo presupuesto.
La solicitud se guarda pero falta el correo
La cola confirma la recepción independientemente del correo. Revisa "Recipient email override", los ajustes de correo de la tienda y los diagnósticos de la solicitud. Las notificaciones de nuevas solicitudes pueden omitir archivos que superen su límite de correo conjunto. Usa las descargas del registro. Abre la configuración una vez tras instalar para que el módulo recuerde el directorio admin real para los enlaces de notificación.
La respuesta falla o no queda marcada como enviada
Lee Historial de respuestas y su error. Corrige las variables de contenido que no se pudieron completar, la longitud del asunto o del cuerpo, la identidad de remitente de la tienda o la ruta de correo antes de volver a redactar la respuesta. Para "unconfirmed", comprueba si el correo original llegó antes de volver a enviar nada. Un envío fallido o no confirmado no cambia el estado de la solicitud.
Falla el enlace de privacidad o quedan registros antiguos
Una página independiente desactivada necesita una URL de política separada que funcione en cada idioma pertinente. La conservación solo se aplica a registros Cerrada cuya última modificación de estado supere el límite. Los registros abiertos y Spam permanecen. Confirma que se ejecutó la tarea en contexto cron e inspecciona los fallos, incluidos los permisos de borrado de archivos.
Desactiva o desinstala
Detén las nuevas solicitudes
Desactiva los interruptores pertinentes "Product page block", "Contact page section" y Página independiente, y guarda para la tienda seleccionada. Las solicitudes existentes siguen disponibles para el personal mientras el módulo esté instalado.
Conserva o purga los registros
Antes de desinstalar o restablecer, revisa "Purge requests when uninstalling". Inicialmente está desactivado. En ese estado se conservan las tablas operativas de solicitudes y los archivos cargados; se eliminan la configuración, el menú del módulo, el registro de la página independiente y el de la tarea programada.
Si está activado, la desinstalación intenta purgar los registros y archivos de solicitudes del módulo en todas las tiendas, y después elimina sus tablas operativas tras una purga correcta. Los contactos compartidos necesarios en otros lugares se conservan según las reglas de referencias de contacto. Haz la copia necesaria antes de activar el ajuste. Un restablecimiento invoca el comportamiento de desinstalación, por lo que también puede activar esta purga.
El módulo recopila y sigue la evaluación de tu equipo. No calcula precios personalizados, no genera planos ni documentos de presupuesto, no valida medidas ni crea automáticamente un pedido.
Preguntas
Aún no hay preguntas sobre este módulo
Pregunta lo que quieras sobre instalación, compatibilidad o configuración. Las respuestas aparecen aquí.
Problemas conocidos
10
Refuerzo de la seguridad
Limpieza de contactos interrumpida sin finalización fiable
Fallos en acciones del personal en PrestaShop 9
No aparecía la confirmación de envío
El botón de consulta ensanchaba las páginas de producto
Los ajustes mostraban otro contexto de tienda
Fallos en respuestas y ajustes
Ubicaciones de consulta eliminadas reaparecían
Traducciones ausentes o incorrectas
Configurar abría la bandeja de consultas
Solicitudes de funcionalidades
5
Implementado
Recepción de consultas personalizadas
Plazo de respuesta configurable
Modo presupuesto
Contenido reutilizable en consultas
Registro de clientes potenciales en Google Analytics
Registro de cambios
v1.1.42026-10-07
- Configure in the module list now opens the module settings page (it opened the request list).
Versiones anteriores
v1.1.32026-10-07
- Replies to requests are sent reliably: one stored reply and one e-mail per send, whether you click, press Enter or double-click; a failed delivery is recorded and the request status stays unchanged.
- The configuration page saves and keeps its values per shop; with multistore, select one shop to edit it.
- The request page has its own address in every language (for example custom-request, sonderanfertigung-anfragen), editable in Traffic & SEO; the language selector, hreflang and canonical links use it, and it works with friendly URLs off.
- When the request page is switched off, visitors get the theme's 404 page.
- Product links in the request list open the product editor on PrestaShop 8 and 9.
- The reply screen is translated into German, English, Spanish, French, Italian and Polish.
Demo
Prueba el módulo completo antes de comprar
Compra la licencia más tarde y conserva tus ajustes.
- Tu demo de 30 días Pruébalo en tu propia tienda durante 30 días desde la primera instalación.
- Tienda demo lista Explora una tienda demo lista en tu navegador.
- Sin registro Sin cuenta, correo ni dominio de tienda.
Al descargar, aceptas las condiciones de la demo y la política de privacidad.
Al abrir esta demo, acepta los términos de la demo y la política de privacidad.