Connect via OAuth 2.0 with PKCE
Modern Salesforce authentication using a Connected App. No static API keys, no secrets in `wp-config`. Refresh tokens rotate automatically, so the connection stays alive indefinitely. A Web-to-Lead / Web-to-Case Org ID fallback is included for orgs without API access (some Essentials and Professional editions).
Connect Multiple Salesforce Accounts
Connect as many Salesforce accounts as you want to a single WordPress site – sandbox + production, agency client orgs, parent + subsidiary structures. Each Gravity Forms feed independently picks which account it syncs to. One account is auto-selected as the default so simple setups don’t have to think about it.
Send to Any Salesforce Object
Map Gravity Forms entries to Lead, Contact, Account, Opportunity, Case, Campaign, Task, or any custom object ending in `__c`. The Object dropdown is built dynamically from your org’s actual schema, so you’ll always see the real list of objects the connected user can create.
Field Mapping
Map any Gravity Forms field to any Salesforce field on the chosen object. Required Salesforce fields are flagged with an asterisk. Field types are matched automatically – date to date, email to email, picklists to dropdowns. Static values, merge tags, and Gravity Forms field references are all supported.
Live-Sync Picklist Mapping
Pull Salesforce picklist values directly into Gravity Forms dropdowns, multi-selects, radios, and checkboxes. Two modes per field: **Populate** copies the picklist values once and lets you edit them, or **Live Sync** refreshes the choices on every form render so your form always matches Salesforce. State and Country picklists show the friendly label to users (e.g., “California”) but submit the underlying picklist value (e.g., `CA`) – so they work correctly without any translation table.
Match Existing Records – No Duplicates
Enable Primary Key matching on Email, External ID, or any filterable / idLookup / externalId field. The plugin updates existing records when there’s a match and creates new ones when there isn’t. Built-in 404 auto-recovery transparently creates a fresh record if the matched Salesforce record was deleted while you weren’t looking.
File Uploads
Gravity Forms file upload fields are attached to the Salesforce record as ContentVersion / ContentDocumentLink, so they appear in the record’s Files related list. Configurable max file size (1-25 MB per file).
Full Lifecycle Sync
Edit a Gravity Forms entry and the Salesforce record updates automatically. Trash an entry and the Salesforce record stays put, since trashing in WordPress is reversible. Restore from trash and sync resumes. Permanently delete and the Salesforce record is removed (when you’ve enabled that option in plugin settings).
Per-Entry Salesforce Sidebar + Re-send Button
Every Gravity Forms entry detail screen shows live sync status: color-coded status, clickable Record ID that opens directly in Salesforce, the account that handled the sync, sync timestamp, error message (when applicable), and a per-feed breakdown when multiple feeds run on the same form. The Re-send to Salesforce button retries the entire sync – record, files, notes, and Campaign membership.
Salesforce Logs with CSV Export
A dedicated Salesforce Logs page captures every sync attempt with full request/response context. Filter by form, paginate through history, or export the whole thing as a CSV for audits.
Prefill Forms from Salesforce
Send returning users a personalized form with their existing Salesforce data already filled in – useful for renewals, profile updates, and customer portals. HMAC-signed URLs with TTL prevent record-ID enumeration on public forms. The signed-link generator is built right into feed settings.
Notes, Campaigns, and Owner Assignment
Push form data into a Salesforce Note attached to the parent record. Auto-add new Leads or Contacts to a Salesforce Campaign as a CampaignMember. Set a custom OwnerId per feed (with merge tag support) and toggle the `Sforce-Auto-Assign: FALSE` header per feed when you need to bypass standard assignment rules.
Conditional Logic and Payment Add-on Aware
Use Gravity Forms’ native conditional logic to send different submissions to different objects, accounts, or feeds. The “Process feed only when payment is received” option defers the Salesforce sync until Stripe, PayPal, or any other payment add-on confirms a successful transaction.
Email Notifications and Developer Hooks
Get email alerts when a sync fails, with the entry ID and the exact Salesforce error message. The `pb_gfsf_payload` filter lets developers mutate the outgoing payload with full sync context (feed, entry, form, object, account, method) for any custom routing or transformation logic.
WordPress Multisite Compatible
Network-activate once and start syncing across subsites. Network Mode is available on Unlimited license plans for centralized license and settings management.