مستندات n8n
74+ نود
☁️

سیلزفورس

Salesforce

اتوماسیون CRM، مدیریت Leads، Opportunities، Cases و Custom Objects در Salesforce

بازاریابی
پیشرفته
۰ بازدید
n8n 1.0+

نمای کلی

نود 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. 1وارد Salesforce Setup شوید
  2. 2به مسیر **App Manager** بروید (Setup > Apps > App Manager)
  3. 3روی New Connected App کلیک کنید
  4. 4اطلاعات پایه را پر کنید:
  • Connected App Name: n8n Automation
  • API Name: n8n_Automation
  • Contact Email: ایمیل ادمین
  1. 1Enable OAuth Settings را فعال کنید
  2. 2Callback URL را وارد کنید: آدرس callback n8n شما
  3. 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)
  1. 1Save کنید و ۲ تا ۱۰ دقیقه صبر کنید
  2. 2Consumer Key و Consumer Secret را کپی کنید

#### تنظیم در n8n:

  1. 1Credentials > Salesforce OAuth2 API
  2. 2Client ID (Consumer Key) و Client Secret (Consumer Secret) را وارد کنید
  3. 3Environment: Production یا Sandbox
  • Production: login.salesforce.com
  • Sandbox: test.salesforce.com
  1. 1روی Connect کلیک کنید و اکانت Salesforce را تایید کنید

روش ۲: API Token (Username-Password Flow)

⚠️ توجه: این روش امنیت کمتری دارد و Salesforce توصیه به استفاده از OAuth2 می‌کند.

#### مراحل دریافت Security Token:

  1. 1وارد Salesforce شوید
  2. 2به Settings > My Personal Information > Reset My Security Token بروید
  3. 3روی Reset Security Token کلیک کنید
  4. 4Token جدید به ایمیل شما ارسال می‌شود

#### تنظیم در n8n:

  1. 1Credentials > Salesforce API
  2. 2فیلدها را پر کنید:
  • Username: ایمیل Salesforce شما
  • Password: رمز عبور + Security Token (بدون فاصله)
  • Environment: Production یا Sandbox
  • Client ID و Client Secret: از Connected App
  1. 1Test Connection بزنید

نکات امنیتی:

  • از OAuth2 با refresh token برای Production استفاده کنید
  • IP Range را در Connected App محدود کنید
  • دسترسی Profile و Permission Set را مدیریت کنید
  • Security Token در Password Flow به انتهای رمز عبور اضافه می‌شود
  • به صورت دوره‌ای Security Token را تغییر دهید
  • از اکانت Integration User اختصاصی استفاده کنید

عملیات‌های موجود

1

contact-create

ایجاد مخاطب جدید در Salesforce CRM

2

contact-get

دریافت اطلاعات کامل یک مخاطب

3

contact-update

ویرایش فیلدهای یک مخاطب موجود

4

lead-create

ایجاد سرنخ فروش جدید

5

lead-convert

تبدیل Lead به Account، Contact و Opportunity

6

account-create

ایجاد حساب سازمانی جدید

7

account-update

ویرایش اطلاعات حساب سازمانی

8

opportunity-create

ایجاد فرصت فروش جدید در Pipeline

9

opportunity-update

ویرایش فرصت فروش و تغییر مرحله Pipeline

10

case-create

ایجاد کیس پشتیبانی جدید (Service Cloud)

11

case-update

ویرایش وضعیت و اطلاعات کیس پشتیبانی

12

task-create

ایجاد وظیفه جدید مرتبط با رکورد

13

note-create

ایجاد یادداشت مرتبط با یک رکورد

14

soql-query

اجرای کوئری SOQL (Salesforce Object Query Language) برای جستجوی پیشرفته

15

report-get

اجرای گزارش Salesforce و دریافت نتایج

16

custom-object-create

ایجاد رکورد جدید در یک Custom Object

17

custom-object-update

ویرایش رکورد موجود در Custom Object

18

record-delete

حذف هر نوع رکورد از Salesforce (Contact, Lead, Account, etc.)

19

record-get-all

دریافت لیست رکوردهای یک آبجکت با فیلتر و صفحه‌بندی

کاربردهای متداول

کاربردهای رایج

۱. ثبت خودکار Lead از فرم‌های وب‌سایت

هر بار که فرمی در سایت شما پر شود، یک Lead جدید در Salesforce ثبت شود.

code
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 به مرحله خاصی برسد، اقدامات خودکار انجام شود.

code
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 به حد آستانه رسید، خودکار تبدیل شود.

