{"id":268,"date":"2026-10-22T14:26:09","date_gmt":"2026-10-22T12:26:09","guid":{"rendered":"https:\/\/n8nfacil.com\/?p=268"},"modified":"2026-11-02T18:53:14","modified_gmt":"2026-11-02T17:53:14","slug":"eliminar-duplicados-n8n-email","status":"publish","type":"post","link":"https:\/\/n8nfacil.com\/en\/eliminar-duplicados-n8n-email\/","title":{"rendered":"Eliminar duplicados en n8n: limpia una lista de contactos por email"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>Proyecto local probado:<\/strong> n8n 2.44.5, 22 de octubre de 2026. Datos ficticios.<\/p><p class=\"wp-block-paragraph\">Dos contactos pueden tener el mismo correo aunque uno llegue en may\u00fasculas o con espacios. Si comparas los valores sin prepararlos, parecer\u00e1n diferentes. En este proyecto vas a normalizar cuatro registros ficticios y conservar dos contactos \u00fanicos con el nodo Remove Duplicates.<\/p><h2 class=\"wp-block-heading\">Objetivo y requisitos<\/h2><p class=\"wp-block-paragraph\">Necesitas n8n y el JSON del descargable. El workflow funciona en local, sin hojas de c\u00e1lculo, cuentas externas ni datos de clientes. La deduplicaci\u00f3n se realiza dentro de la entrada de una ejecuci\u00f3n: no estamos consultando una base de datos ni creando un registro permanente de correos ya procesados.<\/p><p class=\"wp-block-paragraph\">El recorrido es Ejecutar prueba \u2192 Contactos ficticios \u2192 Normalizar correo \u2192 Contactos unicos. El nodo de datos contiene cuatro objetos: tres referencias al correo de Ana y una al de Luis. Un peque\u00f1o nodo Code crea esos datos de ejemplo; no realiza conexiones ni escribe archivos.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1101\" height=\"874\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo.jpg\" alt=\"Cuatro contactos pasan por la normalizaci\u00f3n y quedan en dos correos \u00fanicos.\" class=\"wp-image-269\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo.jpg 1101w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo-300x238.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo-1024x813.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo-768x610.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-flujo-15x12.jpg 15w\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" \/><figcaption class=\"wp-element-caption\">Cuatro contactos pasan por la normalizaci\u00f3n y quedan en dos correos \u00fanicos.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">1. Importa y lee la entrada<\/h2><p class=\"wp-block-paragraph\">Descomprime el ZIP e importa 07-eliminar-duplicados.json en un workflow nuevo. Abre Contactos ficticios. Cada objeto contiene nombre y email, pero los nombres de los registros repetidos son distintos a prop\u00f3sito. As\u00ed podremos comprobar que la comparaci\u00f3n se basa en el correo y no en la igualdad del objeto completo.<\/p><p class=\"wp-block-paragraph\">Ejecuta el flujo y observa el n\u00famero de elementos que entra en Normalizar correo: deben ser cuatro. En n8n, cada elemento se procesa por separado; cuatro contactos no son necesariamente un \u00fanico elemento con una lista dentro.<\/p><h2 class=\"wp-block-heading\">2. Normaliza antes de comparar<\/h2><p class=\"wp-block-paragraph\">Normalizar correo utiliza la expresi\u00f3n <code>{{ $json.email.trim().toLowerCase() }}<\/code>. trim elimina los espacios de los extremos y toLowerCase convierte el texto a min\u00fasculas. El nombre se conserva para identificar qu\u00e9 registro sobrevive.<\/p><p class=\"wp-block-paragraph\">Esta entrada est\u00e1 controlada y todos los correos son textos. Si trabajas con datos de un formulario, revisa primero si falta el campo o llega otro tipo. No conviene convertir todos los casos problem\u00e1ticos en un email vac\u00edo y despu\u00e9s deduplicarlos juntos sin una decisi\u00f3n expl\u00edcita.<\/p><h2 class=\"wp-block-heading\">3. Configura Remove Duplicates<\/h2><p class=\"wp-block-paragraph\">En Contactos unicos selecciona la operaci\u00f3n Remove Items Repeated Within Current Input. En la comparaci\u00f3n, elige Selected Fields y escribe email como campo a comparar. No selecciones todos los campos: Ana y Ana repetida tienen nombres diferentes, aunque su email normalizado sea el mismo.<\/p><p class=\"wp-block-paragraph\">El nodo conserva la primera coincidencia de esta lista. Por eso el orden de entrada importa si dos registros contienen informaci\u00f3n distinta. Eliminar duplicados no fusiona autom\u00e1ticamente el nombre m\u00e1s reciente, el tel\u00e9fono o cualquier otro dato de esos registros.<\/p><h2 class=\"wp-block-heading\">4. Comprueba los cuatro registros y los dos resultados<\/h2><p class=\"wp-block-paragraph\">La salida conservada debe tener dos elementos: Ana con ana@example.com y Luis con luis@example.com. Compara el contador de entrada con el de salida y abre el JSON; no basta con que aparezca un aviso verde.<\/p><p class=\"wp-block-paragraph\">Vuelve a ejecutar sin cambiar nada. En este modo volver\u00e1s a obtener dos contactos. El objetivo es eliminar repeticiones dentro de cada lote, no impedir que el mismo correo salga en ejecuciones posteriores.<\/p><h2 class=\"wp-block-heading\">5. Ampl\u00eda la prueba de forma \u00fatil<\/h2><p class=\"wp-block-paragraph\">Cambia el correo del \u00faltimo registro por otro diferente y espera tres resultados. Despu\u00e9s devuelve el dato inicial. Si no coincide, comprueba que has ejecutado el workflow completo y que la comparaci\u00f3n sigue apuntando a email.<\/p><p class=\"wp-block-paragraph\">Si tu criterio de identidad es otro, como un identificador de cliente, cambia el campo de comparaci\u00f3n. Un email compartido por dos personas puede no ser una clave adecuada. La regla debe representar tu caso de uso, no elegirse solo porque el ejemplo la utiliza.<\/p><h2 class=\"wp-block-heading\">L\u00edmites y siguiente paso<\/h2><p class=\"wp-block-paragraph\">No se valida que un buz\u00f3n exista, no se consulta informaci\u00f3n hist\u00f3rica y no se evita una escritura simult\u00e1nea en un destino externo. Para guardar en una base de datos necesitas adem\u00e1s una estrategia de unicidad en ese destino. Aqu\u00ed has construido una limpieza de un lote que puedes inspeccionar antes de a\u00f1adir conexiones.<\/p><p class=\"wp-block-paragraph\">Fuente oficial: <a href=\"https:\/\/docs.n8n.io\/integrations\/builtin\/core-nodes\/n8n-nodes-base.removeduplicates\/\">https:\/\/docs.n8n.io\/integrations\/builtin\/core-nodes\/n8n-nodes-base.removeduplicates\/<\/a><\/p><h2 class=\"wp-block-heading\">Resultados comprobados<\/h2><p class=\"wp-block-paragraph\">Cuatro contactos de entrada producen dos contactos \u00fanicos: Ana y Luis.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1101\" height=\"874\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado.jpg\" alt=\"Remove Duplicates compara el email y conserva los contactos de Ana y Luis.\" class=\"wp-image-270\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado.jpg 1101w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado-300x238.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado-1024x813.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado-768x610.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-duplicados-resultado-15x12.jpg 15w\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" \/><figcaption class=\"wp-element-caption\">Remove Duplicates compara el email y conserva los contactos de Ana y Luis.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">Descarga para practicar<\/h2><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/07-eliminar-duplicados.zip\">Descargar proyecto en ZIP<\/a>. Descomprime los archivos y revisa sus instrucciones antes de importarlos. No contienen credenciales ni la base de datos de la instalaci\u00f3n.<\/p><h2 class=\"wp-block-heading\">Tutoriales relacionados<\/h2><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/importar-exportar-workflows-n8n\/\">Importar y exportar workflows<\/a> \u00b7 <a href=\"https:\/\/n8nfacil.com\/limpiar-datos-n8n-edit-fields\/\">Limpiar datos con Edit Fields<\/a> \u00b7 <a href=\"https:\/\/n8nfacil.com\/nodo-if-n8n-clasificar-pedidos\/\">Practicar IF<\/a><\/p><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/errores-n8n-depurar-datos\/\">Errores en n8n: encuentra el dato que falla y comprueba la correcci\u00f3n<\/a><\/p><section><h2>Construye este workflow desde cero<\/h2><p>Puedes crear los nodos manualmente en lugar de importar el ZIP. Los ajustes siguientes corresponden al archivo del proyecto y a la versi\u00f3n indicada al comienzo de la gu\u00eda; los nombres de los controles pueden variar en otras versiones.<\/p><h3>Ejecutar prueba \u00b7 Manual Trigger<\/h3><p>A\u00f1ade Manual Trigger como inicio del flujo. Permite ejecutar la pr\u00e1ctica pulsando Execute workflow, sin publicar un disparador autom\u00e1tico.<\/p><h3>Contactos ficticios \u00b7 Code<\/h3><p>A\u00f1ade Code, selecciona JavaScript y Run Once for All Items. Sustituye el c\u00f3digo de ejemplo por:<\/p><pre><code>return [{&quot;nombre&quot;:&quot;Ana&quot;,&quot;email&quot;:&quot; ANA@EXAMPLE.COM &quot;},{&quot;nombre&quot;:&quot;Ana repetida&quot;,&quot;email&quot;:&quot;ana@example.com&quot;},{&quot;nombre&quot;:&quot;Luis&quot;,&quot;email&quot;:&quot;luis@example.com&quot;},{&quot;nombre&quot;:&quot;Ana tercera&quot;,&quot;email&quot;:&quot;ana@example.com&quot;}].map(json =&gt; ({json}));<\/code><\/pre><h3>Normalizar correo \u00b7 Edit Fields (Set)<\/h3><p>A\u00f1ade Edit Fields (Set) y selecciona Manual Mapping. Crea los siguientes campos; utiliza Fixed para valores literales y Expression para f\u00f3rmulas. Conserva solo los campos configurados para reproducir la salida del proyecto.<\/p><figure class=\"wp-block-table\"><table><thead><tr><th>Campo<\/th><th>Tipo<\/th><th>Modo<\/th><th>Valor<\/th><\/tr><\/thead><tbody><tr><td>nombre<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ $json.nombre }}<\/code><\/td><\/tr><tr><td>email<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ $json.email.trim().toLowerCase() }}<\/code><\/td><\/tr><\/tbody><\/table><\/figure><p>Las comillas de los valores de texto de la tabla indican que son cadenas: no las escribas en el campo Fixed. Conserva los espacios cuando formen parte de los datos de prueba.<\/p><h3>Contactos unicos \u00b7 Remove Duplicates<\/h3><p>Elige eliminar elementos repetidos dentro de la entrada actual, compara Selected Fields y escribe email en Fields to Compare. No elijas la comparaci\u00f3n con ejecuciones anteriores.<\/p><h3>Conecta los nodos y revisa el recorrido<\/h3><ul><li>Ejecutar prueba \u2192 Contactos ficticios.<\/li><li>Contactos ficticios \u2192 Normalizar correo.<\/li><li>Normalizar correo \u2192 Contactos unicos.<\/li><\/ul><p>Ejecuta desde el inicio y abre la salida de cada nodo. Comprueba los valores y el n\u00famero de elementos antes de seguir. Un nodo verde indica ejecuci\u00f3n completada, pero debes comparar su salida con los resultados esperados de esta gu\u00eda.<\/p><\/section><p class=\"wp-block-paragraph\"><strong>Autor:<\/strong> Javier Fern\u00e1ndez, estudiante. Conoce c\u00f3mo documento las pr\u00e1cticas en <a href=\"https:\/\/n8nfacil.com\/sobre\/\">Sobre n8nf\u00e1cil<\/a> o <a href=\"https:\/\/n8nfacil.com\/contacto\/\">comunica un error<\/a> indicando el paso y la versi\u00f3n.<\/p>","protected":false},"excerpt":{"rendered":"<p>Limpia una lista de contactos y elimina correos duplicados con n8n. Incluye workflow local, capturas reales y resultados comprobados.<\/p>","protected":false},"author":1,"featured_media":269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datos-expresiones"],"_links":{"self":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":5,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"predecessor-version":[{"id":321,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/268\/revisions\/321"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media\/269"}],"wp:attachment":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}