---
title: "موصل Airtable"
description: "دليل التكامل الكامل لـ Airtable لمزامنة القواعد والجداول والسجلات مع جهات اتصال Brevo والقوائم عبر Tajo."
url: https://tajo.io/ar/docs/connectors/custom/airtable/
markdown: https://tajo.io/ar/docs/connectors/custom/airtable.md
lang: ar-SA
robots: noindex
---

اطلب الوصول المبكر

أدخل اسمك الأول وعنوان بريدك الإلكتروني للعمل. سنرسل إليك رابطًا لتأكيد طلب الوصول إلى Tajo.

# موصل Airtable

حالة الموصل: مخطط له لم يُبنَ بعد. لا يشغّل Tajo هذا الموصل اليوم.

| حقل المصدر | حقل الوجهة | قيمة نموذجية |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

اربط قواعد Airtable الخاصة بك بـ Brevo لمزامنة CRM، وإدارة كتالوج المنتجات، وسير العمل التسويقي الآلي المدعوم بالبيانات المهيكلة عبر Tajo.

## نظرة عامة

| الخاصية | القيمة |
| --- | --- |
| **المنصة** | Airtable |
| **الفئة** | مخصص |
| **تعقيد الإعداد** | سهل |
| **تكامل رسمي** | لا |
| **البيانات المتزامنة** | السجلات، الجداول، المستخدمون |
| **نوع API** | REST API |
| **المصادقة** | Personal Access Token / OAuth 2.0 |
| **عنوان URL الأساسي** | `https://api.airtable.com/v0/` |

## الميزات

- **مزامنة جدول إلى قائمة** - زامن سجلات جداول Airtable مباشرة إلى قوائم جهات اتصال Brevo
- **جسر كتالوج المنتجات** - استخدم جداول Airtable ككتالوجات منتجات لتوصيات البريد الإلكتروني
- **مزامنة CRM** - مزامنة ثنائية الاتجاه بين Airtable CRM وجهات اتصال Brevo
- **أحداث إرسال النماذج** - أعد توجيه إرسالات نماذج Airtable كأحداث Brevo
- **تصفية قائمة على العرض** - زامن عروض Airtable محددة إلى قوائم Brevo مستهدفة
- **أتمتة Webhook** - شغّل حملات Brevo عند تغير سجلات Airtable

## المتطلبات المسبقة

قبل أن تبدأ، تأكد من توفر ما يلي:

1. حساب Airtable (خطة مجانية أو أعلى)
2. Personal Access Token أو تطبيق OAuth مُعدّ
3. الوصول إلى القواعد والجداول التي ترغب بمزامنتها
4. حساب Brevo مع وصول API
5. حساب Tajo مع اشتراك نشط

## المصادقة

يدعم Airtable رموز الوصول الشخصية و OAuth 2.0.

### الخيار 1: Personal Access Token (موصى به)

