Condiciones en Shopify Flow

En Shopify Flow, las condiciones se utilizan para determinar qué ruta seguir en un flujo de trabajo, generalmente para controlar si se lleva a cabo una acción. Para establecer una condición, se elige un campo de datos para realizar una comprobación (como de un nombre de producto), un operador lógico (como equal to) y un valor de comparación (Blue jeans).

Ejemplos de condiciones

Comprobar si al menos un artículo de una lista coincide con una condición

En este ejemplo, se muestra una condición típica que comprueba si al menos un artículo de una lista coincide con un valor determinado.

En este caso, la condición comprueba si uno de los productos de un pedido tiene una etiqueta de presale. Para crear esta condición, se elige order / lineItems / product / tags. De forma predeterminada, Flow elige al menos uno de como operador lógico:

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale

Las partes al menos uno de son operadores de lista y se usan para controlar la coincidencia en varios elementos de la lista. La parte es igual a es un operador de campo que determina si un artículo de la lista coincide con una condición.

Comprobar si ninguno de los artículos de una lista coincide con una condición

En este ejemplo, se muestra una condición típica que comprueba si ninguno de los artículos de una lista coincide con un valor determinado. Un problema común que se debe considerar es que las listas pueden estar vacías. Si una lista está vacía, el operador de lista controlará la condición (en este caso ninguno de).

En tal caso, la condición comprueba si ninguna de las etiquetas de producto es igual a "foo":

If none of product / tags:
  tag_item
  is equal to
  foo

La condición devolverá true si (1) no hay etiquetas de producto o (2) ninguna de las etiquetas es "foo". De lo contrario, devolverá false.

Comprobar si un artículo de una lista coincide con varios criterios

En este ejemplo, se muestra una condición típica que comprueba si al menos un artículo de una lista coincide con dos criterios separados.

En este caso, la condición comprueba si uno de los productos de un pedido tiene una etiqueta de presale y si tiene un productType de clothing.

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale
  AND
  If lineItem_item / product
    productType
    is equal to
    clothing

Para crear esta condición, es recomendable que realices lo siguiente:

  1. Elige order / lineItems / product / tags para los primeros criterios.
  2. Elige Agregar criterios para el mismo artículo en la lista lineItems. Nota: Es un error común elegir aquí el artículo de lista incorrecto.
  3. Elige lineItems_item como objeto de nivel superior y luego product / productType para el segundo criterio. Nota: También es un error común elegir aquí el objeto incorrecto.
  4. Elige AND para combinar los dos criterios.
  5. Introduce los valores presale y clothing para los dos criterios.

Tipos de datos que se usan con Flow

El primer valor en cualquier condición de Flow son los datos de tu tienda, y se extraen de la API del panel de control de GraphQL.

Flow admite los siguientes tipos de datos:

  • Float: los valores de float son números con un importe decimal, por ejemplo: 4,25.
  • Entero: los valores enteros son números enteros que no tienen un importe decimal, por ejemplo: 42.
  • Fecha: los valores de fecha son representaciones numéricas de la fecha, por ejemplo: 01012021.
  • Cadena: los valores de cadena son texto. Las comparaciones con los valores de cadena no consideran mayúsculas ni minúsculas.
  • Booleano: los valores booleanos son verdaderos o falsos.
  • Enum: los valores enum son conjuntos de datos que permiten que una variable sea un conjunto de constantes predefinidas.

Operadores lógicos

Los operadores lógicos definen cómo se aplica tu condición. Las condiciones pueden verificar propiedades simples, como si el total de un pedido está por encima de un determinado monto o si un cliente acepta materiales publicitarios. Los operadores lógicos también pueden verificar si hay propiedades más complejas.

Los operadores pueden ser de campo, como igual a o no igual a, o de lista, como al menos uno de o ninguno de.

Operadores de campo

Los operadores de campo se usan para comparar dos valores. Flow puede usar los siguientes operadores:

Igual a