code
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 ثبت کنید.

code
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 تبدیل و مسیریابی کنید.

code
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، امتیاز را محاسبه و به‌روزرسانی کنید.

code
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 و فروش روزانه ارسال شود.

code
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 کنید.

code
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 خودکار آغاز شود.

code
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

لیدهای سرد را با ایمیل‌های خودکار گرم کنید.

code
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.

code
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 را بررسی و تمیز کنید.

code
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 ولی با تفاوت‌های مهم:

code
// جستجوی پایه
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

code
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 فیلد استفاده کنید:

code
// در Custom Field، "External ID" را فعال کنید
// سپس با PATCH /sobjects/Contact/Email__c/test@example.com
// Salesforce خودکار create یا update انجام می‌دهد

۴. مراحل Pipeline فروش پیش‌فرض Salesforce

code
Prospecting          → شناسایی اولیه
Qualification        → ارزیابی نیاز
Needs Analysis       → تحلیل نیازها
Value Proposition    → ارائه ارزش
Id. Decision Makers  → شناسایی تصمیم‌گیرندگان
Perception Analysis  → تحلیل ادراک
Proposal/Price Quote → ارائه پیشنهاد
Negotiation/Review   → مذاکره
Closed Won           → بسته شده - موفق
Closed Lost          → بسته شده - ناموفق

۵. Custom Fields - نام‌گذاری و شناسایی

code
// فیلدهای سفارشی با __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 استفاده کنید:

code
// با 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 ارسال کنید:

code
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 حرفه‌ای

code
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 برای دسته‌بندی استفاده کنید

code
// دریافت RecordType ID
SELECT Id, Name FROM RecordType WHERE SObjectType = 'Account'

// ایجاد رکورد با RecordType
{"Name": "Test", "RecordTypeId": "012xxx"}

۱۰. Pagination برای نتایج بزرگ SOQL

SOQL حداکثر ۲,۰۰۰ رکورد در هر query برمی‌گرداند:

code
// درخواست اول
SELECT Id, Name FROM Contact LIMIT 2000

// اگر nextRecordsUrl وجود داشت
GET /services/data/vXX.0/query/next-cursor-id
// تا دریافت تمام نتایج

۱۱. Salesforce Trigger Events

رویدادهای مهم برای Platform Events و Streaming API:

code
// Platform Events (Real-time)
Order_Event__e → سفارش جدید
Support_Alert__e → هشدار پشتیبانی

// Change Data Capture
ContactChangeEvent → تغییر مخاطب
OpportunityChangeEvent → تغییر فرصت

۱۲. از Formula Fields برای محاسبات خودکار استفاده کنید

بجای محاسبه در n8n، از Formula Fields در Salesforce استفاده کنید:

code
// مثال Formula Field
Days_Since_Last_Activity__c = TODAY() - Last_Activity_Date__c
Deal_Score__c = Amount * Probability / 100

۱۳. Owner Assignment خودکار

معاملات و Leads را بر اساس منطق خودکار assign کنید:

code
IF (Lead.Industry = "Technology" AND Lead.State = "CA")
  → OwnerId = techSalesRepId
ELSE IF (Lead.AnnualRevenue > 1000000)
  → OwnerId = enterpriseSalesRepId
ELSE
  → Round Robin بین تیم فروش

۱۴. تست در Sandbox قبل از Production

code
// همیشه ابتدا در Sandbox تست کنید
Environment: test.salesforce.com (Sandbox)
Environment: login.salesforce.com (Production)

// Sandbox رایگان با Developer Edition
// Full Sandbox با Enterprise/Unlimited

۱۵. بهینه‌سازی SOQL Queries

code
// بد: دریافت همه فیلدها
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

code
// Salesforce دو نوع ID دارد:
// 15-character (case-sensitive): 001D000000INjVe
// 18-character (case-insensitive): 001D000000INjVeIAL
// همیشه از 18-character استفاده کنید
// API به صورت پیش‌فرض 18-character برمی‌گرداند

۱۷. Report API برای گزارش‌های آماده

بجای نوشتن SOQL پیچیده، از گزارش‌های آماده Salesforce استفاده کنید:

code
// اجرای گزارش
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 بررسی کنید آیا رکورد وجود دارد:
code
SELECT Id FROM Lead WHERE Email = 'test@example.com'
  • از الگوی Upsert استفاده کنید:
code
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 مشکل ایجاد کند
اشتراک‌گذاری:

آیا این مستندات مفید بود؟