Connecteur Airtable

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
PlateformeAirtable
CatégorieCustom
Complexité d’installationFacile
Intégration officielleNon
Données synchroniséesEnregistrements, tables, utilisateurs
Type d’APIAPI REST
AuthentificationPersonal Access Token / OAuth 2.0
URL de basehttps://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 :

  1. Un compte Airtable (plan Free ou supérieur)
  2. Un Personal Access Token ou une application OAuth configurée
  3. L’accès aux bases et tables que vous souhaitez synchroniser
  4. Un compte Brevo avec accès API
  5. 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é)

  1. Rendez-vous sur airtable.com/create/tokens
  2. Cliquez sur Create new token
  3. Nommez-le « Tajo Integration »
  4. Ajoutez les scopes :
data.records:read
data.records:write
data.recordComments:read
schema.bases:read
webhook:manage
  1. Accordez l’accès à des bases spécifiques ou à toutes les bases
  2. Cliquez sur Create token

Option 2 : OAuth 2.0

Pour les intégrations multi-utilisateurs, utilisez le flux OAuth 2.0 :

  1. Enregistrez votre intégration sur airtable.com/create/oauth
  2. Configurez l’URI de redirection : https://app.tajo.io/callbacks/airtable
  3. 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

Terminal window
tajo connectors install airtable \
--token $AIRTABLE_TOKEN

Configuration

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_DATE

Synchronisation 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: true

Endpoints API

Tajo s’intègre avec les endpoints suivants de l’API Web Airtable :

EndpointMéthodeObjet
/v0/{baseId}/{tableIdOrName}GETLister les enregistrements d’une table
/v0/{baseId}/{tableIdOrName}POSTCréer des enregistrements
/v0/{baseId}/{tableIdOrName}PATCHMettre à jour des enregistrements
/v0/{baseId}/{tableIdOrName}DELETESupprimer des enregistrements
/v0/{baseId}/{tableIdOrName}/{recordId}GETRécupérer un enregistrement unique
/v0/meta/basesGETLister les bases accessibles
/v0/meta/bases/{baseId}/tablesGETLister les tables d’une base
/v0/{baseId}/{tableIdOrName}/listRecordCommentsGETLister les commentaires d’un enregistrement
/v0/bases/{baseId}/webhooksPOSTCréer un webhook
/v0/bases/{baseId}/webhooksGETLister 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 Brevo
await 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 curseur
app.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 convertit
tajo.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 limiteValeur
Limite de débit API5 requêtes par seconde par base
Enregistrements par requête100 enregistrements max (liste), 10 enregistrements max (création/mise à jour)
Charges utiles webhook50 charges utiles par appel listWebhookPayloads
Taille de requêteCharge 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èmeCauseSolution
401 UnauthorizedToken invalide ou expiréRégénérez le Personal Access Token
403 ForbiddenLe token n’a pas accès à la baseAjoutez la base au scope de votre token
404 Not FoundID de base ou de table invalideVérifiez l’ID de la base et le nom de la table
422 Invalid RequestIncompatibilité de type de champVérifiez que les types de champs Airtable correspondent à vos données
Limite de débit dépasséePlus de 5 req/s par baseRéduisez la fréquence de synchronisation ou espacez les synchronisations

Mode debug

connectors:
airtable:
debug: true
log_level: verbose
log_api_calls: true

Tester la connexion

Terminal window
tajo connectors test airtable
# ✓ API authentication successful
# ✓ Base access verified
# ✓ Table schema readable
# ✓ Record listing operational
# ✓ Webhook registration available

Bonnes pratiques

  1. Limitez les tokens à des bases spécifiques, N’accordez pas l’accès à toutes les bases sauf si nécessaire
  2. 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
  3. Regroupez les opérations sur les enregistrements, Regroupez les créations et mises à jour par lots de 10
  4. Gérez la pagination, Airtable renvoie 100 enregistrements par page ; itérez avec offset
  5. Utilisez les webhooks pour le temps réel, Enregistrez des webhooks plutôt que d’interroger les changements
  6. 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

Ressources associées

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Assistant AI

Bonjour ! Posez-moi vos questions sur la documentation.