Igual a compara valores para comprobar si son iguales. En el siguiente ejemplo, el valor de order.currentTotalDiscountsSet.shopMoney.amount se recupera de los datos de la tienda y se compara con el segundo valor, 50.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el primer valor es igual a 50, la condición es verdadera y el pedido se cancela.

No es igual a

No igual a compara valores para comprobar que no sean iguales. En el siguiente ejemplo, el valor de order.currentTotalDiscountsSet.shopMoney.amount se recupera de los datos de la tienda y se compara con el segundo valor, 50.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el primer valor es igual a 93, la condición es verdadera y el pedido se cancela.

Mayor que y Mayor que o igual a

Mayor que y Mayor que o igual a comparan valores para comprobar si el primer valor es mayor que el segundo valor, o mayor que o igual a este último. En el siguiente ejemplo, el valor de order.currentTotalDiscountsSet.shopMoney.amount se recupera de los datos de la tienda y se compara con el segundo valor, 50.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es 137, la condición es verdadera, porque 137 es mayor que 50, por lo tanto, el pedido se cancela.

Menor que o Menor que o igual a

Menor que y Menor que o igual a compara valores para comprobar si el primer valor es menor que el segundo valor, o menor que o igual a este último. En el siguiente ejemplo, el valor de order.currentTotalDiscountsSet.shopMoney.amount se recupera de los datos de la tienda y se compara con el segundo valor, 50.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es 47, la condición es verdadera, porque 47 es menor que o igual a 50. El pedido se cancela.

Al menos uno de

El operador al menos uno de comprueba si el campo es igual a cualquier valor de la lista proporcionada. Los valores que se van a comprobar deben introducirse individualmente, seguidos de la tecla Enter (de forma similar a las etiquetas). El uso de al menos uno de en una matriz en blanco da lugar a una evaluación falsa. En el ejemplo siguiente, el valor de order.lineitem.product.title se recupera de los datos de la tienda y se compara con la segunda serie de valores: piña, guayaba o kiwi.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es "guayaba", la condición es verdadera, porque "guayaba" se incluye en la matriz de "piña, guayaba y kiwi". El pedido se cancela.

Ninguno de

El operador ninguno de comprueba si el campo no es igual a ninguno de los valores de la lista proporcionada. Los valores que se van a comprobar deben introducirse individualmente, seguidos de la tecla Enter (de forma similar a las etiquetas). En el ejemplo siguiente, el valor de order.lineitem.product.title se recupera de los datos de la tienda y se compara con la segunda serie de valores: piña, guayaba o kiwi.

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de la tienda es "frambuesa", la condición es verdadera, porque "frambuesa" no se incluye en la matriz de "piña, guayaba y kiwi". Se cancela el pedido.

Incluye

Incluye compara valores para comprobar si en la entrada del primer valor se incluyen los datos de la entrada del segundo valor. En el siguiente ejemplo, el valor de order.lineitem.product.title se recupera de los datos de la tienda y se compara con el segundo valor, "rascador".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de los datos de tu tienda es "rascacielos", la condición es verdadera, porque la cadena exacta "rasca" se incluye en la cadena "rascacielos". El pedido se cancela.

No incluye

No incluye compara valores para comprobar si en la entrada del primer valor no se incluyen los datos de la entrada del segundo valor. En el siguiente ejemplo, el valor de order.lineitem.product.title se recupera de los datos de la tienda y se compara con el segundo valor, "rascador".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor recuperado de los datos de la tienda es "rasqueta", la condición es verdadera, porque la cadena exacta "rascador" no se incluye en la cadena "rasqueta". Se cancela el pedido.

Comienza con

Comienza con compara valores para comprobar si el primer valor comienza con los datos del segundo valor. En el siguiente ejemplo, el valor de order.shippingAddress.country se recupera de los datos de la tienda y se compara con el segundo valor, "Reino".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es "Reino Unido", la condición es verdadera, porque la cadena "Reino" comienza la cadena "Reino Unido". El pedido se cancela.

No comienza con

