70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
# Kontakty a CRM
|
||
|
||
## Model Contact
|
||
|
||
`App\Models\Contact` – tabulka `contacts`
|
||
|
||
| Sloupec | Typ | Popis |
|
||
|---------|-----|-------|
|
||
| `id` | bigint | PK |
|
||
| `team_id` | bigint | Příslušnost k týmu |
|
||
| `email` | string | E-mail (unikátní per team) |
|
||
| `name` | string | Celé jméno |
|
||
| `phone` | string | Telefon |
|
||
| `source` | string | Zdroj (`web`, `eshop`, `import`...) |
|
||
| `user_id` | string | ID zákazníka v externím systému |
|
||
| `tags` | json | Pole tagů |
|
||
| `flags` | json | Slovník příznaků (user_id, kampaně...) |
|
||
| `traits` | json | Vlastnosti kontaktu |
|
||
| `meta` | json | Libovolná metadata |
|
||
| `identify_token` | string | Token pro identifikaci z emailového odkazu |
|
||
| `last_activity_at` | timestamp | Poslední aktivita |
|
||
| `email_opt_out_at` | timestamp | Datum odhlášení z emailů |
|
||
| `internal` | boolean | Interní kontakt (nezapočítává se do statistik) |
|
||
| `smartemailing_id` | int | ID v SmartEmailing |
|
||
| `vario_ids` | json | ID záznamu v Vario ERP |
|
||
|
||
## Identifikace (IdentityLinker)
|
||
|
||
`App\Services\Tracking\IdentityLinker` zajišťuje propojení anonymního `visitor_id` s `Contact`:
|
||
|
||
```
|
||
visitor_id ──► visitor_identities ──► contact_id
|
||
```
|
||
|
||
### Metody
|
||
|
||
- **`identify($teamId, $data)`** – párování podle emailu; vytvoří kontakt pokud neexistuje; backfilluje `contact_id` ke starším eventům
|
||
- **`identifyByToken($teamId, $data)`** – párování přes `ftclid` (click token z emailové kampaně); dohledá `EmailCampaignSend` → `Contact`
|
||
- **`contactIdForVisitor($teamId, $visitorId)`** – rychlý lookup mapping
|
||
|
||
## Segmenty
|
||
|
||
`Segment` sdružuje kontakty do skupiny. Každý segment má:
|
||
- **`FunnelColumn`** – sloupce (stavy), ve kterých se kontakt nachází (Kanban-style)
|
||
- **`FunnelRule`** – pravidla pro přechod mezi sloupci
|
||
- **`FunnelState`** – aktuální stav konkrétního kontaktu v segmentu
|
||
|
||
## Tagy
|
||
|
||
Kontakty lze tagovat. Tagy jsou uloženy jako JSON pole. Přidávání tagů probíhá přes:
|
||
- `SetTagDriver` (akce automace)
|
||
- `SmartEmailingAddTagDriver` (sync do SmartEmailing)
|
||
- Automaticky při kliknutí na kampaňový email (`email_campaign:{id}`)
|
||
|
||
## Import kontaktů
|
||
|
||
- **CSV import** – `ContactsImportCsv` Livewire + `JsonContactImporter`
|
||
- **Vario sync** – `VarioSyncContacts` command / `SyncVarioContactsJob`
|
||
- **SmartEmailing webhook** – `SmartEmailingWebhookController`
|
||
|
||
## Firmy (Company)
|
||
|
||
Kontakty mohou být přiřazeny k firmám (`Company` model). Firmy se synchronizují z Vario ERP přes `VarioSyncCompanies`.
|
||
|
||
## Odhlášení z emailů
|
||
|
||
- `email_opt_out_at` – globální odhlášení
|
||
- `EmailCategoryUnsubscribe` – odhlášení z konkrétní kategorie emailů
|
||
- Unsubscribe link vede na `UnsubscribeController` nebo `EmailUnsubscribeController` (TOR-friendly doména)
|