At a Glance
- Bi-directional sync - products, pricing, inventory, and images flowing reliably between Salesforce and website
- 3 months - from discovery to production deployment
- Custom integration - built from scratch for a CMS with no native Salesforce support
- Zero duplicates - re-sync logic that updates existing records without creating redundant entries
Lead Web Engineer and Client Manager responsible for building (via Solspace Inc.) a custom bi-directional Salesforce integration for Buck’s Trucks, a commercial truck dealership specializing in used and refurbished beverage trucks. With over 25 years in business selling medium and heavy-duty trucks nationwide, their sales team needed their website inventory to stay in sync with Salesforce without manual data entry.
The challenge: ExpressionEngine has no native Salesforce integration capabilities, and Salesforce’s API has its own complexities. I built a custom synchronization system from scratch that keeps products, pricing, inventory levels, and product images synchronized between both systems.
The Challenge
Buck’s Trucks manages their inventory and sales process in Salesforce. Before the integration, keeping the website updated meant manual data entry: adding new trucks, updating pricing, managing stock status, and uploading multiple photos per vehicle. This created friction for both the sales team (who had to wait for updates) and marketing (who had to perform the data entry).
Key complexity factors:
- ExpressionEngine has no built-in Salesforce support, requiring a fully custom integration
- Salesforce’s API presents unique challenges around rate limits, data formatting, and authentication
- Bi-directional sync is inherently more complex than one-way pushes, requiring conflict handling and source-of-truth decisions
- ExpressionEngine’s file handling made image synchronization particularly difficult
- Re-syncs needed to update existing records without creating duplicates, a common failure point in integration work
What I Built
Custom Salesforce Integration Layer
Since ExpressionEngine offered no native support, I built a complete integration layer using CodeIgniter:
- API connection handling managing Salesforce OAuth, rate limits, and error recovery
- Data mapping layer translating between Salesforce object structures and ExpressionEngine’s content model
- Bi-directional sync logic determining which system is authoritative for each data type
Product & Inventory Synchronization
- Product data sync pulling truck details, specifications, and categorization from Salesforce
- Pricing sync ensuring website pricing reflects current Salesforce values
- Inventory status automatically marking trucks as sold or available based on Salesforce updates
- Update detection syncing only changed records to minimize API calls and processing time
Image Synchronization
The most technically challenging aspect was reliable image sync:
- Multi-image handling syncing multiple photos per truck from Salesforce to the website
- Duplicate prevention using unique identifiers to update existing images rather than creating redundant files
- File system integration working around ExpressionEngine’s file handling limitations
- Image metadata preserving proper associations between trucks and their photos
Removing Workflow Friction
- Eliminated manual data entry: Sales team updates Salesforce; the website updates automatically
- Reduced time-to-publish: New inventory appears on the website without waiting for manual entry
- Prevented data drift: Single source of truth in Salesforce eliminates inconsistencies between systems
- Automated image management: Photos added in Salesforce sync to the website without manual uploads
- Reliable re-syncs: System handles ongoing updates without creating duplicate products or images
This project demonstrates what’s often required when connecting business systems to websites: building custom integration infrastructure because off-the-shelf solutions don’t exist. The combination of a CMS without native integration support, a CRM with a complex API, and bi-directional sync requirements meant every component needed to be engineered specifically for Buck’s Trucks’ workflow.
Interested in Similar Work?
If you're looking for similar solutions or want to discuss your project, I'd be happy to help.
Implemented solutions:
- E-commerce and Warehouse Data Sync
- Custom E-commerce Functionality
- Flexible Content Management
- Automatic Data Synchronization
- CRM Integration