Technical Reference: SmartEmailing¶
Data Model¶
Entities¶
- ContactList (
ContactList): Represents a contact list in SE.smartEmailingId: List ID in API.name,publicName,senderName,senderEmail.
- ContactItem (
ContactItem): Pivot entity (M:N relation between Contact and List).contact: Link to Contact.contactList: Link to List.status: Status (confirmed,unsubscribed,removed, ...).
- Contact (extension):
smartEmailingId: Contact ID in API.smartEmailingCustomField...: Dynamically generated fields.
Synchronization Logic¶
CRM -> SmartEmailing (Push)¶
- Trigger:
beforeSavehook onContactentity. - Class:
Espo\Modules\SmartEmailing\Repositories\Contact->updateOrCreateContact. - Mapping: Fixed mapping (FirstName, LastName, Address...) + dynamic Custom Fields.
SmartEmailing -> CRM (Pull)¶
- Trigger: Job
SESynchronize. - Class:
Espo\Modules\SmartEmailing\Tools\SmartEmailing\Client::synchronize. - Logic:
getAllContactLists()-> Update/CreateContactList.getContactsInList()-> Update/CreateContactItem.- Does not change contact data itself (name, email), only list membership.
API Client¶
The module uses the keltuo/php-smartemailing library (SmartEmailing API v3).
Wrapper: Espo\Modules\SmartEmailing\Tools\SmartEmailing\Client.