Salesforce Supported Objects & SOQL
Reference for supported Salesforce object types, extracted fields, SOQL query structure, and custom SOQL overrides.
Supported Object Types
VersionForge ships built-in SOQL mappings for the following Salesforce objects. Each mapping defines which fields to extract, the ID field, and the timestamp field used for incremental filtering.
Opportunity
Revenue pipeline data including stage, amount, forecast category, and related account/owner.
| Field | Description |
|-------|-------------|
| Id, Name | Record identity |
| StageName, Amount, Probability | Pipeline metrics |
| CloseDate, ForecastCategory, ForecastCategoryName | Forecasting |
| Type, LeadSource, IsClosed, IsWon | Classification |
| FiscalYear, FiscalQuarter | Period alignment |
| OwnerId, Owner.Name | Ownership (flattened to Owner_Name) |
| AccountId, Account.Name, Account.Industry | Account context |
Opportunity Line Item
Product-level detail on opportunities for revenue decomposition.
| Field | Description |
|-------|-------------|
| OpportunityId, Opportunity.Name | Parent opportunity |
| Product2Id, Product2.Name, Product2.ProductCode | Product reference |
| Quantity, UnitPrice, TotalPrice, ListPrice, Discount | Pricing |
| ServiceDate | Revenue recognition date |
Account
Customer and prospect records with firmographic data.
| Field | Description |
|-------|-------------|
| Id, Name, Type, Industry | Identity and classification |
| AnnualRevenue, NumberOfEmployees | Firmographics |
| BillingCountry, BillingState, BillingCity | Geography |
| OwnerId, Owner.Name | Ownership |
| ParentId, Parent.Name | Account hierarchy |
Contact
People associated with accounts.
| Field | Description |
|-------|-------------|
| Id, FirstName, LastName, Name, Email, Phone | Identity |
| Title, Department | Role |
| AccountId, Account.Name | Account linkage |
| MailingCountry, MailingState | Geography |
User
Salesforce users for ownership and organizational reporting.
| Field | Description |
|-------|-------------|
| Id, Username, Name, Email | Identity |
| Title, Department, Division, CompanyName | Org structure |
| IsActive | Active status |
| UserRole.Name, Manager.Name, Profile.Name | Role hierarchy |
Contract
Account contracts with term and status data.
| Field | Description |
|-------|-------------|
| ContractNumber, Status | Identity and lifecycle |
| AccountId, Account.Name | Account linkage |
| StartDate, EndDate, ContractTerm | Duration |
Relationship Flattening
Salesforce relationship traversals (e.g. Account.Name, Owner.Name) are automatically flattened to underscore-delimited keys in the extracted record: Account_Name, Owner_Name. This keeps the output schema flat and compatible with planning tool imports.
Incremental Extraction
All objects use SystemModstamp as the incremental filter field. When a sync runs with a since timestamp, VersionForge generates:
SELECT ... FROM Opportunity
WHERE SystemModstamp > 2026-04-11T00:00:00Z
ORDER BY SystemModstamp ASC
SystemModstamp is preferred over LastModifiedDate because it captures system-level changes (workflow field updates, formula recalculations) that don't update LastModifiedDate.
Custom SOQL Overrides
If the built-in field mappings don't cover your use case, you can provide a custom SOQL query per object type in the sync profile configuration:
{
"customSoql": {
"opportunity": "SELECT Id, Name, Amount, Custom_Field__c FROM Opportunity WHERE RecordType.Name = 'Enterprise'"
}
}
Custom SOQL replaces the built-in query entirely for that object type. The REST vs. Bulk API selection still applies based on estimated row count.
Custom SOQL must include the Id field. Records without an ID are silently skipped during extraction.