Notion Connector

เชื่อมต่อ Notion workspace กับ Brevo สำหรับเวิร์กโฟลว์การตลาดที่ขับเคลื่อนด้วยเนื้อหา การซิงค์ CRM database และการแจ้งเตือนอัตโนมัติผ่าน Tajo

ภาพรวม

คุณสมบัติค่า
แพลตฟอร์มNotion
หมวดหมู่แบบกำหนดเอง
ความซับซ้อนในการตั้งค่าง่าย
การผสานรวมอย่างเป็นทางการไม่
ข้อมูลที่ซิงค์Databases หน้า ผู้ใช้
ประเภท APIREST API
การยืนยันตัวตนInternal Integration Token / OAuth 2.0
Base URLhttps://api.notion.com
เวอร์ชัน API2022-06-28 (ผ่าน Notion-Version header)

ฟีเจอร์

  • การซิงค์ database - ซิงค์รายการ Notion database กับผู้ติดต่อและรายการ Brevo
  • CRM bridge - ใช้ Notion databases เป็น CRM แบบ lightweight ที่ซิงค์กับ Brevo
  • การแจ้งเตือนเนื้อหา - ทริกเกอร์แคมเปญ Brevo เมื่อหน้า Notion ถูกเผยแพร่
  • การแมปคุณสมบัติ - แมปคุณสมบัติ Notion database กับแอตทริบิวต์ผู้ติดต่อ Brevo
  • การตรวจสอบหน้า - ติดตามการอัปเดตหน้าและส่งต่อเป็นเหตุการณ์ Brevo
  • การซิงค์ directory ผู้ใช้ - ซิงค์สมาชิก Notion workspace กับผู้ติดต่อ Brevo

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  1. Notion workspace ที่มีสิทธิ์ผู้ดูแลระบบ
  2. Notion internal integration หรือ OAuth app
  3. หน้า database ที่แชร์กับ integration
  4. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
  5. บัญชี Tajo ที่มีการสมัครสมาชิกที่ใช้งานอยู่

การยืนยันตัวตน

Notion รองรับวิธีการยืนยันตัวตนสองแบบ

ตัวเลือกที่ 1: Internal Integration (แนะนำสำหรับ workspace เดียว)

  1. ไปที่ notion.so/my-integrations
  2. คลิก New integration
  3. ตั้งชื่อว่า “Tajo Integration”
  4. เลือก workspace ของคุณ
  5. ตั้งค่าความสามารถ:
Content Capabilities:
Read content: ✓
Update content: ✓
Insert content: ✓
User Capabilities:
Read user information: ✓
  1. คัดลอก Internal Integration Secret (เริ่มต้นด้วย ntn_)

ต้องแชร์หน้า

Internal integrations สามารถเข้าถึงเฉพาะหน้าและ databases ที่แชร์กับพวกเขาอย่างชัดเจน แชร์แต่ละ database เป้าหมายกับ integration ของคุณผ่าน ”…” เมนู > “Connections” > เลือก integration ของคุณ

ตัวเลือกที่ 2: OAuth 2.0 (Public integrations)

สำหรับการผสานรวมที่ให้บริการหลาย workspaces ใช้ OAuth 2.0 flow:

  1. ลงทะเบียน integration ของคุณเป็น public integration
  2. เปลี่ยนเส้นทางผู้ใช้ไปที่: https://api.notion.com/v1/oauth/authorize?client_id=...
  3. แลกเปลี่ยน code สำหรับ access token ที่ /v1/oauth/token

เชื่อมต่อกับ Tajo

Terminal window
tajo connectors install notion \
--token $NOTION_TOKEN

การกำหนดค่า

การตั้งค่าพื้นฐาน

connectors:
notion:
enabled: true
api_version: "2022-06-28"
sync:
databases: true
pages: false
users: true
databases:
- id: "abc123def456"
name: "Customers"
sync_to_list: 25
- id: "ghi789jkl012"
name: "Leads"
sync_to_list: 26

การแมปฟิลด์

แมปคุณสมบัติ Notion database กับแอตทริบิวต์ผู้ติดต่อ Brevo:

field_mapping:
# Notion property -> Brevo attribute
Name:
type: title
target: FIRSTNAME
Email:
type: email
target: email
Phone:
type: phone_number
target: SMS
Company:
type: rich_text
target: COMPANY
Status:
type: select
target: LEAD_STATUS
Deal Value:
type: number
target: DEAL_VALUE
Last Contact:
type: date
target: LAST_CONTACT_DATE
Tags:
type: multi_select
target: TAGS

API Endpoints

Tajo ผสานรวมกับ Notion API endpoints ต่อไปนี้:

Endpointเมธอดจุดประสงค์
/v1/databases/{id}/queryPOSTQuery รายการ database
/v1/databases/{id}GETดึง database schema
/v1/pagesPOSTสร้างหน้าใหม่
/v1/pages/{id}GETดึงคุณสมบัติหน้า
/v1/pages/{id}PATCHอัปเดตคุณสมบัติหน้า
/v1/blocks/{id}/childrenGETดึง children ของ block
/v1/usersGETแสดงรายการผู้ใช้ workspace ทั้งหมด
/v1/users/{id}GETดึงผู้ใช้
/v1/searchPOSTค้นหาทั่ว workspace