No comienza con compara valores para comprobar si el primer valor no comienza con los datos del segundo valor. En el siguiente ejemplo, el valor de order.shippingAddress.country se recupera de los datos de la tienda y se compara con el segundo valor, "Reino".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es "Canadá", la condición es verdadera, porque la cadena "Canadá" no inicia la cadena "Reino Unido". El pedido se cancela.

Termina con

Termina con compara valores para comprobar si el primer valor termina con los datos del segundo valor. En el siguiente ejemplo, el valor de order.lineitems.product.title se recupera de los datos de la tienda y se compara con el segundo valor, "últimos disponibles".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de la tienda es "calcetines deportivos, últimos disponibles", la condición es verdadera, porque "calcetines deportivos, últimos disponibles" termina con la cadena "últimos disponibles". Se cancela el pedido.

No termina con

No termina con compara valores para comprobar si el primer valor no termina con los datos del segundo valor. En el siguiente ejemplo, el valor de order.lineitems.product.title se recupera de los datos de la tienda y se compara con el segundo valor, "últimos disponibles".

Ejemplo de un flujo de trabajo que usa el operador lógico

Si el valor tomado de tu tienda es "calcetines deportivos nuevos", entonces la condición es verdadera, porque "calcetines deportivos nuevos" no termina con la cadena "últimos disponibles". Se cancela el pedido.

Operadores nulos o vacíos

Vacío o no existe

Algunos campos de los datos pueden estar vacíos. Por ejemplo, order.cancelReason devolverá null si no se cancela un pedido. Usa vacío o no existe si deseas devolver true cuando un campo está vacío o null y false si está presente.

No está vacío y existe

Algunos campos de los datos pueden estar vacíos. Por ejemplo, order.cancelReason devolverá null si no se cancela un pedido. Usa no está vacío y existe si deseas devolver true cuando un campo no está vacío y false cuando está vacío.

Operadores de lista

Los operadores de lista se combinan con operadores de campo para permitirte comprobar las condiciones en los datos incluidos en las listas.

Como en el ejemplo de "al menos uno", es posible que desees comprobar si un pedido contiene un producto específico (ubicado en order.lineItems) con una etiqueta específica (una lista en order.lineItems.product.tags). En ambos casos, el ejemplo usa el operador de lista al menos uno de.

Flow proporciona tres operadores para trabajar con listas: al menos uno de, ninguno de y todos los.

Al menos uno de

En la mayoría de las condiciones con listas se desea usar al menos uno de. Este operador devolverá true si alguno de los artículos de la lista coincide con la condición. Por ejemplo, si deseas comprobar si un pedido contiene un producto con una etiqueta específica, usarás al menos uno de. Cuando la lista está vacía o cuando no se cumple la condición, esta última devolverá false.

Ninguno de

En algunos casos, es posible que desees comprobar si una lista no contiene un artículo. La mejor manera de crear esta condición es cambiar el operador de lista a ninguno de. Este operador devolverá true si ninguno de los artículos de la lista coincide con la condición. Y algo importante es que si la lista está vacía, también devuelve true. Por ejemplo, si deseas comprobar si un producto no contiene la etiqueta presale, usarás None of product tags is equal to presale.

Todos los

En casos limitados, quizás desees comprobar si todos los artículos de una lista coinciden con una condición. Por ejemplo, es posible que desees comprobar si todos los artículos de un pedido tienen un proveedor de productos específico llamado Acme. Para esto, usarás All of order line items have a product.vendor equal to Acme.

Orden de condiciones

Puedes crear flujos de trabajo que tengan varias condiciones, cada una de las cuales puede dar lugar a diferentes acciones. El orden de las condiciones es importante. La verificación de las condiciones comienza al inicio del flujo de trabajo y avanza de forma automática a través de cada condición. La verificación se detiene cuando se cumple una condición.

Combinar varios criterios en una condición

Al crear una condición, puedes establecer varios criterios. Puedes elegir cómo deben combinarse estos criterios separados.

Si se cumplen todas las condiciones

