Connecteur Airtable
Statut du connecteur: Prévu Pas encore construit. Tajo n'exécute pas ce connecteur aujourd'hui.
Illustration · données d’exemple
Exemple de synchronisation
Source
Airtable
Statut du connecteur: Prévu
Destination
Votre autre outil
Statut du connecteur: Outil personnalisé
Correspondance des champs
| Champ source | Champ de destination | Valeur d’exemple |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Préparer
- Vérifier un enregistrement
- Approuver cette version
Les statuts concernent chaque connecteur et ne garantissent pas que cette synchronisation soit prête. Champs illustratifs. Vérifiez le schéma réel et les autorisations avant toute synchronisation.
Connectez vos bases Airtable à Brevo pour la synchronisation CRM, la gestion de catalogue produits et des workflows marketing automatisés pilotés par des données structurées via Tajo.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Airtable |
| Catégorie | Custom |
| Complexité d’installation | Facile |
| Intégration officielle | Non |
| Données synchronisées | Enregistrements, tables, utilisateurs |
| Type d’API | API REST |
| Authentification | Personal Access Token / OAuth 2.0 |
| URL de base | https://api.airtable.com/v0/ |
Fonctionnalités
- Synchronisation table-vers-liste, Synchronisez les enregistrements de tables Airtable directement vers des listes de contacts Brevo
- Pont catalogue produits, Utilisez les tables Airtable comme catalogues produits pour les recommandations par e-mail
- Synchronisation CRM, Synchronisation bidirectionnelle entre le CRM Airtable et les contacts Brevo
- Événements de soumission de formulaire, Transférez les soumissions de formulaires Airtable sous forme d’événements Brevo
- Filtrage par vue, Synchronisez des vues Airtable spécifiques vers des listes Brevo ciblées
- Automatisation par webhook, Déclenchez des campagnes Brevo lorsque les enregistrements Airtable changent
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Airtable (plan Free ou supérieur)
- Un Personal Access Token ou une application OAuth configurée
- L’accès aux bases et tables que vous souhaitez synchroniser
- Un compte Brevo avec accès API
- Un compte Tajo avec un abonnement actif
Authentification
Airtable prend en charge les Personal Access Tokens et OAuth 2.0.
Option 1 : Personal Access Token (recommandé)
- Rendez-vous sur airtable.com/create/tokens
- Cliquez sur Create new token
- Nommez-le « Tajo Integration »
- Ajoutez les scopes :
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Accordez l’accès à des bases spécifiques ou à toutes les bases
- Cliquez sur Create token
Option 2 : OAuth 2.0
Pour les intégrations multi-utilisateurs, utilisez le flux OAuth 2.0 :
- Enregistrez votre intégration sur airtable.com/create/oauth
- Configurez l’URI de redirection :
https://app.tajo.io/callbacks/airtable - Demandez les mêmes scopes que ci-dessus
Portée des tokens
Les Personal Access Tokens peuvent être limités à des bases spécifiques. Pour des raisons de sécurité, n’accordez l’accès qu’aux bases dont votre intégration a besoin plutôt que de sélectionner « All current and future bases ».
Connexion à Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENConfiguration
Configuration de base
connectors: airtable: enabled: true
sync: records: true comments: false
tables: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Active Customers" sync_to_list: 28 - base_id: "appXXXXXXXXXXXXXX" table_name: "Products" sync_as: "catalog"Mappage des champs
Mappez les champs Airtable vers les attributs de contact Brevo :
field_mapping: # Champ Airtable -> Attribut Brevo Name: FIRSTNAME Email: email Phone: SMS Company: COMPANY Status: LEAD_STATUS Revenue: TOTAL_REVENUE "Last Contact": LAST_CONTACT_DATE Tags: TAGS Notes: NOTES "Created Time": SIGNUP_DATESynchronisation par vue
views: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "High Value" sync_to_list: 29 filter_by_view: true
- base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Churned" sync_to_list: 30 filter_by_view: trueEndpoints API
Tajo s’intègre avec les endpoints suivants de l’API Web Airtable :
| Endpoint | Méthode | Objet |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Lister les enregistrements d’une table |
/v0/{baseId}/{tableIdOrName} | POST | Créer des enregistrements |
/v0/{baseId}/{tableIdOrName} | PATCH | Mettre à jour des enregistrements |
/v0/{baseId}/{tableIdOrName} | DELETE | Supprimer des enregistrements |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Récupérer un enregistrement unique |
/v0/meta/bases | GET | Lister les bases accessibles |
/v0/meta/bases/{baseId}/tables | GET | Lister les tables d’une base |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Lister les commentaires d’un enregistrement |
/v0/bases/{baseId}/webhooks | POST | Créer un webhook |
/v0/bases/{baseId}/webhooks | GET | Lister les webhooks |
Exemples de code
Initialiser le connecteur
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('airtable', { token: process.env.AIRTABLE_TOKEN});Synchroniser une table vers Brevo
// Synchroniser une table Airtable vers une liste Brevoawait tajo.connectors.sync('airtable', { type: 'full', resources: ['records'], baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', view: 'Active Customers', targetList: 28});
const status = await tajo.connectors.status('airtable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T15:00:00Z',// recordsSynced: 2340,// tablesMonitored: 2,// basesConnected: 1// }Gérer les webhooks
// Les webhooks Airtable notifient les changements ; récupérez les détails avec un curseurapp.post('/webhooks/airtable', async (req, res) => { const { base, webhook, timestamp } = req.body;
// Récupérer les enregistrements modifiés via le curseur du webhook const changes = await tajo.connectors.getWebhookPayloads('airtable', { baseId: base.id, webhookId: webhook.id, cursor: timestamp });
for (const change of changes) { await tajo.connectors.handleEvent('airtable', { type: change.actionType, payload: change }); }
res.status(200).send('OK');});Créer un enregistrement depuis Brevo
// Créer un enregistrement Airtable lorsqu'un contact Brevo se convertittajo.events.on('contact.attribute_updated', async (event) => { if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') { await tajo.connectors.create('airtable', { baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', fields: { Name: event.contact.name, Email: event.contact.email, Status: 'Customer', 'Converted Date': new Date().toISOString().split('T')[0] } }); }});Limites de débit
Airtable impose des limites de débit par base :
| Type de limite | Valeur |
|---|---|
| Limite de débit API | 5 requêtes par seconde par base |
| Enregistrements par requête | 100 enregistrements max (liste), 10 enregistrements max (création/mise à jour) |
| Charges utiles webhook | 50 charges utiles par appel listWebhookPayloads |
| Taille de requête | Charge utile max ~2 Mo |
Opérations par lots
Airtable autorise la création ou la mise à jour de jusqu’à 10 enregistrements par requête. Tajo regroupe automatiquement les opérations plus volumineuses en plusieurs requêtes tout en respectant les limites de débit.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Token invalide ou expiré | Régénérez le Personal Access Token |
| 403 Forbidden | Le token n’a pas accès à la base | Ajoutez la base au scope de votre token |
| 404 Not Found | ID de base ou de table invalide | Vérifiez l’ID de la base et le nom de la table |
| 422 Invalid Request | Incompatibilité de type de champ | Vérifiez que les types de champs Airtable correspondent à vos données |
| Limite de débit dépassée | Plus de 5 req/s par base | Réduisez la fréquence de synchronisation ou espacez les synchronisations |
Mode debug
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTester la connexion
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableBonnes pratiques
- Limitez les tokens à des bases spécifiques, N’accordez pas l’accès à toutes les bases sauf si nécessaire
- Utilisez les vues pour un filtrage ciblé, Synchronisez des vues spécifiques plutôt que des tables complètes pour réduire le volume de données
- Regroupez les opérations sur les enregistrements, Regroupez les créations et mises à jour par lots de 10
- Gérez la pagination, Airtable renvoie 100 enregistrements par page ; itérez avec
offset - Utilisez les webhooks pour le temps réel, Enregistrez des webhooks plutôt que d’interroger les changements
- Mappez les types de champs précisément, Faites correspondre les types de champs Airtable (sélection, nombre, date) aux types d’attributs Brevo
Sécurité
- Personal Access Tokens, Limités à des bases et opérations spécifiques
- OAuth 2.0, Flux d’autorisation sécurisé avec tokens de rafraîchissement
- HTTPS uniquement, Toutes les communications API chiffrées via TLS 1.2+
- Contrôle d’accès au niveau de la base, Tokens limités à des bases individuelles
- Stockage chiffré, Tokens chiffrés au repos dans Tajo
- Vérification HMAC des webhooks, Vérifie l’authenticité des notifications webhook