Guía · Make.com · Bundles y arrays

Iterator vs. aggregator en Make.com: cuándo usar cada uno (con ejemplos)

El iterador y el agregador son opuestos, y confundirlos está detrás de muchas preguntas del tipo «¿por qué me han llegado 40 emails?» o «¿por qué solo se guarda la última fila?». Esta guía explica qué hace cada uno con tus datos y después monta un escenario de ejemplo que usa los dos.

Por Flowpaja · Publicado el

Esta guía también está disponible en: English · Deutsch · Español · Français

Un pedido con un array items, un iterador que genera dos bundles que añaden cada uno una fila en Google Sheets, y un agregador que los une en un solo bundle para que Gmail envíe un único email
El iterador divide el array en un bundle por elemento; el agregador los vuelve a unir, así que el email sale una sola vez.
Transparencia: todo lo que explica esta guía funciona con Make.com sin extras y con las apps que conecta. Al final mencionamos nuestras propias plantillas de Make y nuestro servicio de reparación de escenarios en Fiverr. Los nombres de módulos, ajustes y límites se comprobaron en octubre de 2026 con Make's aggregator docs and Tools docs (en inglés). Los menús y los límites cambian; revísalos si algo se ve distinto.

Qué necesitas

  • Una cuenta de Make.com
  • Datos que contengan una lista, como un pedido con varias líneas, un conjunto de filas de Google Sheets o los adjuntos de un email
  • Conexiones a Google Sheets y Gmail si quieres seguir el ejemplo

La idea en un párrafo

Make pasa los datos entre módulos en forma de bundles. La mayoría de los módulos reciben un bundle y devuelven un bundle. Un iterador recibe un bundle que contiene un array y convierte cada elemento en su propio bundle: entra uno, salen muchos. Un agregador hace lo contrario: recibe muchos bundles y los une en uno: entran muchos, sale uno. Todo lo que hay entre ambos se ejecuta una vez por elemento, así que la posición de estos módulos decide cuántas veces se ejecuta un módulo y cuántos créditos gastas.

Paso a paso: monta un escenario que use los dos

El ejemplo: llega un pedido con varias líneas. Quieres una fila en Google Sheets por cada artículo y, después, un único email al cliente con el total y una lista de lo que ha pedido.

1. Consigue datos que contengan un array

Empieza con un trigger que entregue un pedido, como Webhooks – Custom webhook, o con un HTTP – Make a request que devuelva JSON. Un payload de ejemplo tiene este aspecto:

{"order_id": "A-1001", "email": "[email protected]",
 "items": [{"name": "Desk lamp", "qty": 2, "price": 19.5},
           {"name": "Cable", "qty": 3, "price": 4}]}

Después de un Run once, Make muestra items como un array en la salida.

2. Añade Flow Control – Iterator

En el campo Array, mapea items. Haz Run once y mira la salida: ahora ves un bundle por artículo, cada uno con name, qty y price. El contador de la burbuja del módulo muestra dos bundles. Todo lo que añadas a partir de aquí se ejecutará dos veces para este pedido.

3. Haz algo por cada elemento

Añade Google Sheets – Add a Row. Mapea Order ID desde el trigger (sigue disponible, porque está antes en el escenario) y Name, Qty y Price desde el iterador. Se añaden dos filas.

4. Cierra el bucle con un agregador

Ahora necesitas de nuevo un único resultado. Añade Tools – Numeric aggregator. Pon el iterador como Source module. En Function elige Sum y en Value usa:

{{2.qty * 2.price}}

El agregador espera a recibir todos los bundles de su origen y luego emite un bundle con el total. Usa Tools – Text aggregator de la misma forma para la lista de artículos. Source module: el iterador. Text: {{2.qty}} x {{2.name}}, con un salto de línea como separador de filas.

5. Usa el resultado agregado

Después del agregador, añade Gmail – Send an email. To es {{1.email}} del trigger. En Body contents puedes usar el resultado del agregador, por ejemplo «Tu total: {{4.result}}». Como el agregador ha producido un solo bundle, Gmail se ejecuta una vez, no dos.

6. Aprende cuándo no necesitas un iterador

Make tiene funciones que trabajan directamente con arrays. Si solo necesitas el número de elementos: {{length(1.items)}}. Para unir nombres en una línea: {{join(map(1.items; "name"); ", ")}}. Para sumar un campo: {{sum(map(1.items; "price"))}} (esto suma los precios tal cual, no cantidad por precio). Estas funciones se ejecutan dentro de un módulo que ya tienes, sin bucle y sin créditos extra. Usa un iterador cuando cada elemento necesite su propia acción de módulo, como su propia fila, su propia subida de archivo o su propio mensaje de Slack.

