ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อพร้อมอีเมลหรือหมายเลขโทรศัพท์ แล้วเราจะติดต่อกลับพร้อมรายละเอียดการเข้าใช้งาน Tajo

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 เดียว

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

ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อพร้อมอีเมลหรือหมายเลขโทรศัพท์ แล้วเราจะติดต่อกลับพร้อมรายละเอียดการเข้าใช้งาน Tajo

ตรวจจับอัตโนมัติ
ผู้ช่วย AI

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