سیلزفورس
Salesforce
اتوماسیون CRM، مدیریت Leads، Opportunities، Cases و Custom Objects در Salesforce
نمای کلی
نود Salesforce چیست؟
نود Salesforce امکان اتصال و خودکارسازی فرآیندهای مدیریت ارتباط با مشتری (CRM)، فروش، خدمات و بازاریابی را در n8n فراهم میکند. Salesforce بزرگترین و محبوبترین پلتفرم CRM ابری در جهان است و شامل Sales Cloud، Service Cloud، Marketing Cloud و بسیاری از محصولات دیگر میشود.
قابلیتهای کلیدی:
- مدیریت Contacts: ایجاد، ویرایش، حذف و جستجوی مخاطبین سازمانی
- مدیریت Leads: ثبت و پیگیری سرنخهای فروش، تبدیل Lead به Opportunity
- مدیریت Accounts: عملیات CRUD روی حسابهای سازمانی مشتریان
- مدیریت Opportunities: ایجاد و مدیریت فرصتهای فروش در Pipeline
- مدیریت Cases: سیستم تیکتینگ و پشتیبانی مشتری (Service Cloud)
- Tasks & Events: ایجاد وظایف و رویدادها برای پیگیری
- Notes & Attachments: مدیریت یادداشتها و پیوستها
- SOQL Queries: جستجوی پیشرفته با زبان Salesforce Object Query Language
- Custom Objects: کار با آبجکتهای سفارشی تعریفشده در Salesforce
- Reports: دریافت و اجرای گزارشهای Salesforce
محدودیتهای API:
- Enterprise Edition: ۱۰۰,۰۰۰ درخواست API در ۲۴ ساعت
- Unlimited Edition: ۵,۰۰۰,۰۰۰ درخواست API در ۲۴ ساعت
- Developer Edition: ۱۵,۰۰۰ درخواست API در ۲۴ ساعت
- Concurrent API Limit: ۲۵ درخواست همزمان
- Bulk API: تا ۱۰,۰۰۰ رکورد در هر batch
احراز هویت
احراز هویت Salesforce
روش ۱: OAuth2 (توصیه شده)
OAuth2 امنترین و رایجترین روش اتصال به Salesforce است.
#### مراحل تنظیم Connected App:
- 1وارد Salesforce Setup شوید
- 2به مسیر **App Manager** بروید (
Setup > Apps > App Manager) - 3روی New Connected App کلیک کنید
- 4اطلاعات پایه را پر کنید:
- Connected App Name: n8n Automation
- API Name: n8n_Automation
- Contact Email: ایمیل ادمین
- 1Enable OAuth Settings را فعال کنید
- 2Callback URL را وارد کنید: آدرس callback n8n شما
- 3OAuth Scopes مورد نیاز را اضافه کنید:
Full access (full)- دسترسی کامل- یا به صورت granular:
Manage user data via APIs (api)Perform requests at any time (refresh_token, offline_access)Access custom permissions (custom_permissions)
- 1Save کنید و ۲ تا ۱۰ دقیقه صبر کنید
- 2Consumer Key و Consumer Secret را کپی کنید
#### تنظیم در n8n:
- 1Credentials > Salesforce OAuth2 API
- 2Client ID (Consumer Key) و Client Secret (Consumer Secret) را وارد کنید
- 3Environment: Production یا Sandbox
- Production:
login.salesforce.com - Sandbox:
test.salesforce.com
- 1روی Connect کلیک کنید و اکانت Salesforce را تایید کنید
روش ۲: API Token (Username-Password Flow)
⚠️ توجه: این روش امنیت کمتری دارد و Salesforce توصیه به استفاده از OAuth2 میکند.
#### مراحل دریافت Security Token:
- 1وارد Salesforce شوید
- 2به Settings > My Personal Information > Reset My Security Token بروید
- 3روی Reset Security Token کلیک کنید
- 4Token جدید به ایمیل شما ارسال میشود
#### تنظیم در n8n:
- 1Credentials > Salesforce API
- 2فیلدها را پر کنید:
- Username: ایمیل Salesforce شما
- Password: رمز عبور + Security Token (بدون فاصله)
- Environment: Production یا Sandbox
- Client ID و Client Secret: از Connected App
- 1Test Connection بزنید
نکات امنیتی:
- از OAuth2 با refresh token برای Production استفاده کنید
- IP Range را در Connected App محدود کنید
- دسترسی Profile و Permission Set را مدیریت کنید
- Security Token در Password Flow به انتهای رمز عبور اضافه میشود
- به صورت دورهای Security Token را تغییر دهید
- از اکانت Integration User اختصاصی استفاده کنید
عملیاتهای موجود
contact-create
ایجاد مخاطب جدید در Salesforce CRM
contact-get
دریافت اطلاعات کامل یک مخاطب
contact-update
ویرایش فیلدهای یک مخاطب موجود
lead-create
ایجاد سرنخ فروش جدید
lead-convert
تبدیل Lead به Account، Contact و Opportunity
account-create
ایجاد حساب سازمانی جدید
account-update
ویرایش اطلاعات حساب سازمانی
opportunity-create
ایجاد فرصت فروش جدید در Pipeline
opportunity-update
ویرایش فرصت فروش و تغییر مرحله Pipeline
case-create
ایجاد کیس پشتیبانی جدید (Service Cloud)
case-update
ویرایش وضعیت و اطلاعات کیس پشتیبانی
task-create
ایجاد وظیفه جدید مرتبط با رکورد
note-create
ایجاد یادداشت مرتبط با یک رکورد
soql-query
اجرای کوئری SOQL (Salesforce Object Query Language) برای جستجوی پیشرفته
report-get
اجرای گزارش Salesforce و دریافت نتایج
custom-object-create
ایجاد رکورد جدید در یک Custom Object
custom-object-update
ویرایش رکورد موجود در Custom Object
record-delete
حذف هر نوع رکورد از Salesforce (Contact, Lead, Account, etc.)
record-get-all
دریافت لیست رکوردهای یک آبجکت با فیلتر و صفحهبندی
کاربردهای متداول
کاربردهای رایج
۱. ثبت خودکار Lead از فرمهای وبسایت
هر بار که فرمی در سایت شما پر شود، یک Lead جدید در Salesforce ثبت شود.
Webhook (فرم سایت)
→ Salesforce (lead-create)
LastName: {{$json.lastName}}
Company: {{$json.company}}
Email: {{$json.email}}
Phone: {{$json.phone}}
LeadSource: "Web"
Rating: "Warm"
→ Salesforce (task-create)
Subject: "پیگیری Lead جدید: {{$json.lastName}}"
ActivityDate: {{$today.plus(1, 'day')}}
WhoId: {{$json.leadId}}
→ Telegram (اعلان به تیم فروش)۲. مدیریت Pipeline فروش و تغییر مرحله خودکار
وقتی Opportunity به مرحله خاصی برسد، اقدامات خودکار انجام شود.
Schedule (هر ۱۵ دقیقه)
→ Salesforce (soql-query)
SELECT Id, Name, StageName, Amount, OwnerId
FROM Opportunity
WHERE StageName = 'Proposal/Price Quote'
AND LastModifiedDate > LAST_N_MINUTES:15
→ Loop
→ Switch (بررسی مرحله)
Case "Proposal/Price Quote":
→ Gmail (ارسال پیشنهاد قیمت به مشتری)
→ Salesforce (task-create: پیگیری ۴۸ ساعته)
Case "Closed Won":
→ Salesforce (contact-update: Customer_Status__c = 'Active')
→ Gmail (ایمیل خوشامدگویی)
→ Telegram (تبریک به تیم)
Case "Closed Lost":
→ Salesforce (note-create: دلیل از دست دادن)
→ Gmail (ارسال نظرسنجی)۳. تبدیل خودکار Lead به Opportunity
وقتی Lead Score به حد آستانه رسید، خودکار تبدیل شود.
Schedule (هر ساعت)
→ Salesforce (soql-query)
SELECT Id, FirstName, LastName, Company, Lead_Score__c
FROM Lead
WHERE Lead_Score__c >= 80 AND IsConverted = false
→ Loop
→ Salesforce (lead-convert)
convertedStatus: "Closed - Converted"
opportunityName: "فرصت فروش - {{$json.Company}}"
→ Salesforce (task-create)
Subject: "تماس اول با مشتری جدید"
→ Telegram (اعلان: Lead داغ تبدیل شد!)۴. Customer 360 - یکپارچهسازی داده مشتری
اطلاعات مشتری را از منابع مختلف جمعآوری و در Salesforce ثبت کنید.
Webhook (سفارش جدید از فروشگاه)
→ Salesforce (soql-query)
SELECT Id FROM Contact WHERE Email = '{{$json.email}}'
→ IF (مخاطب وجود دارد)
→ Salesforce (contact-update)
Total_Purchases__c: +1
Last_Purchase_Date__c: TODAY
Total_Revenue__c: +amount
→ Else
→ Salesforce (account-create: شرکت مشتری)
→ Salesforce (contact-create: اطلاعات مشتری)
→ Salesforce (custom-object-create: Order__c)
Contact__c: contactId
Amount__c: {{$json.total}}
Order_Number__c: {{$json.orderId}}۵. اتوماسیون Service Cloud و مدیریت Cases
ایمیلهای دریافتی را به Case در Salesforce تبدیل و مسیریابی کنید.
IMAP (ایمیل جدید پشتیبانی)
→ Salesforce (soql-query: جستجوی Contact با ایمیل)
→ Salesforce (case-create)
Subject: {{$json.subject}}
Description: {{$json.body}}
Origin: "Email"
ContactId: {{$json.contactId}}
Priority: بر اساس کلمات کلیدی
→ Code (تحلیل محتوا برای مسیریابی)
→ Switch
→ "billing": assign به تیم مالی
→ "technical": assign به تیم فنی
→ "urgent": Priority = High + اعلان فوری
→ Gmail (تایید دریافت تیکت به مشتری)۶. Lead Scoring اتوماتیک با هوش مصنوعی
بر اساس رفتار و ویژگیهای Lead، امتیاز را محاسبه و بهروزرسانی کنید.
Webhook (رویداد رفتاری از سایت)
→ Salesforce (soql-query: دریافت Lead)
→ Code (محاسبه امتیاز)
بازدید صفحه قیمت: +15
دانلود Whitepaper: +20
شرکت در وبینار: +30
بازدید صفحه تماس: +25
شرکت بزرگ (500+ کارمند): +10
صنعت هدف: +10
→ Salesforce (contact-update یا lead-update)
Lead_Score__c: امتیاز جدید
→ IF (score > 80)
→ Salesforce (task-create: تماس فوری)
→ Telegram (اعلان: Lead داغ شناسایی شد!)۷. گزارش فروش روزانه از Salesforce
هر روز گزارش خلاصه Pipeline و فروش روزانه ارسال شود.
Schedule (هر روز ساعت ۲۰)
→ Salesforce (soql-query: Opportunities Closed Won امروز)
→ Salesforce (soql-query: Leads ایجادشده امروز)
→ Salesforce (soql-query: Cases باز)
→ Salesforce (report-get: گزارش Pipeline)
→ Code (ساخت گزارش)
totalRevenue, newLeads, openCases
conversionRate, averageDealSize
topPerformer
→ Telegram (ارسال گزارش روزانه)
→ Gmail (ارسال به مدیریت)۸. همگامسازی Salesforce با سایر سیستمها
مخاطبین و معاملات را بین Salesforce و سیستمهای دیگر sync کنید.
Schedule (هر ۳۰ دقیقه)
→ Salesforce (soql-query)
SELECT Id, Name, Email, Phone, LastModifiedDate
FROM Contact
WHERE LastModifiedDate > {{$lastRun}}
→ Loop
→ IF (exists in HubSpot)
→ HubSpot (Update Contact)
→ Else
→ HubSpot (Create Contact)
→ Salesforce (soql-query: Opportunities تغییر یافته)
→ Loop
→ Google Sheets (بهروزرسانی Pipeline Sheet)۹. Onboarding خودکار مشتری جدید
پس از بسته شدن معامله، فرآیند onboarding خودکار آغاز شود.
Schedule (هر ساعت)
→ Salesforce (soql-query)
SELECT Id, Name, AccountId, ContactId
FROM Opportunity
WHERE StageName = 'Closed Won'
AND Onboarding_Started__c = false
→ Loop
→ Salesforce (opportunity-update: Onboarding_Started__c = true)
→ Salesforce (task-create: "تماس خوشامدگویی - ۲۴ ساعت")
→ Salesforce (task-create: "ارسال مستندات - ۴۸ ساعت")
→ Salesforce (task-create: "جلسه آموزش - ۱ هفته")
→ Gmail (ارسال Welcome Kit)
→ Slack (اعلان به تیم Customer Success)
→ Google Calendar (ایجاد جلسه Kickoff)۱۰. بازاریابی Campaign و Lead Nurturing
لیدهای سرد را با ایمیلهای خودکار گرم کنید.
Schedule (هفتگی)
→ Salesforce (soql-query)
SELECT Id, Email, FirstName, Industry, Lead_Score__c
FROM Lead
WHERE Status = 'Open - Not Contacted'
AND CreatedDate < LAST_N_DAYS:7
AND HasOptedOutOfEmail = false
→ Loop
→ Switch (بر اساس Industry)
→ "Technology": Gmail (محتوای فناوری)
→ "Finance": Gmail (محتوای مالی)
→ default: Gmail (محتوای عمومی)
→ Salesforce (task-create: ثبت ارسال ایمیل)
→ Wait (2 seconds - رعایت rate limit)۱۱. مدیریت هشدارهای SLA برای Cases
نظارت بر زمان پاسخدهی و ارسال هشدار برای Cases نزدیک SLA.
Schedule (هر ۳۰ دقیقه)
→ Salesforce (soql-query)
SELECT Id, Subject, Priority, CreatedDate, OwnerId, Status
FROM Case
WHERE Status != 'Closed'
AND IsClosed = false
→ Code (محاسبه زمان باقیمانده SLA)
High: 4 ساعت
Medium: 8 ساعت
Low: 24 ساعت
→ IF (زمان باقیمانده < 1 ساعت)
→ Salesforce (case-update: Priority = High)
→ Telegram (هشدار SLA فوری)
→ Gmail (اعلان به مدیر پشتیبانی)۱۲. پاکسازی و افزایش کیفیت داده CRM
به صورت دورهای دادههای Salesforce را بررسی و تمیز کنید.
Schedule (هفتگی - آخر هفته)
→ Salesforce (soql-query: Leads تکراری)
SELECT Email, COUNT(Id) FROM Lead
GROUP BY Email HAVING COUNT(Id) > 1
→ Salesforce (soql-query: Contacts بدون ایمیل)
→ Salesforce (soql-query: Accounts بدون Contact)
→ Code (تحلیل کیفیت داده)
duplicates, missingEmails, orphanAccounts
dataQualityScore
→ Gmail (گزارش کیفیت داده به ادمین)
→ Google Sheets (ثبت تاریخچه کیفیت)نکات حرفهای
نکات حرفهای
۱. SOQL - زبان جستجوی قدرتمند Salesforce
SOQL شبیه SQL ولی با تفاوتهای مهم:
// جستجوی پایه
SELECT Id, Name, Email FROM Contact WHERE AccountId = '001xxx'
// با Relationship Query (Parent-to-Child)
SELECT Id, Name, (SELECT Id, LastName FROM Contacts) FROM Account
// Child-to-Parent
SELECT Id, LastName, Account.Name FROM Contact
// Date Literals
SELECT Id FROM Lead WHERE CreatedDate = TODAY
SELECT Id FROM Opportunity WHERE CloseDate = THIS_MONTH
SELECT Id FROM Case WHERE CreatedDate = LAST_N_DAYS:30
// Aggregate Functions
SELECT COUNT(Id), StageName FROM Opportunity GROUP BY StageName
// با LIKE برای جستجوی متنی
SELECT Id, Name FROM Account WHERE Name LIKE '%tech%'۲. Date Literals کاربردی SOQL
TODAY → امروز
YESTERDAY → دیروز
TOMORROW → فردا
THIS_WEEK → این هفته
LAST_WEEK → هفته قبل
THIS_MONTH → این ماه
LAST_MONTH → ماه قبل
THIS_QUARTER → این سهماهه
THIS_YEAR → امسال
LAST_N_DAYS:n → n روز گذشته
NEXT_N_DAYS:n → n روز آینده
LAST_N_MONTHS:n → n ماه گذشته۳. از External ID برای Upsert استفاده کنید
بجای جستجو و سپس ایجاد/ویرایش، از External ID فیلد استفاده کنید:
// در Custom Field، "External ID" را فعال کنید
// سپس با PATCH /sobjects/Contact/Email__c/test@example.com
// Salesforce خودکار create یا update انجام میدهد۴. مراحل Pipeline فروش پیشفرض Salesforce
Prospecting → شناسایی اولیه
Qualification → ارزیابی نیاز
Needs Analysis → تحلیل نیازها
Value Proposition → ارائه ارزش
Id. Decision Makers → شناسایی تصمیمگیرندگان
Perception Analysis → تحلیل ادراک
Proposal/Price Quote → ارائه پیشنهاد
Negotiation/Review → مذاکره
Closed Won → بسته شده - موفق
Closed Lost → بسته شده - ناموفق۵. Custom Fields - نامگذاری و شناسایی
// فیلدهای سفارشی با __c تمام میشوند
Lead_Score__c
Customer_Type__c
Last_Purchase_Date__c
// Relationship فیلدها با __r
Account__r.Name (خواندن parent)
Orders__r (خواندن children)
// Picklist values
SELECT Id, Status FROM Lead WHERE Status = 'Working - Contacted'۶. Bulk API برای عملیات حجیم
برای بیش از ۲۰۰ رکورد، از Bulk API استفاده کنید:
// با HTTP Request node
POST /services/async/XX.0/job
Content-Type: application/json
{"operation": "insert", "object": "Lead", "contentType": "JSON"}
// سپس batch ارسال کنید (تا ۱۰,۰۰۰ رکورد در هر batch)۷. Composite API برای چند عملیات همزمان
تا ۲۵ درخواست را در یک API call ارسال کنید:
POST /services/data/vXX.0/composite
{
"compositeRequest": [
{"method": "POST", "url": "/sobjects/Account", "body": {"Name": "Test"}, "referenceId": "newAccount"},
{"method": "POST", "url": "/sobjects/Contact", "body": {"LastName": "Test", "AccountId": "@{newAccount.id}"}, "referenceId": "newContact"}
]
}۸. Error Handling حرفهای
Salesforce (Create Lead)
→ Success: ادامه workflow
→ Error DUPLICATE_VALUE: SOQL (search) → Update existing
→ Error REQUIRED_FIELD: Log missing fields → Alert
→ Error 429: Wait (60s) → Retry
→ Error INVALID_SESSION: Refresh token → Retry۹. از RecordType برای دستهبندی استفاده کنید
// دریافت RecordType ID
SELECT Id, Name FROM RecordType WHERE SObjectType = 'Account'
// ایجاد رکورد با RecordType
{"Name": "Test", "RecordTypeId": "012xxx"}۱۰. Pagination برای نتایج بزرگ SOQL
SOQL حداکثر ۲,۰۰۰ رکورد در هر query برمیگرداند:
// درخواست اول
SELECT Id, Name FROM Contact LIMIT 2000
// اگر nextRecordsUrl وجود داشت
GET /services/data/vXX.0/query/next-cursor-id
// تا دریافت تمام نتایج۱۱. Salesforce Trigger Events
رویدادهای مهم برای Platform Events و Streaming API:
// Platform Events (Real-time)
Order_Event__e → سفارش جدید
Support_Alert__e → هشدار پشتیبانی
// Change Data Capture
ContactChangeEvent → تغییر مخاطب
OpportunityChangeEvent → تغییر فرصت۱۲. از Formula Fields برای محاسبات خودکار استفاده کنید
بجای محاسبه در n8n، از Formula Fields در Salesforce استفاده کنید:
// مثال Formula Field
Days_Since_Last_Activity__c = TODAY() - Last_Activity_Date__c
Deal_Score__c = Amount * Probability / 100۱۳. Owner Assignment خودکار
معاملات و Leads را بر اساس منطق خودکار assign کنید:
IF (Lead.Industry = "Technology" AND Lead.State = "CA")
→ OwnerId = techSalesRepId
ELSE IF (Lead.AnnualRevenue > 1000000)
→ OwnerId = enterpriseSalesRepId
ELSE
→ Round Robin بین تیم فروش۱۴. تست در Sandbox قبل از Production
// همیشه ابتدا در Sandbox تست کنید
Environment: test.salesforce.com (Sandbox)
Environment: login.salesforce.com (Production)
// Sandbox رایگان با Developer Edition
// Full Sandbox با Enterprise/Unlimited۱۵. بهینهسازی SOQL Queries
// بد: دریافت همه فیلدها
SELECT * FROM Contact // ❌ SOQL اجازه نمیدهد!
// خوب: فقط فیلدهای مورد نیاز
SELECT Id, Name, Email FROM Contact // ✅
// بد: SOQL درون حلقه
Loop → SOQL query (N+1 problem) // ❌
// خوب: یک SOQL و سپس فیلتر
SOQL (all needed data) → Code (filter/process) // ✅
// استفاده از indexed fields در WHERE
SELECT Id FROM Lead WHERE Email = 'x@y.com' // ✅ Email indexed
SELECT Id FROM Lead WHERE Description LIKE '%test%' // ❌ Full scan۱۶. نکته مهم درباره Salesforce IDs
// Salesforce دو نوع ID دارد:
// 15-character (case-sensitive): 001D000000INjVe
// 18-character (case-insensitive): 001D000000INjVeIAL
// همیشه از 18-character استفاده کنید
// API به صورت پیشفرض 18-character برمیگرداند۱۷. Report API برای گزارشهای آماده
بجای نوشتن SOQL پیچیده، از گزارشهای آماده Salesforce استفاده کنید:
// اجرای گزارش
GET /services/data/vXX.0/analytics/reports/{reportId}
// با فیلتر سفارشی
POST /services/data/vXX.0/analytics/reports/{reportId}
{"reportMetadata": {"reportFilters": [...]}}رفع مشکلات
رفع مشکلات رایج
❌ خطای INVALID_SESSION_ID (401)
علت: Access Token منقضی یا نامعتبر شده
راهحل
- از OAuth2 با Refresh Token استفاده کنید تا token خودکار تمدید شود
- در n8n، Credential را مجدداً Connect کنید
- اگر از Password Flow استفاده میکنید، Security Token را بررسی کنید
- Security Token ممکن است بعد از تغییر رمز عبور تغییر کرده باشد
- مطمئن شوید Session Timeout در Salesforce بررسی شده
❌ خطای INSUFFICIENT_ACCESS_OR_READONLY (403)
علت: دسترسی کافی برای عملیات ندارید
راهحل
- Profile و Permission Set کاربر Integration را بررسی کنید
- Field-Level Security را چک کنید (ممکن است فیلد خاصی Read-Only باشد)
- Object Permissions باید شامل Create, Read, Edit, Delete باشد
- Sharing Rules ممکن است دسترسی به رکوردهای خاص را محدود کنند
- از System Admin بخواهید permissions را بررسی کند
- برای Custom Objects، CRUD permissions تنظیم شده باشد
❌ خطای REQUIRED_FIELD_MISSING (400)
علت: فیلدهای اجباری پر نشدهاند
راهحل
- فیلدهای اجباری هر آبجکت متفاوت است:
- Lead: LastName, Company
- Contact: LastName
- Opportunity: Name, StageName, CloseDate
- Case: (بسته به تنظیمات org)
- Validation Rules سفارشی ممکن است فیلدهای بیشتری اجباری کرده باشند
- Page Layout ممکن است Required fields داشته باشد
- از Salesforce Setup > Object Manager > Fields بررسی کنید
❌ خطای DUPLICATE_VALUE
علت: رکورد تکراری بر اساس Duplicate Rules
راهحل
- ابتدا با SOQL بررسی کنید آیا رکورد وجود دارد:
SELECT Id FROM Lead WHERE Email = 'test@example.com'- از الگوی Upsert استفاده کنید:
SOQL (search) → IF (exists) → Update → Else → Create- External ID Field برای upsert خودکار تعریف کنید
- Duplicate Rules در Setup > Duplicate Management بررسی کنید
❌ خطای MALFORMED_QUERY (SOQL)
علت: خطای نحوی در کوئری SOQL
راهحل
- مقادیر رشتهای را در single quote بگذارید:
Name = 'Test Company' - تاریخها بدون quote:
CreatedDate = TODAYیاCreatedDate > 2024-01-01T00:00:00Z - نام فیلدهای سفارشی با
__cتمام میشوند:Custom_Field__c - Relationship fields:
Account.Name(بجای join) - از Developer Console > Query Editor برای تست SOQL استفاده کنید
❌ خطای API_CURRENTLY_DISABLED
علت: API دسترسی برای این org یا profile غیرفعال است
راهحل
- Salesforce Edition باید شامل API access باشد (Enterprise, Unlimited, Developer)
- Professional Edition نیاز به API Add-on دارد
- در Profile کاربر، "API Enabled" باید فعال باشد
- با admin Salesforce تماس بگیرید
❌ خطای REQUEST_LIMIT_EXCEEDED (429)
علت: محدودیت API Limit رسیده
راهحل
- API Call Limit بسته به Edition متفاوت است
/services/data/vXX.0/limits/برای بررسی مصرف فعلی- بین درخواستها Wait اضافه کنید
- از Bulk API برای عملیات انبوه استفاده کنید (تا ۱۰,۰۰۰ در هر batch)
- از Composite API برای ترکیب چند عملیات در یک درخواست استفاده کنید
- درخواستهای غیرضروری را حذف یا cache کنید
❌ خطای FIELD_CUSTOM_VALIDATION_EXCEPTION
علت: Validation Rule سفارشی اجازه ذخیره نمیدهد
راهحل
- پیام خطا معمولاً قانون validation را توضیح میدهد
- از Setup > Object Manager > Validation Rules بررسی کنید
- دادههای ورودی را با validation rule مطابقت دهید
- ممکن است workflow rule یا trigger مشکل ایجاد کند
