Skip to content

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: beforeSave hook on Contact entity.
  • 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/Create ContactList.
    • getContactsInList() -> Update/Create ContactItem.
    • 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.