Коннектор Airtable

Подключите ваши базы Airtable к Brevo для синхронизации CRM, управления каталогом товаров и автоматизации маркетинга на основе структурированных данных через Tajo.

Обзор

СвойствоЗначение
ПлатформаAirtable
КатегорияCustom
Сложность настройкиЛёгкая
Официальная интеграцияНет
Синхронизируемые данныеЗаписи, таблицы, пользователи
Тип APIREST API
АутентификацияPersonal Access Token / OAuth 2.0
Базовый URLhttps://api.airtable.com/v0/

Возможности

  • Синхронизация таблиц в списки, синхронизируйте записи таблиц Airtable напрямую в списки контактов Brevo
  • Мост каталога товаров, используйте таблицы Airtable как каталоги товаров для email-рекомендаций
  • Синхронизация CRM, двусторонняя синхронизация между Airtable CRM и контактами Brevo
  • События отправки форм, пересылайте отправки форм Airtable как события Brevo
  • Фильтрация по view, синхронизируйте конкретные view Airtable в целевые списки Brevo
  • Автоматизация через вебхуки, запускайте кампании Brevo при изменении записей Airtable

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Аккаунт Airtable (Free или выше)
  2. Настроенный Personal Access Token или OAuth-приложение
  3. Доступ к базам и таблицам, которые вы хотите синхронизировать
  4. Аккаунт Brevo с доступом к API
  5. Аккаунт Tajo с активной подпиской

Аутентификация

Airtable поддерживает Personal Access Token и OAuth 2.0.

Вариант 1: Personal Access Token (рекомендуется)

  1. Перейдите на airtable.com/create/tokens
  2. Нажмите Create new token
  3. Назовите токен “Tajo Integration”
  4. Добавьте scope:
data.records:read
data.records:write
data.recordComments:read
schema.bases:read
webhook:manage
  1. Добавьте доступ к конкретным базам или ко всем базам
  2. Нажмите Create token

Вариант 2: OAuth 2.0

Для мультипользовательских интеграций используйте OAuth 2.0 flow:

  1. Зарегистрируйте вашу интеграцию на airtable.com/create/oauth
  2. Настройте redirect URI: https://app.tajo.io/callbacks/airtable
  3. Запросите те же scope, что и выше

Ограничение области токена

Personal Access Token можно ограничить конкретными базами. Для безопасности предоставляйте доступ только к тем базам, которые нужны интеграции, вместо выбора “All current and future bases”.

Подключение к Tajo

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

Конфигурация

Базовая настройка

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"

Сопоставление полей

Сопоставьте поля Airtable с атрибутами контакта Brevo:

field_mapping:
# Airtable field -> Brevo attribute
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

Синхронизация по view

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

Эндпоинты API

Tajo интегрируется со следующими эндпоинтами Airtable Web API:

ЭндпоинтМетодНазначение
/v0/{baseId}/{tableIdOrName}GETСписок записей в таблице
/v0/{baseId}/{tableIdOrName}POSTСоздать записи
/v0/{baseId}/{tableIdOrName}PATCHОбновить записи
/v0/{baseId}/{tableIdOrName}DELETEУдалить записи
/v0/{baseId}/{tableIdOrName}/{recordId}GETПолучить одну запись
/v0/meta/basesGETСписок доступных баз
/v0/meta/bases/{baseId}/tablesGETСписок таблиц в базе
/v0/{baseId}/{tableIdOrName}/listRecordCommentsGETСписок комментариев к записи
/v0/bases/{baseId}/webhooksPOSTСоздать вебхук
/v0/bases/{baseId}/webhooksGETСписок вебхуков

Примеры кода

Инициализация коннектора

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
});

Синхронизация таблицы в Brevo

// Sync an Airtable table to a Brevo list
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
// }

Обработка вебхуков

// Airtable webhooks notify of changes; fetch details with cursor
app.post('/webhooks/airtable', async (req, res) => {
const { base, webhook, timestamp } = req.body;
// Fetch changed records using webhook cursor
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');
});

Создание записи из Brevo

// Create an Airtable record when a Brevo contact converts
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]
}
});
}
});

Ограничения скорости

Airtable применяет ограничения по частоте запросов на базу:

Тип лимитаЗначение
Лимит запросов API5 запросов в секунду на базу
Записей на запросМаксимум 100 записей (list), максимум 10 записей (create/update)
Payloads вебхуков50 payload на вызов listWebhookPayloads
Размер запросаМаксимум ~2MB payload

Пакетные операции

Airtable позволяет создавать или обновлять до 10 записей за запрос. Tajo автоматически разбивает крупные операции на несколько запросов с соблюдением лимитов.

Устранение неполадок

Частые проблемы

ПроблемаПричинаРешение
401 UnauthorizedНедействительный или истёкший токенПерегенерируйте Personal Access Token
403 ForbiddenУ токена нет доступа к базеДобавьте базу в область токена
404 Not FoundНеверный ID базы или таблицыПроверьте ID базы и название таблицы
422 Invalid RequestНесоответствие типа поляПроверьте, что типы полей Airtable соответствуют вашим данным
Превышен лимит запросовБольше 5 запросов/сек на базуУменьшите частоту синхронизации или распределите синхронизацию баз по времени

Режим отладки

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

Проверка подключения

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

Лучшие практики

  1. Ограничивайте токены конкретными базами, не предоставляйте доступ ко всем базам без необходимости
  2. Используйте view для фильтрованной синхронизации, синхронизируйте конкретные view вместо полных таблиц, чтобы уменьшить объём данных
  3. Пакетируйте операции с записями, группируйте создания и обновления по 10 записей
  4. Обрабатывайте пагинацию, Airtable возвращает по 100 записей на страницу; итерируйте с offset
  5. Используйте вебхуки для реального времени, регистрируйте вебхуки вместо опроса для отслеживания изменений
  6. Точно сопоставляйте типы полей, соотносите типы полей Airtable (select, number, date) с типами атрибутов Brevo

Безопасность

  • Personal Access Token, ограничены конкретными базами и операциями
  • OAuth 2.0, безопасный flow авторизации с refresh-токенами
  • Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
  • Контроль доступа на уровне базы, токены ограничены отдельными базами
  • Зашифрованное хранилище, токены зашифрованы в покое в Tajo
  • HMAC-проверка вебхуков, проверка подлинности уведомлений вебхуков

Связанные ресурсы

Subscribe to updates

developer-docs

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

auto-detect
AI-ассистент

Привет! Спрашивайте меня о документации.