نود Notion در n8n
نود Notion در n8n یک پل آماده بین ورکفلوهای اتوماسیون و فضای کاری Notion است. با این نود میتوانید دیتابیسها و صفحات Notion را بخوانید، ایجاد کنید، بهروزرسانی کنید و آیتمها را جستجو کنید؛ یعنی دقیقاً همان کاری که معمولاً بهصورت دستی داخل Notion انجام میدهید را میتوانید به یک فرآیند خودکار تبدیل کنید.
معرفی نود در n8n
نود Notion برای اتصال n8n به Notion API استفاده میشود و امکان کار با «Database» و «Page» و در بسیاری از سناریوها «Block» را فراهم میکند. این نود معمولاً برای ساخت سیستمهای مدیریت کار، CRM ساده، ثبت درخواستها، آرشیو محتوا و گزارشگیری از دادهها بهکار میرود.
- کارکرد اصلی: خواندن/نوشتن داده در Notion (ایجاد صفحه، آپدیت پراپرتیها، کوئری دیتابیس، گرفتن اطلاعات صفحات و…)
- دستهبندی نود: Integration (یکپارچهسازی با سرویس خارجی)
- اهمیت در ورکفلوها: Notion اغلب نقش «مرکز داده» یا «داشبورد تیم» را دارد. وقتی Notion به n8n وصل شود، میتواند نقطه ورود/خروج داده برای دهها سرویس دیگر (ایمیل، فرم، Slack/Telegram، Google Sheets، Jira و…) باشد.
موارد استفاده
۱) ثبت خودکار لیدها (Leads) در دیتابیس Notion
سناریو: فرم سایت (Webhook) داده میفرستد و شما میخواهید هر لید بهصورت یک آیتم در دیتابیس Notion ذخیره شود، با فیلدهایی مثل نام، شماره تماس، منبع، وضعیت.
- ترکیب پیشنهادی: Webhook → Set → Notion (Create Page) → Slack (Notify)
۲) تبدیل پیامهای پشتیبانی به تسک
سناریو: هر پیام جدید در یک کانال (مثلاً Telegram یا Slack) به یک تسک در Notion تبدیل شود و برای آن Priority و Assignee تنظیم شود.
- ترکیب پیشنهادی: Telegram Trigger → Notion (Create Page) → Notion (Update Page برای افزودن برچسبها)
۳) گزارشگیری روزانه از دیتابیس Notion
سناریو: هر روز ساعت ۹ صبح، آیتمهای «Due Today» از دیتابیس تسکها خوانده شود و یک خلاصه برای تیم ارسال شود.
- ترکیب پیشنهادی: Cron → Notion (Query Database با فیلتر تاریخ) → Function (ساخت متن خلاصه) → Email/Slack
۴) همگامسازی Notion با Google Sheets
سناریو: آیتمهای دیتابیس Notion خوانده شوند و در یک شیت ثبت/بهروزرسانی شوند (برای تحلیل یا بکاپ).
- ترکیب پیشنهادی: Cron → Notion (Query Database) → Split In Batches → Google Sheets (Upsert)
۵) آرشیو خودکار محتوا
سناریو: لینکهای ذخیرهشده در Pocket/RSS خوانده شوند و بهعنوان آیتمهای دیتابیس «Reading List» در Notion با Tag و تاریخ ثبت شوند.
- ترکیب پیشنهادی: RSS Trigger → Notion (Create Page) → Notion (Append Block برای خلاصه)
پارامترها و تنظیمات
در n8n ممکن است نام دقیق برخی گزینهها با نسخه نود/اپراتورها کمی تفاوت داشته باشد، اما مفاهیم و ساختار کلی ثابت است. تنظیمات اصلی این نود معمولاً حول محور «Credentials»، «Resource»، «Operation» و «پارامترهای بدنه درخواست» میچرخد.
۱) Credentials (اعتبارنامه اتصال)
- Notion API Token
نوع داده: Secret/String
کاربرد: توکن یک Integration در Notion برای دسترسی به صفحات/دیتابیسها
مثال عملی: ساخت Integration در Notion و قرار دادن Internal Integration Token در n8n
نکته مهم: دیتابیس/صفحه باید با Integration شما Share شود، وگرنه Notion خطای دسترسی میدهد.
۲) Resource (منبع)
- Resource
نوع داده: Option (مثل Database / Page / Block)
کاربرد: تعیین میکند با کدام نوع آبجکت Notion کار دارید
مثال عملی: برای افزودن ردیف جدید به دیتابیس: Resource = Page (چون هر ردیف دیتابیس یک Page است)
۳) Operation (عملیات)
عملیاتها بسته به Resource تغییر میکنند. رایجترینها:
- Create (ایجاد)
نوع داده: Option
کاربرد: ساخت یک Page جدید (در یک Database یا زیر یک Page)
مثال عملی: ساخت آیتم جدید تسک با Title و Due Date
- Update (بهروزرسانی)
نوع داده: Option
کاربرد: تغییر پراپرتیها (Properties) یک Page موجود
مثال عملی: تغییر Status از “Todo” به “Done”
- Get (دریافت)
نوع داده: Option
کاربرد: دریافت جزئیات یک Page/Database
مثال عملی: دریافت پراپرتیها برای استفاده در یک شرط (IF)
- Search / Query (جستجو/کوئری)
نوع داده: Option
کاربرد: پیدا کردن صفحات یا فیلتر کردن رکوردهای دیتابیس
مثال عملی: پیدا کردن همه تسکهای Due Today یا همه لیدهایی که Status=New دارند
۴) Database ID / Page ID
- Database ID
نوع داده: String
کاربرد: مشخص میکند روی کدام دیتابیس عملیات انجام شود (خصوصاً در Query یا Create داخل دیتابیس)
مثال عملی: قراردادن ID دیتابیس CRM برای ایجاد لید
نکته مهم: ID را معمولاً از URL یا از خروجی نودهای Get/Search میگیرید. بهتر است بهجای هاردکد، از Expression استفاده شود تا قابلتغییر و محیطی باشد.
- Page ID
نوع داده: String
کاربرد: برای Update/Get یک صفحه مشخص
مثال عملی: وقتی یک رکورد را با Query پیدا کردید، از id همان برای Update استفاده کنید
۵) Properties (پراپرتیهای Notion)
بخش Properties مهمترین قسمت است. باید نام پراپرتیها دقیقاً مطابق نام فیلدهای دیتابیس در Notion باشد و نوع داده هم با نوع فیلد همخوانی داشته باشد.
- Title
نوع داده: Rich Text/Title
کاربرد: عنوان آیتم (معمولاً فیلد اصلی دیتابیس)
مثال عملی: Title = {{$json.name}} یا “Lead: {{$json.email}}”
نکته: اگر Title ارسال نشود، ساخت Page در دیتابیس غالباً خطا میدهد.
- Rich Text
نوع داده: String
کاربرد: توضیحات کوتاه، یادداشت داخلی، پیام مشتری
مثال عملی: Notes = {{$json.message}}
- Select / Multi-select
نوع داده: String یا Array
کاربرد: وضعیت، اولویت، دستهبندی
مثال عملی: Status = “New” یا Tags = [“Support”,”VIP”]
نکته: مقدار باید یکی از گزینههای موجود در Notion باشد؛ در غیر این صورت ممکن است خطا بدهد یا نیاز به ساخت گزینه داشته باشد (بسته به API/تنظیمات).
- Date
نوع داده: ISO 8601 String
کاربرد: Due date، تاریخ تماس، تاریخ ثبت
مثال عملی: Due = {{$now.toISO()}} یا “۲۰۲۶-۰۲-۱۰”
نکته: منطقه زمانی و فرمت تاریخ مهم است؛ برای زماندار بودن بهتر است ISO کامل با ساعت ارسال شود.
- Number
نوع داده: Number
کاربرد: مبلغ، امتیاز، تخمین زمان
مثال عملی: Amount = {{$json.amount}}
- Checkbox
نوع داده: Boolean
کاربرد: انجام شد/نشد، تایید شد/نشد
مثال عملی: Approved = true
- URL / Email / Phone
نوع داده: String
کاربرد: نگهداری اطلاعات تماس یا لینکها
مثال عملی: Email = {{$json.email}} ، Website = {{$json.url}}
- People
نوع داده: Array (User IDs)
کاربرد: Assign کردن آیتم به افراد
مثال عملی: Assignee = [“”]
نکته: باید user_id درست داشته باشید؛ گرفتن لیست کاربران معمولاً با API و سطح دسترسی مناسب انجام میشود.
- Relation
نوع داده: Array (Page IDs)
کاربرد: لینک کردن رکوردها بین دیتابیسها (مثلاً لید به شرکت)
مثال عملی: Company = [“”]
۶) Query Filters و Sorts (برای Query Database)
- Filter
نوع داده: Object
کاربرد: فیلتر کردن رکوردها بر اساس پراپرتیها
مثال عملی: فیلتر تسکهایی که Status برابر “Todo” است
نکته: ساختار فیلتر دقیق و حساس به نوع پراپرتی است (text، select، date، number و…).
- Sorts
نوع داده: Array
کاربرد: مرتبسازی خروجی (مثلاً جدیدترینها اول)
مثال عملی: مرتبسازی بر اساس Created time نزولی
- Limit / Return All
نوع داده: Number / Boolean
کاربرد: کنترل حجم داده و جلوگیری از کندی یا مصرف زیاد
مثال عملی: Limit = ۲۰ برای گزارش روزانه
نکات مهم هنگام پیکربندی
- Share کردن دیتابیس/صفحه با Integration: اگر انجام نشود، با وجود توکن درست هم خطای ۴۰۳ یا Not authorized میگیرید.
- نام پراپرتیها دقیقاً مطابق Notion: تفاوت کوچک (فاصله، حروف بزرگ/کوچک) باعث خطا یا خالی ماندن فیلد میشود.
- نوع فیلد را رعایت کنید: مثلا برای Date باید تاریخ معتبر بدهید؛ برای Select باید مقدار موجود باشد.
- کنترل نرخ درخواست: در حجم بالا از Split In Batches و Wait استفاده کنید.
ورودیها و خروجیها
ورودیها (Input)
این نود معمولاً دادهها را از نودهای قبلی به شکل JSON میگیرد. برای مثال، اگر از Set یا Webhook آمده باشد:
نمونه ورودی:
{ "name": "Ali Ahmadi", "email": "ali@example.com", "source": "Website Form", "message": "I need a demo", "amount": 1200000, "due": "2026-02-10T09:00:00.000Z"}خروجیها (Output)
خروجی معمولاً پاسخ Notion API است که شامل id، اطلاعات parent، properties و زمانهای ایجاد/ویرایش میشود.
نمونه خروجی (خلاصهشده):
{ "object": "page", "id": "c2f6a1d1-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "created_time": "2026-02-10T09:01:10.000Z", "last_edited_time": "2026-02-10T09:01:10.000Z", "parent": { "type": "database_id", "database_id": "9a8b7c6d-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, "properties": { "Name": { "type": "title", "title": [ { "type": "text", "text": { "content": "Ali Ahmadi" } } ] }, "Status": { "type": "select", "select": { "name": "New" } }, "Email": { "type": "email", "email": "ali@example.com" } }, "url": "https://www.notion.so/...."}نکته عملی برای کار با خروجی
- برای گرفتن آیدی صفحه ساختهشده در نودهای بعدی از {{$json.id}} استفاده میشود.
- برای لینک مستقیم صفحه معمولاً {{$json.url}} کاربردی است (ارسال به Slack/Email).
نکات پیشرفته و ترفندها
۱) Upsert واقعی با Query + IF + Create/Update
Notion مثل برخی دیتابیسها عملیات Upsert مستقیم ندارد. راه استاندارد در n8n:
- Notion (Query Database) با فیلتر (مثلاً Email = email ورودی)
- IF: اگر نتیجه وجود داشت → Update Page، اگر نبود → Create Page
این الگو برای CRM، ثبت مشتری تکراری، و جلوگیری از ساخت رکوردهای مشابه بسیار مهم است.
۲) مدیریت خروجیهای حجیم با Split In Batches
اگر دیتابیس بزرگ است و Return All فعال باشد، هم اجرای ورکفلو کند میشود و هم احتمال خطا/محدودیت API بالا میرود. الگوی عملی:
- Notion (Query Database با Limit منطقی)
- Split In Batches برای پردازش آیتمها بهصورت مرحلهای
- در صورت نیاز Wait برای کاهش فشار روی API
۳) تمیز کردن و نرمالسازی داده قبل از ارسال به Notion
- برای تاریخها از Date & Time node یا Expressionهای زمانی استفاده کنید تا همیشه ISO معتبر ارسال شود.
- برای Select مقادیر را استاندارد کنید (مثلاً با Switch) تا خطای گزینه نامعتبر نگیرید.
- برای متنهای طولانی، بهتر است خلاصه را در Properties ذخیره کنید و متن کامل را در Blockها (Append Block) قرار دهید.
۴) ذخیره ساختارمند خطاها در Notion
اگر در ورکفلو خطایی رخ میدهد، میتوانید Error Trigger را فعال کنید و خطاها را در یک دیتابیس Notion ذخیره کنید (نام ورکفلو، زمان، پیام خطا، Stack خلاصه، ورودیهای حساس با حذف اطلاعات شخصی).
محدودیتها و خطاها
محدودیتها
- محدودیت نرخ درخواست (Rate Limit): Notion API محدودیت دارد؛ در پردازش انبوه باید کنترل سرعت داشته باشید.
- وابستگی به ساختار دیتابیس: تغییر نام پراپرتیها یا نوع آنها در Notion میتواند ورکفلو را بشکند.
- پشتیبانی متفاوت عملیاتها: همه قابلیتهای UI در API دقیقاً مشابه نیست (خصوصاً برخی تنظیمات پیشرفته، رولآپها یا فرمولها قابل نوشتن مستقیم نیستند و بیشتر خروجی محاسبهای دارند).
- فیلدهای فرمول/رولآپ: معمولاً قابل set کردن نیستند و فقط خواندنی هستند.
خطاهای رایج و راهحلها
- 403 Forbidden / Not authorized
علت: صفحه/دیتابیس با Integration share نشده یا توکن اشتباه است.
راهحل: در Notion روی دیتابیس/صفحه Share بزنید و Integration را اضافه کنید؛ سپس مجدد تست Credentials.
- Validation error: property does not exist
علت: نام پراپرتی را اشتباه فرستادهاید یا در Notion تغییر کرده است.
راهحل: نام دقیق پراپرتی را کپی کنید؛ از Get Database برای بررسی schema استفاده کنید.
- Validation error: invalid select option
علت: مقدار Select/Multi-select در گزینههای موجود نیست.
راهحل: قبل از ارسال، با Switch/IF نگاشت درست انجام دهید یا گزینهها را از قبل در Notion بسازید.
- Validation error: invalid date
علت: فرمت تاریخ اشتباه یا ناسازگار با ISO است.
راهحل: تاریخ را با Date & Time node یا Expression مانند {{$now.toISO()}} تولید کنید.
- Too many requests / rate limited
علت: ارسال درخواستهای پشت سر هم در حلقههای بزرگ.
راهحل: Split In Batches + Wait، کاهش Return All، و اجرای زمانبندیشده (Cron) به جای اجرای لحظهای.
ایده ها
- ساخت سیستم «ثبت و پیگیری باگ» که از GitHub Issues یا Jira تیکتها را به Notion منتقل میکند و وضعیت را هر روز همگام میکند.
- اتومات کردن تولید محتوای تیم: دریافت ایدهها از فرم، ساخت رکورد در دیتابیس Content Calendar، و ارسال پیام به نویسنده مسئول.
- آرشیو خودکار فاکتورها: دریافت PDF از ایمیل، ذخیره در Google Drive، و ثبت لینک + مبلغ + تاریخ در Notion.
- داشبورد KPI ساده: جمعآوری داده از Google Analytics/Ads، ذخیره نتایج روزانه در Notion و ساخت گزارش هفتگی.
- بانک دانش پشتیبانی: تبدیل مکالمات حلشده به صفحههای Notion با برچسب محصول و نوع مشکل.