1. اذهب إلى [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. انقر على **Create new token**
3. سمّه “Tajo Integration”
4. أضف النطاقات:

```
data.records:read
data.records:write
data.recordComments:read
schema.bases:read
webhook:manage
```

5. أضف الوصول إلى قواعد محددة أو جميع القواعد
6. انقر على **Create token**

### الخيار 2: OAuth 2.0

لعمليات التكامل متعددة المستخدمين، استخدم تدفق OAuth 2.0:

1. سجّل تكاملك في [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. اضبط redirect URI: `https://app.tajo.io/callbacks/airtable`
3. اطلب نفس النطاقات المذكورة أعلاه

تحديد نطاق الرمز

يمكن تحديد نطاق Personal Access Tokens لقواعد محددة. للأمان، امنح الوصول فقط للقواعد التي يحتاجها تكاملك بدلاً من اختيار “All current and future bases.”

### الاتصال بـ Tajo

```bash
tajo connectors install airtable \
  --token $AIRTABLE_TOKEN
```

## الإعداد

### الإعداد الأساسي

```yaml
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:

```yaml
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
```

### مزامنة قائمة على العرض

```yaml
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/bases` | GET | عرض القواعد المتاحة |
| `/v0/meta/bases/{baseId}/tables` | GET | عرض الجداول في قاعدة |
| `/v0/{baseId}/{tableIdOrName}/listRecordComments` | GET | عرض تعليقات السجل |
| `/v0/bases/{baseId}/webhooks` | POST | إنشاء webhook |
| `/v0/bases/{baseId}/webhooks` | GET | عرض webhooks |

## أمثلة البرمجة

### تهيئة الموصل

```javascript
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

```javascript
// 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
// }
```

### معالجة Webhooks

```javascript
// 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

```javascript
// 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 حدود معدل لكل قاعدة:

| نوع الحد | القيمة |
| --- | --- |
| **حد معدل API** | 5 طلبات في الثانية لكل قاعدة |
| **سجلات لكل طلب** | 100 سجل كحد أقصى (قائمة)، 10 سجلات كحد أقصى (إنشاء/تحديث) |
| **حمولات Webhook** | 50 حمولة لكل استدعاء `listWebhookPayloads` |
| **حجم الطلب** | الحد الأقصى للحمولة ~2MB |

عمليات الدُفعات

يسمح Airtable بإنشاء أو تحديث ما يصل إلى 10 سجلات لكل طلب. يجمّع Tajo تلقائيًا العمليات الأكبر في طلبات متعددة مع احترام حدود المعدل.

## استكشاف الأخطاء

### المشكلات الشائعة

| المشكلة | السبب | الحل |
| --- | --- | --- |
| 401 Unauthorized | رمز غير صالح أو منتهي الصلاحية | أعد توليد Personal Access Token |
| 403 Forbidden | الرمز يفتقر إلى وصول القاعدة | أضف القاعدة إلى نطاق رمزك |
| 404 Not Found | معرف قاعدة أو جدول غير صالح | تحقق من معرف القاعدة واسم الجدول |
| 422 Invalid Request | عدم تطابق نوع الحقل | تحقق من أن أنواع حقول Airtable تتطابق مع بياناتك |
| تجاوز حد المعدل | أكثر من 5 طلب/ثانية لكل قاعدة | قلل تكرار المزامنة أو وزع مزامنات القواعد |

### وضع التصحيح

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

### اختبار الاتصال

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

## أفضل الممارسات

1. **حدّد نطاق الرموز لقواعد محددة** - لا تمنح الوصول إلى جميع القواعد ما لم يكن ذلك ضروريًا
2. **استخدم العروض للمزامنة المُصفاة** - زامن عروضًا محددة بدلاً من جداول كاملة لتقليل حجم البيانات
3. **جمّع عمليات السجلات** - اجمع عمليات الإنشاء والتحديث في دُفعات من 10
4. **تعامل مع الترقيم** - يُرجع Airtable 100 سجل لكل صفحة؛ كرر باستخدام `offset`
5. **استخدم webhooks للوقت الفعلي** - سجل webhooks بدلاً من الاستطلاع للتغييرات
6. **اربط أنواع الحقول بدقة** - طابق أنواع حقول Airtable (select، number، date) مع أنواع سمات Brevo

## الأمان

- **Personal Access Tokens** - محددة النطاق لقواعد وعمليات محددة
- **OAuth 2.0** - تدفق تفويض آمن مع رموز تحديث
- **HTTPS فقط** - جميع اتصالات API مشفرة عبر TLS 1.2+
- **التحكم في الوصول على مستوى القاعدة** - الرموز محددة النطاق للقواعد الفردية
- **التخزين المشفر** - الرموز مشفرة في حالة السكون في Tajo
- **التحقق من HMAC لـ Webhook** - تحقق من أصالة إشعار webhook

## موارد ذات صلة

- [موصل Notion](https://tajo.io/ar/docs/connectors/custom/notion)
- [موصل GitHub](https://tajo.io/ar/docs/connectors/custom/github)
- [مهارة مزامنة العملاء](https://tajo.io/ar/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/ar/docs/contact-management)
