Přeskočit obsah

Technická reference: SmartEmailing

Datový model

Entity

  • ContactList (ContactList): Reprezentuje seznam kontaktů ve SE.
    • smartEmailingId: ID seznamu v API.
    • name, publicName, senderName, senderEmail.
  • ContactItem (ContactItem): Pivotní entita (vazba M:N mezi Kontaktem a Seznamem).
    • contact: Vazba na Kontakt.
    • contactList: Vazba na Seznam.
    • status: Stav (confirmed, unsubscribed, removed, ...).
  • Contact (rozšíření):
    • smartEmailingId: ID kontaktu v API.
    • smartEmailingCustomField...: Dynamicky generovaná pole.

Logika synchronizace

CRM -> SmartEmailing (Push)

  • Trigger: beforeSave hook nad entitou Contact.
  • Třída: Espo\Modules\SmartEmailing\Repositories\Contact -> updateOrCreateContact.
  • Mapping: Pevně daný mapping (FirstName, LastName, Address...) + dynamické Custom Fields.

SmartEmailing -> CRM (Pull)

  • Trigger: Job SESynchronize.
  • Třída: Espo\Modules\SmartEmailing\Tools\SmartEmailing\Client::synchronize.
  • Logika:
    • getAllContactLists() -> Update/Create ContactList.
    • getContactsInList() -> Update/Create ContactItem.
    • Nemění samotná data kontaktu (jméno, email), pouze příslušnost k seznamům.

API Klient

Modul používá knihovnu keltuo/php-smartemailing (SmartEmailing API v3). Wrapper: Espo\Modules\SmartEmailing\Tools\SmartEmailing\Client.