> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trophy.so/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/rGjOHIeZYrVU9hOo/assets/features/streaks/streak_config.png?fit=max&auto=format&n=rGjOHIeZYrVU9hOo&q=85&s=337a1e05f702ecf91bf69f9bf5e375c7" 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 perder períodos sin que se restablezcan a cero. Esto ayuda a mantener las rachas motivadoras incluso si los usuarios no mantienen un hábito de uso perfecto.

<Frame>
  <img height="200" width="100%" noZoom src="https://mintcdn.com/trophy/rGjOHIeZYrVU9hOo/assets/features/streaks/freezes_config.png?fit=max&auto=format&n=rGjOHIeZYrVU9hOo&q=85&s=01afad6182534bb803e5ff6c568f8437" data-path="assets/features/streaks/freezes_config.png" />
</Frame>

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

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

Puedes configurar cualquier número arbitrario de congelaciones para otorgar a nuevos usuarios cuando los identifiques por primera vez con Trophy.

<Tip>
  Otorgar demasiadas congelaciones a los usuarios puede disminuir su valor percibido, pero conceder muy pocas congelaciones podría resultar en un mayor número de rachas perdidas. Un buen punto de partida es una congelación por usuario, ¡pero el truco está en experimentar!
</Tip>

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

A medida que los usuarios agotan las congelaciones de rachas, necesitarán un suministro continuo de nuevas para seguir adelante. Para facilitar esto, 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.

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 hay nuevas congelaciones pendientes de otorgar a un usuario, se otorgarán hasta diez minutos después.

<h3 id="maximum-freeze-count">
  Cantidad Máxima de Congelaciones
</h3>

En Trophy también configuras el número máximo de congelaciones que cada usuario puede tener, hasta un límite de 100. La [acumulación de congelaciones](#freeze-accumulation) solo otorgará congelaciones hasta este límite.

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

Trophy calcula automáticamente las rachas para todos los usuarios en función de los [eventos de métrica](/es/features/events#tracking-metric-events) que reportes 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 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 límites 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.

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

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, a través de las preferencias de usuario.

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

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

Esta sección describe algunas de las operaciones que puedes realizar para administrar 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 usa la acción 'Restaurar Racha'. Restaurar la racha de un usuario la establece en la duración que tenía cuando la perdió por última vez.

<Tip>
  También puedes usar la [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/rGjOHIeZYrVU9hOo/assets/features/streaks/restoring_streaks.mp4?fit=max&auto=format&n=rGjOHIeZYrVU9hOo&q=85&s=b88d313f201522c37507a1c0778fb85d" data-path="assets/features/streaks/restoring_streaks.mp4" />
</Frame>

<h2 id="displaying-streaks">
  Mostrar Rachas
</h2>

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

<Tip>
  Consulta nuestra [guía completa](/es/guides/how-to-build-a-streaks-feature) sobre cómo agregar 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 de la [API de métricas](/es/api-reference/endpoints/metrics/send-a-metric-change-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 usarse para activar transaccionalmente elementos de UI/UX incluyendo:

* 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. 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,
  "streakHistory": [
    {
      "periodStart": "2025-03-02",
      "periodEnd": "2025-03-08",
      "length": 9
    },
    {
      "periodStart": "2025-03-09",
      "periodEnd": "2025-03-15",
      "length": 0
    },
    {
      "periodStart": "2025-03-16",
      "periodEnd": "2025-03-22",
      "length": 0
    },
    {
      "periodStart": "2025-03-23",
      "periodEnd": "2025-03-29",
      "length": 1
    },
    {
      "periodStart": "2025-03-30",
      "periodEnd": "2025-04-05",
      "length": 2
    },
    {
      "periodStart": "2025-04-06",
      "periodEnd": "2025-04-12",
      "length": 3
    },
    {
      "periodStart": "2025-04-13",
      "periodEnd": "2025-04-19",
      "length": 4
    }
  ]
}
```

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/rGjOHIeZYrVU9hOo/assets/features/streaks/displaying_streaks.png?fit=max&auto=format&n=rGjOHIeZYrVU9hOo&q=85&s=8ee229b58d2560e950aa968bbc3e7c41" 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!
