> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets

> Sincroniza eventos personalizados desde Google Sheets a OneSignal para activar Journeys automatizados y campañas de mensajería personalizadas basadas en el comportamiento del usuario.

export const PLATFORM_0 = "Google Sheets"

export const DATA_TYPE_0 = "columns"

export const COLUMN_HEADER_0 = "Sheets Column Examples"

export const PROPERTIES_DESCRIPTION_0 = "Multiple columns combined into JSON"

## Descripción general

La integración OneSignal + Google Sheets permite la sincronización automática de eventos personalizados desde tus Hojas de Google a OneSignal. Esto te permite activar Journeys automatizados y campañas de mensajería personalizadas basadas en datos de comportamiento del usuario almacenados en tus hojas de cálculo, perfecto para equipos que gestionan datos de eventos de forma colaborativa.

***

## Requisitos

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Google Sheets

* **Cuenta de Google** con acceso a la hoja que contiene los datos de eventos
* **Hoja de cálculo de eventos** con estructura de columnas adecuada para datos de eventos
* **Permisos de compartir hoja** para que OneSignal acceda a los datos
* **Formato de datos consistente** en tu hoja de seguimiento de eventos

***

## Configuración

<Steps>
  <Step title="Preparar tu hoja de datos de eventos">
    Estructura tu Hoja de Google con las columnas requeridas para datos de eventos:

    **Columnas requeridas:**

    * `event_name` o `event_type`: El nombre del evento (String)
    * `user_id` o `email`: Identificador de usuario (String)
    * `timestamp` o `created_at`: Marca de tiempo del evento (Date/DateTime)
    * `properties`: Propiedades del evento como JSON o columnas separadas (Opcional)

    **Ejemplo de estructura de hoja:**

    ```
    | event_name | user_id | timestamp           | product_id | amount |
    |------------|---------|---------------------|------------|--------|
    | purchase   | user123 | 2024-01-15 10:30:00 | prod_abc   | 29.99  |
    | signup     | user456 | 2024-01-15 11:45:00 |            |        |
    ```
  </Step>

  <Step title="Configurar permisos de hoja">
    Comparte tu Hoja de Google con la cuenta de servicio de OneSignal:

    1. Abre tu Hoja de Google
    2. Haz clic en el botón **Share** en la parte superior derecha
    3. Agrega el email de la cuenta de servicio de OneSignal (proporcionado durante la configuración)
    4. Establece los permisos en **Viewer** (acceso de solo lectura)
    5. Haz clic en **Send** para otorgar acceso

    <Info>
      OneSignal proporcionará el email específico de la cuenta de servicio durante el proceso de configuración de la integración.
    </Info>
  </Step>

  <Step title="Agregar integración en OneSignal">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Selecciona **Google Sheets** y proporciona:

    * **Sheet URL**: La URL completa de tu Hoja de Google
    * **Sheet Name**: El nombre específico de la pestaña/hoja que contiene los datos de eventos
    * **Header Row**: Número de fila que contiene los encabezados de columna (usualmente 1)
    * **Data Range**: Rango de celdas que contiene tus datos de eventos (ej., `A2:F1000`)
  </Step>

  <Step title="Configurar mapeo de columnas">
    Mapea tus columnas de Google Sheets a los campos de eventos de OneSignal:

    * **Event Name Column**: Selecciona la columna que contiene los nombres de eventos
    * **User ID Column**: Selecciona la columna con identificadores de usuario
    * **Timestamp Column**: Selecciona la columna con marcas de tiempo de eventos
    * **Properties Columns**: Selecciona columnas adicionales para incluir como propiedades de eventos

    <Info>
      Puedes mapear múltiples columnas como propiedades de eventos. OneSignal las combinará en un único payload de evento.
    </Info>
  </Step>

  <Step title="Establecer programación de sincronización">
    Configura con qué frecuencia OneSignal debe verificar nuevos datos de eventos:

    * **Sync Frequency**: Elige entre 15 minutos, cada hora o diario
    * **Incremental Sync**: Habilita para sincronizar solo nuevas filas desde la última actualización
    * **Timestamp Filter**: Sincroniza solo eventos dentro de un rango de tiempo específico

    <Warning>
      Google Sheets tiene límites de tasa de API. La sincronización más frecuente puede limitarse para hojas con grandes conjuntos de datos.
    </Warning>
  </Step>

  <Step title="Probar la conexión">
    Haz clic en **Test Connection** para verificar que OneSignal puede acceder a tu Hoja de Google y leer los datos de eventos correctamente.
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

***

## Configuración avanzada

### Configuración de sincronización incremental

Configura la sincronización incremental para procesar solo eventos nuevos:

1. **Timestamp Column**: Asegúrate de que tu hoja tenga una columna de marca de tiempo consistente
2. **Sort Order**: Mantén los eventos ordenados por marca de tiempo (más reciente último)
3. **Append-Only**: Agrega nuevos eventos al final de tu hoja
4. **Avoid Edits**: No modifiques filas de eventos históricos después de que se sincronicen

### Validación de datos

Implementa validación de datos en tu Hoja de Google:

```
Data > Data validation
- Event Name: List from range (tipos de eventos predefinidos)
- User ID: Custom formula to check format
- Timestamp: Date/Time format validation
- Amount: Number validation for numeric properties
```

### Flujos de trabajo colaborativos

Mejores prácticas para colaboración en equipo:

* **Named Ranges**: Usa rangos con nombre para secciones de datos de eventos
* **Protected Ranges**: Protege filas de encabezado de cambios accidentales
* **Comments**: Agrega comentarios para explicar definiciones de eventos
* **Version History**: Usa el historial de versiones de Google Sheets para rastrear cambios
* **Access Controls**: Limita el acceso de edición a miembros del equipo de entrada de datos

### Optimización de rendimiento

Optimiza para grandes conjuntos de datos:

* **Sheet Limits**: Mantén hojas individuales bajo 10,000 filas para mejor rendimiento
* **Multiple Sheets**: Usa hojas separadas para diferentes tipos de eventos
* **Data Archival**: Archiva datos antiguos en hojas separadas mensualmente
* **Formulas**: Minimiza fórmulas complejas en rangos de datos de eventos

<Warning>
  Google Sheets funciona mejor con menos de 50,000 celdas totales. Para seguimiento de eventos de alto volumen, considera usar una fuente de base de datos en su lugar.
</Warning>

***

## FAQ

### ¿Con qué frecuencia sincroniza OneSignal eventos desde Google Sheets?

OneSignal puede sincronizar tan frecuentemente como cada 15 minutos, pero recomendamos sincronización cada hora o diaria para la mayoría de casos de uso para respetar los límites de API de Google.

### ¿Pueden múltiples miembros del equipo agregar eventos a la misma hoja?

Sí, Google Sheets soporta colaboración en tiempo real. Sin embargo, asegúrate de que los miembros del equipo comprendan el formato de datos requerido y la estructura de columnas.

### ¿Qué sucede si alguien edita datos de eventos históricos?

OneSignal sincroniza basándose en marcas de tiempo y posiciones de fila. Editar datos históricos puede causar eventos duplicados o inconsistencias de datos. Recomendamos flujos de trabajo de solo agregar.
