Optional Submodules
When to Use
Enable optional submodules only when you need their specific functionality. The
salesforce_examplemodule is for development reference only — never enable in production.
Decision
| Submodule | Enable When | Avoid When |
|---|---|---|
salesforce_logger |
Production monitoring, debugging, troubleshooting | High-volume sites where log overhead is a concern |
salesforce_example |
Development — studying event subscriber patterns | Production — reference only |
salesforce_webform |
Pushing webform submissions to Salesforce | Not using Webform module |
salesforce_address |
Mapping Address (contrib) fields to Salesforce address fields | Not using the Address module |
salesforce_soap |
Specific operations only available via SOAP, legacy integrations | Standard use cases — prefer REST API |
Pattern
salesforce_logger — logs to database via SalesforceEvents::ERROR, WARNING, NOTICE:
- Admin route: /admin/config/salesforce/logger
- Event subscriber: /web/modules/contrib/salesforce/modules/salesforce_logger/src/EventSubscriber/SalesforceLoggerSubscriber.php
salesforce_webform — field mapping plugins for webform submissions:
- Map webform_submission entity type, bundle = specific webform ID
- Dependencies: salesforce_mapping, webform
salesforce_address — street address as textarea widget:
- Salesforce stores street as single text field; Address module uses composite field
- Widget: AddressDefaultWidgetStreetAsTextArea
- Dependencies: address
salesforce_example — reference for all event patterns:
- Push: pushAllowed, pushParamsAlter, pushSuccess, pushFail
- Pull: pullQueryAlter, pullPrepull, pullPresave
- Custom field plugin: Hardcoded example
- Reference: /web/modules/contrib/salesforce/modules/salesforce_example/src/EventSubscriber/SalesforceExampleSubscriber.php
Common Mistakes
- Wrong: Enabling
salesforce_examplein production → Right: Copy patterns from it to your custom module; never enable example modules in production - Wrong: Using
salesforce_soapfor standard CRUD operations → Right: Use REST API (salesforce.client) for all standard operations; SOAP only for Metadata API or bulk operations
See Also
- Event System
- Extension Patterns
- Reference:
/web/modules/contrib/salesforce/modules/salesforce_example/