Guía rápida: ¿qué herramienta uso?

Quieres…Usa
Hacer algo una vez por cada elemento de una listaIterator
Convertir muchos bundles en una sola listaArray aggregator
Crear un único bloque de texto, como el cuerpo de un emailText aggregator
Sumar o contar valoresNumeric aggregator
Solo leer o transformar un array en un punto concretomap(), join(), sum() y length()

El Iterator y el Array aggregator están en Flow Control; el Text aggregator y el Numeric aggregator, en Tools.

Errores frecuentes y cómo solucionarlos

Recibes un email por cada elemento en lugar de uno en total. El módulo de Gmail está dentro del bucle: entre el iterador y el agregador, o después del iterador sin ningún agregador. Añade el agregador y coloca Gmail detrás.

Solo se guarda el último elemento, o el agregador devuelve un único valor. Normalmente el Source module está mal configurado, o la agregación la está haciendo un módulo Set variable que se sobrescribe a sí mismo en cada pasada. Asegúrate de que el Source module del agregador sea el iterador o la búsqueda que genera los bundles.

El iterador no devuelve nada o avisa de que esperaba un array. El campo que has mapeado no es un array: es texto, un único objeto o está vacío. Revisa la salida del módulo anterior. Si tienes un texto separado por comas, divídelo primero (por ejemplo con la función split()) e itera sobre el resultado.

El escenario sigue adelante aunque la búsqueda no haya encontrado nada. Es lo esperado cuando un agregador va detrás de la búsqueda: por defecto emite un bundle aunque no le llegue ninguno, lo que resulta útil para gestionar los casos de «no encontrado». Si prefieres que se detenga, activa Stop processing after an empty aggregation en los ajustes avanzados del agregador, o añade un filtro después, por ejemplo para cuando el texto agregado esté vacío.

Después del agregador no ves los datos de los elementos anteriores. Tras la agregación tienes el resultado agregado y todo lo que venga de módulos anteriores al bucle. Los valores de cada elemento dentro del bucle desaparecen, salvo que los hayas agregado en un array.

El consumo de créditos es mucho mayor de lo esperado. Cada módulo después de un iterador se ejecuta una vez por elemento. Una lista de 100 filas que pasa por cuatro módulos gasta muchos más créditos que el mismo trabajo hecho con map() dentro de un solo módulo. La pestaña History muestra las cifras reales de cada ejecución.

Preguntas frecuentes

¿Puedo poner un iterador dentro de otro iterador?
Sí, si cada elemento contiene su propio array. Cada bucle que quieras volver a unir necesita su propio agregador, y el consumo de créditos se multiplica, así que vigílalo.
¿Para qué sirve el Array aggregator?
Reúne bundles en un array que puedes pasar a otro módulo, por ejemplo a una petición HTTP que espera una lista JSON, o para contar resultados con length().
¿Qué va primero, el iterador o el agregador?
Normalmente el iterador abre un bucle y el agregador lo cierra. Pero un agregador también puede ir detrás de un módulo de búsqueda sin ningún iterador, porque la búsqueda ya devuelve varios bundles.
¿El agregador tiene que ir justo después del iterador?
No. Los módulos que hay entre ellos se ejecutan una vez por elemento. Lo que los une es el ajuste Source module del agregador.

¿Quieres que alguien revise tus bucles?

Si un escenario envía un email por cada elemento o gasta muchos más créditos de lo esperado, envía el blueprint exportado y una descripción del problema a nuestro servicio de reparación de escenarios de Make en Fiverr (en inglés), sin compartir tus accesos. Nuestras plantillas de Make.com (en inglés) cubren recordatorios de facturas, seguimiento de presupuestos y leads de formularios. ¿Tienes una tienda en Shopify? Nuestro servicio en Fiverr para pasar pedidos de Shopify a Google Sheets y Slack (en inglés) te monta este tipo de flujo de pedidos, desde 80 USD.

¿Tienes un error en tu propio escenario? Ofrecemos reparación y depuración de escenarios de Make en Fiverr (en inglés), desde 25 USD. Envía el blueprint exportado y una descripción del error, sin necesidad de accesos.

← Todas las guías · Todas las plantillas (en inglés)

Make, Google, Gmail, Google Sheets y Google Drive son marcas de sus respectivos propietarios. Flowpaja es independiente y no está afiliada a estas empresas ni cuenta con su respaldo. Los menús y los límites de los planes pueden cambiar; consulta la documentación actual de cada proveedor.

Nota: Esta traducción se ha realizado con IA.