> ## 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.

# PostgreSQL

> Synchronisez les événements personnalisés de PostgreSQL vers OneSignal pour déclencher des parcours automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs.

export const DATA_TYPE_0 = "columns"

export const PLATFORM_0 = "PostgreSQL"

export const COLUMN_HEADER_0 = "PostgreSQL Column"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event details"

## Vue d'ensemble

L'intégration OneSignal + PostgreSQL permet la synchronisation des événements personnalisés de votre base de données PostgreSQL vers OneSignal pour déclencher des campagnes de messagerie automatisées et des parcours basés sur le comportement des utilisateurs.

***

## Exigences

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### PostgreSQL

* **PostgreSQL 9.6+** ou base de données compatible
* **Utilisateur de base de données** avec les permissions appropriées
* **Accès réseau** de OneSignal à votre instance PostgreSQL
* **Tables d'événements** contenant des données comportementales structurées

<Warning>
  Nous **recommandons fortement de ne pas** connecter OneSignal à une base de données PostgreSQL de production. Les requêtes de synchronisation d'événements sont de nature analytique et peuvent impacter les performances de production. Utilisez uniquement avec des bases de données configurées pour les charges de travail analytiques.
</Warning>

***

## Configuration

<Steps>
  <Step title="Créer un utilisateur dédié pour OneSignal">
    Créez un compte utilisateur dédié avec les permissions appropriées :

    ```sql theme={null}
    -- Create OneSignal user with strong password
    CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

    -- Create private bookkeeping schema for sync state (skip if read-only mode)
    CREATE SCHEMA CENSUS;

    -- Grant full access to bookkeeping schema (skip if read-only mode)
    GRANT ALL ON SCHEMA CENSUS TO CENSUS;

    -- Ensure access to existing objects in bookkeeping schema (skip if read-only mode)
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
    ```
  </Step>

  <Step title="Accorder des permissions aux données d'événements">
    Fournissez un accès en lecture aux schémas contenant vos données d'événements :

    ```sql theme={null}
    -- Grant schema access (repeat for each schema with event data)
    GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

    -- Grant read access to existing tables
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

    -- Grant read access to future tables
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

    -- Grant execute permissions on functions
    GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
    ```
  </Step>

  <Step title="Se connecter à OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    1. Sélectionnez **PostgreSQL** dans la liste
    2. Entrez vos détails de connexion :
       * **Hôte :** Le nom d'hôte de votre serveur PostgreSQL
       * **Port :** Généralement 5432
       * **Base de données :** Le nom de votre base de données
       * **Nom d'utilisateur :** `CENSUS`
       * **Mot de passe :** Le mot de passe que vous avez créé
    3. Testez la connexion
    4. Configurez quelles tables contiennent vos données d'événements
  </Step>
</Steps>

***

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

### Exemple de schéma de table d'événements

```sql theme={null}
-- Example PostgreSQL event table
CREATE TABLE analytics.user_events (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    event_data JSONB,
    session_id VARCHAR(255),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
```

### Mode requête SQL

Écrivez des requêtes SQL personnalisées pour transformer vos données d'événements :

```sql theme={null}
-- Example: Recent purchase events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= NOW() - INTERVAL '7 days'
    AND event_name = 'purchase'
ORDER BY event_timestamp DESC;
```

***

## Configuration réseau avancée

OneSignal peut se connecter aux instances PostgreSQL en utilisant des contrôles réseau avancés :

* **Listes blanches d'IP** : Ajoutez les adresses IP de OneSignal à votre pare-feu et `pg_hba.conf`
* **Tunneling SSH** : Connectez-vous via un hôte bastion pour les réseaux privés
* **Configuration VPC** : Connexion directe dans les environnements cloud
* **Chiffrement TLS** : Connexions sécurisées utilisant SSL/TLS

### Configuration du tunnel SSH

Pour les instances PostgreSQL sur des réseaux privés :

1. **Créer un utilisateur SSH** : Configurez un utilisateur dédié sur votre hôte SSH
2. **Configurer le tunnel** : Activez "Utiliser le tunnel SSH" dans les paramètres d'intégration OneSignal
3. **Installer la paire de clés** : Ajoutez la clé publique de OneSignal à `~/.ssh/authorized_keys`
4. **Tester la connexion** : Vérifiez la connectivité du tunnel

***

## Notes

* **Plusieurs schémas** : Répétez les octrois de permissions pour chaque schéma contenant des données d'événements
* **Vues avec références inter-schémas** : Peuvent nécessiter des permissions de lecture supplémentaires dans les anciennes versions de PostgreSQL
* **Azure PostgreSQL** : Utilisez le format `username@hostname` pour les instances Azure
* **AWS RDS** : Utilisez le format standard `username`
* **Performance** : Envisagez d'utiliser des réplicas en lecture pour le traitement d'événements à grande échelle

***

## Limitations

* Évitez de vous connecter aux bases de données de production en raison de la surcharge des requêtes analytiques
* Les requêtes complexes inter-schémas peuvent nécessiter des permissions supplémentaires
* Le pooling de connexions est recommandé pour le traitement d'événements à haute fréquence

***

## FAQ

### Dois-je utiliser le mode lecture seule ?

Utilisez le **mode lecture seule** si vous préférez une configuration plus simple et ne pouvez pas autoriser OneSignal à créer des tables. Utilisez le **mode complet** pour de meilleures performances avec de grands ensembles de données d'événements.

### Comment gérer plusieurs schémas d'événements ?

Répétez les commandes d'octroi de permissions pour chaque schéma contenant des données d'événements. OneSignal peut lire à partir de plusieurs schémas au sein d'une seule connexion.