ตัวอย่างโค้ด

เริ่มต้น Connector

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('notion', {
token: process.env.NOTION_TOKEN
});

ซิงค์ Database กับ Brevo

// Sync a Notion database to a Brevo list
await tajo.connectors.sync('notion', {
type: 'full',
resources: ['databases'],
databaseId: 'abc123def456',
targetList: 25
});
const status = await tajo.connectors.status('notion');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T14:30:00Z',
// databasesSynced: 2,
// pagesTracked: 1450,
// usersCount: 32
// }

Query และกรอง

// Query Notion database with filters
const results = await tajo.connectors.query('notion', {
databaseId: 'abc123def456',
filter: {
property: 'Status',
select: { equals: 'Active' }
},
sorts: [
{ property: 'Last Contact', direction: 'descending' }
]
});

สร้างหน้าจากเหตุการณ์ Brevo

// Create a Notion page when a Brevo contact reaches a milestone
tajo.events.on('contact.attribute_updated', async (event) => {
if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') {
await tajo.connectors.create('notion', {
databaseId: 'ghi789jkl012',
properties: {
Name: { title: [{ text: { content: event.contact.name } }] },
Email: { email: event.contact.email },
'Converted Date': { date: { start: new Date().toISOString() } }
}
});
}
});

ขีดจำกัดอัตรา

Notion ใช้ขีดจำกัดอัตราต่อ integration:

ประเภทขีดจำกัดค่า
ขีดจำกัดอัตรา3 คำขอต่อวินาทีต่อ integration
ขีดจำกัด Burstอนุญาต burst สั้นๆ จากนั้นถูกจำกัด
ขนาดหน้าสูงสุด 100 รายการต่อคำขอแบบ paginated

Cursor-Based Pagination

Notion ใช้ cursor-based pagination Tajo จัดการสิ่งนี้โดยอัตโนมัติ วนซ้ำผ่านทุกหน้าโดยใช้พารามิเตอร์ next_cursor จนกระทั่ง has_more ส่งคืน false

Notion ส่งคืน 429 Too Many Requests เมื่อเกินขีดจำกัดอัตรา พร้อม header Retry-After

การแก้ไขปัญหา

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
401 UnauthorizedToken ไม่ถูกต้องหรือหมดอายุสร้าง integration token ใหม่
403 Forbiddenหน้าไม่ได้แชร์กับ integrationแชร์หน้า/database กับ integration ผ่าน Connections
404 Object not foundDatabase ID ไม่ถูกต้องหรือไม่ได้แชร์ตรวจสอบ database ID และการตั้งค่าการแชร์
คุณสมบัติหายไปSchema ไม่ตรงกันซิงค์ database schema ใหม่และอัปเดตการแมปฟิลด์
เกินขีดจำกัดอัตราคำขอรวดเร็วมากเกินไปลดความถี่การซิงค์หรือขนาด batch

โหมด Debug

connectors:
notion:
debug: true
log_level: verbose
log_api_calls: true

ทดสอบการเชื่อมต่อ

Terminal window
tajo connectors test notion
# ✓ API authentication successful
# ✓ Database access verified
# ✓ User list accessible
# ✓ Search operational
# ✓ Page creation available

แนวทางปฏิบัติที่ดีที่สุด

  1. แชร์ databases อย่างชัดเจน - Internal integrations เห็นเฉพาะเนื้อหาที่แชร์
  2. ใช้ database queries แทนการค้นหา - Queries เร็วกว่าและเชื่อถือได้มากกว่าสำหรับ databases ที่รู้จัก
  3. แมปประเภทคุณสมบัติอย่างระมัดระวัง - Notion มีประเภทคุณสมบัติมากมาย จับคู่กับประเภทแอตทริบิวต์ Brevo
  4. จัดการ pagination - วนซ้ำผ่านทุกหน้า cursor เสมอสำหรับข้อมูลที่สมบูรณ์
  5. ซิงค์แบบเพิ่มทีละน้อย - ใช้ตัวกรอง last_edited_time เพื่อซิงค์เฉพาะรายการที่เปลี่ยนแปลง
  6. ตั้งค่าตารางการ polling - Notion ไม่รองรับ webhooks ในแบบ native ต้อง poll ที่ช่วงเวลาปกติ

ความปลอดภัย

  • การยืนยันตัวตน Bearer Token - Integration secrets และ OAuth tokens
  • HTTPS เท่านั้น - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน TLS 1.2+
  • การเข้าถึงแบบกำหนดขอบเขต - Integrations เข้าถึงเฉพาะเนื้อหาที่แชร์อย่างชัดเจน
  • OAuth 2.0 - โฟลว์การอนุญาตที่ปลอดภัยสำหรับ public integrations
  • การจัดเก็บที่เข้ารหัส - Tokens เข้ารหัสที่เก็บใน Tajo
  • การแยก Workspace - แต่ละ integration กำหนดขอบเขตกับ workspace เดียว

แหล่งข้อมูลที่เกี่ยวข้อง

Subscribe to updates

developer-docs

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

auto-detect
ผู้ช่วย AI

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย