> ## Documentation Index
> Fetch the complete documentation index at: https://trophy-streak-days-off.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Rachas

> Aprende a usar rachas en una experiencia de producto gamificada con Trophy.

<h2 id="what-are-streaks">
  ¿Qué son las Rachas?
</h2>

Una racha es un período de días, semanas o meses consecutivos en los que un usuario ha realizado una acción clave en tu plataforma. Se ha demostrado que las rachas aumentan significativamente la retención, especialmente cuando la acción del usuario que se rastrea se alinea con el valor central de tu producto.

<h2 id="streak-frequency">
  Frecuencia de Racha
</h2>

Las rachas en Trophy pueden ser **diarias, semanales o mensuales**. Esto significa que un usuario debe cumplir sus [condiciones de racha](#streak-conditions) al menos una vez cada día, semana o mes del calendario para mantener su racha.

Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy rastreará automáticamente la racha de cada usuario en su zona horaria local (incluyendo cuando los usuarios cambian de zona horaria) y mantendrá las rachas intactas.

<Note>
  Trophy calcula automáticamente los datos de racha para cada frecuencia de racha, lo que significa que puedes cambiar en cualquier momento.
</Note>

<h2 id="streak-conditions">
  Condiciones de Racha
</h2>

En Trophy puedes establecer los umbrales que un usuario debe cumplir para extender su racha basándote en tus [Métricas](/es/features/metrics) configuradas.

Puedes elegir qué métricas deben formar parte de tu racha, y para las que elijas, puedes establecer un umbral personalizado que los usuarios deben cumplir.

<Frame>
  <img height="200" width="100%" noZoom src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/streak_config.png?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=f6ddd7e97d7cfec890f1b41f79247561" data-path="assets/features/streaks/streak_config.png" />
</Frame>

Al combinar métricas de esta manera, puedes elegir entre dos modos de evaluación:

* `ALL` significa que un usuario debe cumplir todos los umbrales de métricas para extender su racha
* `OR` significa que un usuario solo tiene que cumplir uno de tus umbrales de métricas para extender su racha

De esta manera puedes diseñar tu lógica de rachas para que se ajuste al caso de uso de tu aplicación.

<h2 id="streak-freezes">
  Congelaciones de Rachas
</h2>

Las congelaciones de rachas ayudan a los usuarios a mantener sus rachas por más tiempo al permitirles omitir un número establecido de períodos sin que se reinicie a cero. Esto ayuda a mantener las rachas motivadoras incluso si los usuarios no mantienen un hábito de uso perfecto.

Las congelaciones de rachas son opcionales y se pueden configurar en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy.

Cuando está habilitado, tú decides cuántas congelaciones puede tener un usuario y cuántas se le otorgan con el tiempo. Cuando un usuario omite un período, se consume una congelación. Las congelaciones se consumen hasta que los usuarios no tengan congelaciones restantes, momento en el cual la racha del usuario se reinicia a cero.

<Note>
  Las congelaciones de rachas son diferentes de las [pausas de rachas](#streak-pauses) en que las congelaciones permiten a los usuarios omitir un número establecido de días (o períodos) sin romper su racha, independientemente del motivo, mientras que las pausas de rachas específicamente protegen una racha durante un rango de fechas conocido y predefinido, como unas vacaciones programadas o un descanso. Las congelaciones se consumen automáticamente cuando el usuario omite una actividad requerida, mientras que las pausas se crean manualmente con anticipación para cubrir ausencias planificadas.
</Note>

<h3 id="granting-freezes">
  Otorgar Congelaciones
</h3>

Puedes configurar cualquier número de congelaciones arbitrarias para otorgar a los nuevos usuarios cuando los identificas por primera vez con Trophy. Para configurar esto, habilita las concesiones de congelación y establece el conteo inicial de congelaciones en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy.

<Frame>
  <video autoPlay muted loop playsInline className="w-full aspect-15/4" src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/freeze_grants.mp4?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=9e5df7af55d0204240058f7f0796a483" data-path="assets/features/streaks/freeze_grants.mp4" />
</Frame>

<h3 id="freeze-accumulation">
  Acumulación de Congelaciones
</h3>

Trophy puede otorgar automáticamente congelaciones de rachas a los usuarios con el tiempo. Puedes elegir un número arbitrario de días durante los cuales otorgar un número arbitrario de congelaciones a cada usuario.

Para configurar esto, establece el número de días durante los cuales se otorgan congelaciones y el número de congelaciones a otorgar en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy. Aquí también puedes establecer el número máximo de congelaciones que cada usuario puede tener, hasta un límite de 100.

<Frame>
  <video autoPlay muted loop playsInline className="w-full aspect-15/4" src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/freeze_accumulation.mp4?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=80da74cb16d318188a88f83b5e379917" data-path="assets/features/streaks/freeze_accumulation.mp4" />
</Frame>

<Tip>
  Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy consumirá automáticamente las congelaciones a medianoche en la zona horaria del usuario cuando sea necesario para extender su racha, y si se deben otorgar nuevas congelaciones a un usuario, se otorgarán hasta diez minutos después.
</Tip>

<h2 id="streak-pauses">
  Pausas de Racha
</h2>

Las pausas de racha protegen la racha de un usuario durante un rango de fechas conocido, como vacaciones u otro descanso planificado. Mientras una pausa cubre un período, Trophy mantiene la duración de la racha del usuario en lugar de finalizar la racha si no cumplen sus [condiciones de racha](#streak-conditions).

<Note>
  Las pausas de racha son diferentes de las [congelaciones de racha](#streak-freezes) en que las pausas protegen específicamente la racha de un usuario durante un rango de fechas conocido y predefinido, como vacaciones programadas o un descanso, mientras que las congelaciones permiten a los usuarios perder un número determinado de días (o períodos) sin romper su racha, independientemente del motivo. Las pausas se crean manualmente con anticipación para cubrir ausencias planificadas, mientras que las congelaciones se consumen automáticamente cuando el usuario pierde una actividad requerida.
</Note>

<h3 id="creating-pauses">
  Crear Pausas
</h3>

Crea pausas con la [API de administración para crear pausas de racha](/es/admin-api/endpoints/streaks/create-pauses). Puedes crear pausas para hasta 100 usuarios en una sola solicitud.

Cada pausa requiere:

* `userId`: el usuario para el cual crear una pausa
* `start`: la primera fecha que cubre la pausa
* `end`: la última fecha que cubre la pausa

Las fechas de inicio en el pasado son rechazadas. Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy evalúa `start` contra la fecha de hoy en la zona horaria local de cada usuario.

<h3 id="deleting-pauses">
  Eliminar Pausas
</h3>

Para evitar que una pausa se aplique, elimínala con la [API de administración para eliminar pausas de rachas](/es/admin-api/endpoints/streaks/delete-pauses).

<h3 id="reading-pauses">
  Leer Pausas
</h3>

La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve las pausas próximas y actualmente activas en el campo `pauses`. Las pausas pasadas y eliminadas se omiten.

Cada período en `streakHistory` incluye `usedPause`, que es `true` cuando la racha del usuario estuvo pausada durante ese período.

<h2 id="tracking-streaks">
  Seguimiento de Rachas
</h2>

Trophy calcula automáticamente las rachas para todos los usuarios basándose en los [eventos de métrica](/es/features/events#tracking-metric-events) que reportas a Trophy.

No se requiere trabajo adicional para realizar el seguimiento de rachas, y puedes comenzar a usarlas de inmediato. Solo asegúrate de que las rachas estén habilitadas en el panel de Trophy.

<Tip>
  Para ver un recorrido completo sobre cómo configurar una función de rachas usando Trophy, consulta nuestra [guía oficial](/es/guides/how-to-build-a-streaks-feature).
</Tip>

<h2 id="streak-personalization">
  Personalización de Rachas
</h2>

Trophy puede permitir que los usuarios personalicen cómo funciona su racha dentro de los parámetros que establezcas para ellos. Para hacer esto, activa la personalización de rachas en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy.

Una vez habilitado, los usuarios podrán personalizar las [condiciones de racha](#streak-conditions) que deben cumplir para extender su racha, incluyendo el modo de evaluación de racha y el umbral para cada métrica, así como personalizar qué días de la semana su racha rastreará su actividad, a través de las preferencias de usuario.

<Tip>
  Para obtener más información sobre cómo configurar las preferencias de usuario para un usuario específico, lee la documentación dedicada sobre [preferencias de usuario](/es/features/users#streak-preferences).
</Tip>

<Frame>
  <video autoPlay muted loop playsInline className="w-full aspect-15/4" height="200" width="100%" noZoom src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/streak_personalization.mp4?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=ef044852d9679c852a415b9a99fb22a9" data-path="assets/features/streaks/streak_personalization.mp4" />
</Frame>

<h2 id="managing-streaks">
  Gestión de Rachas
</h2>

Esta sección describe algunas de las operaciones que puedes realizar para gestionar las rachas de los usuarios en tu aplicación.

<h3 id="restoring-a-users-streak">
  Restaurar la Racha de un Usuario
</h3>

Para restaurar la racha de un usuario, dirígete a la página de detalles del usuario y utiliza la acción 'Restaurar Racha'. Restaurar la racha de un usuario la establece en la longitud que tenía cuando la perdió por última vez.

<Tip>
  También puedes usar el [API de administración para restaurar rachas](/es/admin-api/endpoints/streaks/restore-streaks) para restaurar rachas de forma programática.
</Tip>

<Frame>
  <video autoPlay muted loop playsInline className="w-full aspect-15/4" src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/restoring_streaks.mp4?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=6a14cbe5c375f56078f57c1949a6a82f" data-path="assets/features/streaks/restoring_streaks.mp4" />
</Frame>

<h2 id="displaying-streaks">
  Visualización de Rachas
</h2>

Trophy expone los datos de rachas de dos formas, que pueden utilizarse para construir elementos de interfaz dentro de tus aplicaciones y mostrar las rachas a los usuarios.

<Tip>
  Consulta nuestra [guía completa](/es/guides/how-to-build-a-streaks-feature) sobre cómo añadir una funcionalidad de rachas a tu aplicación para más detalles.
</Tip>

<h3 id="metric-event-response">
  Respuesta de Evento de Métrica
</h3>

Cuando [incrementas una métrica](/es/features/events#tracking-metric-events) para un usuario, la respuesta del [API de métricas](/es/api-reference/endpoints/events/submit-a-metric-event) incluirá la racha actual del usuario.

```json Response [expandable] theme={null}
{
  "metricId": "d01dcbcb-d51e-4c12-b054-dc811dcdc623",
  "eventId": "0040fe51-6bce-4b44-b0ad-bddc4e123534",
  "total": 750,
  "achievements": [
    {
      "id": "5100fe51-6bce-6j44-b0hs-bddc4e123682",
      "trigger": "metric",
      "metricId": "5100fe51-6bce-6j44-b0hs-bddc4e123682",
      "metricName": "Flashcards Flipped",
      "metricValue": 500,
      "name": "500 Flashcards Flipped",
      "description": "Write 500 words in the app.",
      "achievedAt": "2020-01-01T00:00:00Z"
    }
  ],
  "currentStreak": {
    "length": 1,
    "frequency": "daily",
    "started": "2025-04-02",
    "periodStart": "2025-03-31",
    "periodEnd": "2025-04-05",
    "expires": "2025-04-12"
  },
  "points": {
    "xp": {
      "id": "0040fe51-6bce-4b44-b0ad-bddc4e123534",
      "key": "xp",
      "name": "XP",
      "description": null,
      "badgeUrl": null,
      "maxPoints": null,
      "total": 10,
      "level": {
        "id": "1140fe51-6bce-4b44-b0ad-bddc4e123534",
        "key": "bronze",
        "name": "Bronze",
        "description": "Starting level",
        "badgeUrl": null,
        "points": 0
      },
      "added": 10,
      "awards": [
        {
          "id": "0040fe51-6bce-4b44-b0ad-bddc4e123534",
          "awarded": 10,
          "date": "2021-01-01T00:00:00Z",
          "total": 10,
          "trigger": {
            "id": "0040fe51-6bce-4b44-b0ad-bddc4e123534",
            "type": "metric",
            "metricName": "Flashcards Flipped",
            "metricThreshold": 100,
            "points": 10
          }
        }
      ]
    }
  },
  "leaderboards": {
    "daily_champions": {
      "id": "0040fe51-6bce-4b44-b0ad-bddc4e123535",
      "key": "daily_champions",
      "name": "Daily Champions",
      "description": null,
      "rankBy": "metric",
      "runUnit": null,
      "runInterval": 0,
      "maxParticipants": 100,
      "metricName": "Flashcards Flipped",
      "metricKey": "flashcards-flipped",
      "threshold": 10,
      "start": "2025-01-01",
      "end": null,
      "previousRank": 50,
      "rank": 12
    }
  }
}
```

Esto puede utilizarse para activar de forma transaccional elementos de UI/UX que incluyen:

* Mostrar ventanas emergentes dentro de la aplicación
* Reproducir efectos de sonido

<h3 id="user-streaks-api">
  API de Rachas de Usuario
</h3>

La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve la racha actual de un usuario individual, junto con su historial reciente de rachas y cualquier [pausa de racha](#streak-pauses) próxima o activa. Usa el parámetro de consulta `historyPeriods` para controlar cuántos períodos devolver.

```json Response [expandable] theme={null}
{
  "length": 1,
  "frequency": "weekly",
  "started": "2025-04-02",
  "periodStart": "2025-03-31",
  "periodEnd": "2025-04-05",
  "expires": "2025-04-12",
  "rank": 5,
  "pauses": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "start": "2026-08-20",
      "end": "2026-08-27"
    }
  ],
  "streakHistory": [
    {
      "periodStart": "2025-03-02",
      "periodEnd": "2025-03-08",
      "length": 9,
      "usedPause": false
    },
    {
      "periodStart": "2025-03-09",
      "periodEnd": "2025-03-15",
      "length": 0,
      "usedPause": false
    },
    {
      "periodStart": "2025-03-16",
      "periodEnd": "2025-03-22",
      "length": 0,
      "usedPause": false
    },
    {
      "periodStart": "2025-03-23",
      "periodEnd": "2025-03-29",
      "length": 1,
      "usedPause": false
    },
    {
      "periodStart": "2025-03-30",
      "periodEnd": "2025-04-05",
      "length": 2,
      "usedPause": false
    },
    {
      "periodStart": "2025-04-06",
      "periodEnd": "2025-04-12",
      "length": 3,
      "usedPause": false
    },
    {
      "periodStart": "2025-04-13",
      "periodEnd": "2025-04-19",
      "length": 4,
      "usedPause": false
    }
  ]
}
```

Usa estos datos para mostrar el historial de rachas de un usuario dentro de tu aplicación.

<Frame>
  <img height="200" noZoom src="https://mintcdn.com/trophy-streak-days-off/Xn8i083N8w_EbMfg/assets/features/streaks/displaying_streaks.png?fit=max&auto=format&n=Xn8i083N8w_EbMfg&q=85&s=1484313a65826ed595af9d5e86dcbe8f" data-path="assets/features/streaks/displaying_streaks.png" />
</Frame>

<h3 id="list-multiple-users-streaks">
  Listar Rachas de Múltiples Usuarios
</h3>

Si deseas mostrar rachas para múltiples usuarios a la vez, por ejemplo para soportar una funcionalidad de rachas de amigos o grupos de usuarios, entonces usa la [API de listado de rachas de usuario](/es/api-reference/endpoints/streaks/get-streaks).

```json [expandable] theme={null}
[
  {
    "userId": "user-123",
    "streakLength": 15,
    "extended": "2025-01-01T05:03:00Z"
  },
  {
    "userId": "user-456",
    "streakLength": 12,
    "extended": "2025-01-01T08:43:00Z"
  },
  {
    "userId": "user-789",
    "streakLength": 0,
    "extended": null
  }
]
```

<h2 id="get-support">
  Obtener Soporte
</h2>

¿Quieres ponerte en contacto con el equipo de Trophy? Contáctanos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte!