Al seleccionar Si se cumplen todas las condiciones se genera una respuesta verdadera únicamente si cada uno de los criterios que estableciste es verdadero. Es como una instrucción AND en programación.

Por ejemplo, creas un flujo de trabajo para etiquetar clientes que se encuentran en Canadá y gastan más de $ 500 en un solo pedido.

Ejemplo de un flujo de trabajo que usa la condición

El flujo de trabajo etiqueta al cliente solo si se encuentra en Canadá y gasta más de 500$ en el pedido. Si cualquiera de estas condiciones es falsa, el cliente no se etiqueta.

Si se cumple alguna condición

Al seleccionar Si se cumple alguna condición se genera una respuesta verdadera si cualquiera de los criterios que estableces se cumple. Es como una instrucción OR en programación.

Por ejemplo, creas un flujo de trabajo para etiquetar pedidos que se consideran de riesgo alto o medio.

Ejemplo de un flujo de trabajo que usa la condición

El flujo de trabajo etiqueta el pedido si es de riesgo alto o medio. Siempre y cuando una de esas condiciones sea cierta, el pedido se etiqueta.

Combinar condiciones y acciones

Puedes combinar condiciones para hacer una sola condición extensa. Cuando se combinan las condiciones, se deben cumplir todas las condiciones para que toda la condición sea verdadera. Si no se cumple alguna condición, toda la condición se considera falsa. En el siguiente ejemplo, el cliente debe aceptar materiales publicitarios y el precio total del pedido debe alcanzar un determinado límite.

Ejemplo de un flujo de trabajo que verifica el monto total de gasto de un cliente y agrega etiquetas

De manera similar, puedes combinar acciones para que se puedan ejecutar varias de ellas. En este ejemplo, se usan varias condiciones para comprobar si un cliente es elegible para un programa de fidelización según el monto total que gastó en la tienda. En el ejemplo anterior, se comprueban las siguientes condiciones en el orden en el que se muestran:

  1. Si el precio total es superior a $1000 y el cliente acepta recibir publicidad, etiquétalo con la etiqueta de fidelización Gold.
  2. Si el precio total es inferior a $1000 pero superior a $500 y el cliente acepta recibir publicidad, etiquétalo con la etiqueta de fidelización Silver.
  3. Si el cliente gastó más de $200 y acepta recibir publicidad, etiquétalo con la etiqueta de fidelización Bronze.

Datos estáticos y dinámicos en condiciones

En general, el segundo valor de una condición es un valor estático introducido manualmente (como product.title == "your title"). Este valor sigue siendo el mismo cada vez que se ejecuta el flujo de trabajo.

También puedes usar valores dinámicos si el campo del segundo valor muestra un símbolo </>. Los valores dinámicos se toman a partir de los datos de tu tienda cada vez que se ejecuta el flujo de trabajo. Para usar un valor dinámico, haz clic en el símbolo </> y selecciona el valor que deseas comparar. Los valores dinámicos no están disponibles para todos los campos.

Por ejemplo, creas un flujo de trabajo que etiqueta un pedido si el país en la dirección de facturación del pedido coincide con el país en su dirección de envío.

Ejemplo de un flujo de trabajo que etiqueta un pedido con datos de RHS para verificar que el país de facturación y el país del envío de un cliente son iguales

En este ejemplo, tanto el primer como el segundo valor se toman a partir de los datos de tu tienda, en lugar de especificar manualmente una cadena estática para buscar el segundo valor. Si el país en la dirección de facturación que proporciona el cliente es el mismo que el país que el cliente proporcionó en la dirección de envío, la condición es verdadera y el pedido se etiqueta.

Es posible que, ocasionalmente, necesites usar datos dinámicos del tipo incorrecto. Por ejemplo, quizás debas comparar un número almacenado como una cadena con otro número. En este caso, puedes usar la opción Ejecutar código para convertir los datos al tipo correcto.

¿No encuentras las respuestas que estás buscando? Estamos aquí para ayudarte.