Lenguaje de segmentación
Pushwoosh ofrece un potente motor de segmentación para crear Segmentos granulares basados en los valores de las Etiquetas (Tags). El Lenguaje de Segmentación es una forma específica de escribir y combinar criterios de segmentación para describir un grupo particular de usuarios que coinciden con esos criterios y tratarlos como un único segmento de audiencia.
Este artículo describe los conceptos básicos y la sintaxis del Lenguaje de Segmentación y proporciona ejemplos completos de cómo construir criterios de segmentación para diversos casos.
Conceptos básicos
Anchor link toCada dispositivo en su base de usuarios tiene atributos específicos asociados a él a través de los valores de las Etiquetas (Tag values).
Por ejemplo, digamos que una usuaria llamada Jane vive en Tokio y su edad es 28 años. Esa usuaria tendrá las siguientes Etiquetas establecidas para su dispositivo:
- Nombre: Jane
- Ciudad: Tokio
- Edad: 28
Para dirigirse a Jane, necesitará describir un segmento de la siguiente manera:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
Esta combinación de condiciones es una expresión de filtro utilizada en el Lenguaje de Segmentación para describir grupos de usuarios, también conocidos como Segmentos de audiencia.
Expresiones de filtro
Anchor link toUna expresión de filtro es una cadena que contiene una condición o una combinación de condiciones que describen el segmento que necesita.
Condiciones
Anchor link toCada condición describe un segmento de dispositivos que coinciden con los criterios especificados en esa condición.
Por ejemplo, la siguiente condición crea un segmento de usuarios que viven en Tokio:
T("City", e, "Tokyo")
donde
- T es una Etiqueta (Tag) (tipo de condición);
- eq es un operador a aplicar;
- “Tokyo” es un valor de Etiqueta que los usuarios tienen asociado a sus dispositivos.
Tipos de condición
Anchor link toLos siguientes tipos de condición están disponibles para la segmentación:
- A (Application) – describe un segmento de dispositivos con una aplicación particular instalada. Alias: App, Application;
- T (Tag) – describe un segmento de dispositivos con los valores de Etiqueta especificados;
- AT (App-specific tag) – se aplica en combinación con los códigos de aplicación para etiquetas que son específicas de la aplicación. Alias: Tag;
- Event – describe un segmento de dispositivos que activaron un evento específico de Pushwoosh;
- Geo – describe un segmento de dispositivos dentro de un radio geográfico específico;
- BTTS – describe un segmento de dispositivos basado en su mejor momento para enviar;
- Updated – describe un segmento de dispositivos basado en su última marca de tiempo de actualización;
- Segment – hace referencia a otro filtro/segmento por su código;
- Static (o S) – hace referencia a un segmento estático predefinido;
Operaciones con condiciones
Anchor link toPara construir segmentos sofisticados, se pueden aplicar las siguientes operaciones a las condiciones dentro de la expresión de filtro:
Unión (+)
Anchor link toUne los segmentos, es decir, construye un nuevo segmento de usuarios que coinciden con al menos una de las condiciones especificadas.

Por ejemplo, para dirigirse a usuarios que viven en Tokio o en Osaka, necesitará describir el segmento con las siguientes condiciones:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
Intersección (*)
Anchor link toConstruye un segmento de usuarios que pertenecen a ambos segmentos descritos por las condiciones. Por lo tanto, solo se incluirán aquellos usuarios que cumplan con cada condición que especifique.

La siguiente expresión describe un segmento de usuarios que viven en Tokio y han especificado sus nombres:
T("City", eq, "Tokyo") * T("Name", any)
Diferencia (\)
Anchor link toConstruye un segmento de usuarios que pertenecen a uno de los segmentos descritos y no pertenecen a otro.

Los usuarios que viven en Tokio pero no le han dado sus nombres se describirán de la siguiente manera:
T("City", eq, "Tokyo") \ T("Name", any)
Paréntesis
Anchor link toDeterminan el orden de las operaciones a realizar con las condiciones en su expresión de filtro.
Por ejemplo, la siguiente expresión de filtro obtendrá primero un segmento de los suscriptores de 12345-67890 cuya edad es 18 y luego restará a todos los hombres de ese segmento:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
Operadores de condiciones de Etiqueta (Tag)
Anchor link toPara cada tipo de Etiqueta, se aplican sus propios operadores.
Operadores de Etiquetas de tipo Entero (Integer)
Anchor link to- eq - igual a un valor especificado
- noteq - no igual a un valor especificado
- lte - menor o igual que un valor especificado
- gte - mayor o igual que un valor especificado
- in - cualquiera de los valores especificados
- notin - no igual a ninguno de los valores especificados
- between - en un rango especificado
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de Etiquetas de tipo Cadena (String)
Anchor link to- eq - igual a un valor especificado
- noteq - no igual a un valor especificado
- startswith - comienza con un prefijo especificado
- endswith - termina con un sufijo especificado
- contains - contiene una subcadena especificada
- in - igual a cualquiera de los valores especificados
- notin - no igual a ninguno de los valores especificados
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de Etiquetas de tipo Lista (List)
Anchor link to- in - dispositivos con cualquiera de los valores de etiqueta especificados
- notin - ninguno de los valores de etiqueta especificados asociados con el dispositivo
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de Etiquetas de tipo Fecha (Date)
Anchor link to- eq - igual a la fecha especificada
- noteq - no igual a la fecha especificada
- lte - antes de o en la fecha especificada
- gte - después de o en la fecha especificada
- in - igual a cualquiera de las fechas especificadas
- notin - no igual a ninguna de las fechas especificadas
- between - en un rango especificado
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
- match - coincide con un mes del año y día del mes especificados.
- daysago eq - igual a un número especificado de días antes del día actual
- daysago noteq - no igual a un número especificado de días antes del día actual
- daysago lte - menor o igual que un número especificado de días antes del día actual
- daysago gte - mayor o igual que un número especificado de días antes del día actual
- daysago between - entre los números de días especificados
- minutesago lte - menor o igual que un número especificado de minutos antes del momento actual
- minutesago gte - mayor o igual que un número especificado de minutos antes del momento actual
Operadores de Etiquetas de tipo Booleano (Boolean)
Anchor link to- eq - igual a un valor especificado
- noteq - no igual a un valor especificado
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de Etiquetas de tipo Precio (Price)
Anchor link to- eq - igual a un valor especificado
- noteq - no igual a un valor especificado
- lte - menor o igual que un valor especificado
- gte - mayor o igual que un valor especificado
- in - igual a cualquiera de los valores especificados
- notin - no igual a ninguno de los valores especificados
- between - en un rango especificado
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de Etiquetas de tipo Versión (Version)
Anchor link to- eq - igual a un valor especificado
- noteq - no igual a un valor especificado
- lte - menor o igual que un valor especificado
- gte - mayor o igual que un valor especificado
- in - igual a cualquiera de los valores especificados
- notin - no igual a ninguno de los valores especificados
- between - en un rango especificado
- any - dispositivos con cualquier valor establecido para la etiqueta
- notset - dispositivos sin valor establecido para la etiqueta
Operadores de condiciones de Evento
Anchor link toConteo de eventos
Anchor link to- count gte - dispositivos que activaron el evento más de o exactamente n veces
- count lte - dispositivos que activaron el evento menos de o exactamente n veces
- count eq - dispositivos que activaron el evento exactamente n veces
- count noteq - dispositivos que activaron el evento cualquier número de veces pero no igual a n
Fecha del evento
Anchor link to- date gte - dispositivos que activaron el evento después de o exactamente en la fecha especificada
- date lte - dispositivos que activaron el evento antes de o exactamente en la fecha especificada
- date eq - dispositivos que activaron el evento exactamente en la fecha especificada
- date noteq - dispositivos que activaron el evento en cualquier momento pero no en la fecha especificada
- date in - dispositivos que activaron el evento en cualquiera de las fechas especificadas
- date notin - dispositivos que activaron el evento en cualquier momento pero no en ninguna de las fechas especificadas
- date between - dispositivos que activaron el evento dentro de un período especificado
- date daysago eq - la fecha de activación del evento es igual a un número especificado de días antes del día actual
- date daysago noteq - la fecha de activación del evento no es igual a un número especificado de días antes del día actual
- date daysago lte - la fecha de activación del evento es menor o igual a un número especificado de días antes del día actual
- date daysago gte - la fecha de activación del evento es mayor o igual a un número especificado de días antes del día actual
- date daysago between - la fecha de activación del evento está entre los números de días especificados
- date minutesago lte - la fecha de activación del evento es menor o igual a un número especificado de minutos antes del momento actual
- date minutesago gte - la fecha de activación del evento es mayor o igual a un número especificado de minutos antes del momento actual
Plataformas de eventos
Anchor link toFiltra eventos por la plataforma donde fueron activados.
- platforms - lista de plataformas (p. ej., [“ios”, “android”])
Atributos de eventos
Anchor link toLas condiciones de evento pueden filtrar en función de los valores de los atributos del evento. Los atributos admiten varios tipos de datos con sus operadores correspondientes.
Atributos de Evento de tipo Entero (Integer)
Anchor link to- attribute “name” eq - el atributo es igual a un valor especificado
- attribute “name” noteq - el atributo no es igual a un valor especificado
- attribute “name” gte - el atributo es mayor o igual que un valor especificado
- attribute “name” lte - el atributo es menor o igual que un valor especificado
- attribute “name” between - el atributo está en un rango especificado
- attribute “name” in - el atributo es igual a cualquiera de los valores especificados
- attribute “name” notin - el atributo no es igual a ninguno de los valores especificados
- attribute “name” any - cualquier valor establecido para el atributo
- attribute “name” notset - ningún valor establecido para el atributo
Atributos de Evento de tipo Cadena (String)
Anchor link to- attribute “name” eq - el atributo es igual a un valor especificado
- attribute “name” noteq - el atributo no es igual a un valor especificado
- attribute “name” startswith - el atributo comienza con un prefijo especificado
- attribute “name” endswith - el atributo termina con un sufijo especificado
- attribute “name” contains - el atributo contiene una subcadena especificada
- attribute “name” in - el atributo es igual a cualquiera de los valores especificados
- attribute “name” notin - el atributo no es igual a ninguno de los valores especificados
- attribute “name” any - cualquier valor establecido para el atributo
- attribute “name” notset - ningún valor establecido para el atributo
Atributos de Evento de tipo Booleano (Boolean)
Anchor link to- attribute “name” eq - el atributo es igual a verdadero o falso
- attribute “name” noteq - el atributo no es igual a verdadero o falso
Atributos de Evento de tipo Fecha (Date)
Anchor link to- attribute “name” eq - el atributo es igual a una fecha especificada
- attribute “name” noteq - el atributo no es igual a una fecha especificada
- attribute “name” gte - el atributo es posterior o en una fecha especificada
- attribute “name” lte - el atributo es anterior o en una fecha especificada
- attribute “name” between - el atributo está dentro de un rango de fechas especificado
- attribute “name” in - el atributo es igual a cualquiera de las fechas especificadas
- attribute “name” notin - el atributo no es igual a ninguna de las fechas especificadas
- attribute “name” daysago eq/noteq/gte/lte/between - atributo relativo a días atrás
- attribute “name” minutesago gte/lte - atributo relativo a minutos atrás
- attribute “name” any - cualquier valor establecido para el atributo
- attribute “name” notset - ningún valor establecido para el atributo
Atributos de Evento de tipo Precio (Price)
Anchor link to- attribute “name” eq - el atributo es igual a un valor de precio especificado
- attribute “name” noteq - el atributo no es igual a un valor de precio especificado
- attribute “name” gte - el atributo es mayor o igual que un precio especificado
- attribute “name” lte - el atributo es menor o igual que un precio especificado
- attribute “name” between - el atributo está en un rango de precios especificado
- attribute “name” in - el atributo es igual a cualquiera de los precios especificados
- attribute “name” notin - el atributo no es igual a ninguno de los precios especificados
- attribute “name” any - cualquier valor establecido para el atributo
- attribute “name” notset - ningún valor establecido para el atributo
Atributos de Evento de tipo Lista (List)
Anchor link to- attribute “name” in - el atributo contiene cualquiera de los valores especificados
- attribute “name” notin - el atributo no contiene ninguno de los valores especificados
- attribute “name” any - cualquier valor establecido para el atributo
- attribute “name” notset - ningún valor establecido para el atributo
Tipos de condición adicionales
Anchor link toCondición Geo
Anchor link toDiríjase a dispositivos basados en la ubicación geográfica dentro de un radio especificado.
Sintaxis: Geo("<código-de-app>", <latitud>, <longitud>, <rango-en-km>)
Condición BTTS
Anchor link toDiríjase a dispositivos por su mejor momento para enviar notificaciones (hora del día, 0-23).
Operadores:
- any - cualquier valor de mejor momento para enviar establecido
- eq - coincidencia exacta de hora
- noteq - no igual a la hora
- gte - hora mayor o igual que
- lte - hora menor o igual que
Condición Updated
Anchor link toFiltra dispositivos por su última marca de tiempo de actualización.
Operadores:
- gte - actualizado después de o en la fecha especificada
- lte - actualizado antes de o en la fecha especificada
- between - actualizado dentro de un rango de fechas
Condición Segment
Anchor link toHace referencia a otro filtro/segmento por su código.
Condición Static
Anchor link toHace referencia a un segmento estático predefinido. Puede usar Static o la abreviatura S.
Indicadores de presencia de dispositivos en la condición Application
Anchor link toLas condiciones de aplicación admiten indicadores adicionales para controlar el filtrado de dispositivos y tokens:
- with_tokens - dispositivos con tokens de notificación push
- without_tokens - dispositivos sin tokens de notificación push
- with_devices - usuarios con dispositivos registrados
- without_devices - usuarios/perfiles sin dispositivos registrados
Ejemplos de expresiones de filtro
Anchor link toEjemplos básicos
Anchor link to- Dispositivos iOS y Android con la aplicación instalada y con tokens de push:
A("11111-11111", ["ios","android"], [with_tokens])- Dispositivos iOS y Android con la aplicación instalada pero sin tokens de push:
A("11111-11111", ["ios","android"], [without_tokens])- Dispositivos iOS y Android con la aplicación instalada, ya sea que tengan tokens de push o no:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- Todos los suscriptores de la aplicación que han comprado algo en la aplicación:
AT("11111-11111", "In-App Purchase", gte, 1)Ejemplos avanzados
Anchor link to- Usuarios en Tokio que han abierto la aplicación en los últimos 7 días:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- Usuarios que realizaron una compra de más de $50 en los últimos 30 días:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- Usuarios cuyos nombres comienzan con “J” o terminan con “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")- Usuarios activos de iOS a menos de 100 km de Nueva York que no han comprado recientemente:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- Usuarios con el mejor momento para enviar entre las 9 AM y las 5 PM:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- Usuarios que activaron un evento específico en Android o iOS en la última hora:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- Dispositivos actualizados en los últimos 3 meses con la versión de la aplicación 4.2 o superior:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")