Travel House OÜ · protsessi dokumentatsioon
CRM-automatiseerimise vood
Kuidas päring liigub kodulehe vormist Pipedrive’i ja edasi Meriti arveni — iga automatiseeritud voog visuaalselt.
Süsteemi üldvaade
Neli päringukanalit suubuvad ühte Core Routerisse, mis kirjutab Pipedrive’i. Müügi poolel liigub deal Meriti arveni ja makse tuleb tagasi. Iga voog raporteerib vea korral Adminile.
flowchart TB
AOH["Kiirpäring
(koduleht)"]:::src
RP["Reisipäring
(Typeform)"]:::src
HP["Hotellipäring
(Typeform)"]:::src
EM["info@ postkast
(e-kirjad)"]:::src
CR{{"Core Router
valideerimine · dedupe · sildid"}}:::router
PD[("Pipedrive
kontakt · Lead/Deal · note · sildid")]:::store
WV["Waavo tellimused"]:::wip
MA["Merit — arve loomine"]:::merit
MB["Merit — makse sünk"]:::merit
ERR["Veateavitus → Admin"]:::err
AOH --> CR
RP --> CR
HP --> CR
EM --> CR
CR --> PD
WV -.-> PD
PD -->|"deal: Arve esitatud"| MA
MA --> PD
MB -->|"deal: Arve makstud"| PD
PD -.->|makse Meritis| MB
CR -.-> ERR
MA -.-> ERR
MB -.-> ERR
classDef src fill:#eef5f0,stroke:#1f6b4c,stroke-width:1.5px,color:#14261f;
classDef router fill:#e3f0e8,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef store fill:#ffffff,stroke:#47584f,stroke-width:1.5px,color:#14261f;
classDef merit fill:#e5eef6,stroke:#2d6ea8,stroke-width:1.5px,color:#14261f;
classDef wip fill:#fbeee6,stroke:#b5562a,stroke-width:1.5px,stroke-dasharray:4 3,color:#14261f;
classDef err fill:#fbf4ef,stroke:#b5562a,stroke-width:1.2px,color:#47584f;
Leadide jaotamine agentidele käib Pipedrive’is Roundrobini kaudu — automaatika viib kõik kirjed ühe kasutaja alla ja RR jaotab need edasi.
Core Router töökorras
Süsteemi süda. Iga kanal kutsub seda. Valideerib e-posti, otsustab: uus kontakt → Lead, olemasolev avatud kirjega → märge (duplikaadikaitse), olemasolev ilma → Deal. Iga kirje saab note kogu vormi infoga, kanalisildi ja täidetud detailiväljad.
flowchart TB
IN["Kanali sisend
email · nimi · telefon · sihtkoht · periood · allikas"]:::start
V{"E-post kehtiv?"}:::dec
IN --> V
V -->|"ei"| K1["Loo kontakt"]:::warn
K1 --> KL["Loo Lead
⚠ KONTROLLIDA"]:::warn
KL --> KM["Teavita Admini"]:::warn
KM --> KN["Note + silt
PUUDULIKUD ANDMED"]:::warn
V -->|"jah"| S["Otsi kontakt
e-posti järgi"]:::step
S --> E{"Kontakt olemas?"}:::dec
E -->|"ei"| N1["Loo kontakt"]:::ok
N1 --> N2["Loo Lead"]:::ok
N2 --> N3["Note + kanalisilt
+ detailiväljad"]:::ok
E -->|"jah"| D1["Päri kliendi
dealid + leadid"]:::step
D1 --> D2{"Avatud kirje
olemas?"}:::dec
D2 -->|"jah"| DM["Lisa märge
olemasolevale"]:::warn
D2 -->|"ei"| DD["Loo Deal"]:::ok
DD --> DN["Note + detailiväljad"]:::ok
D1 --> L1["Püsiklient / VIP
kontakti sildid"]:::ok
classDef start fill:#eef5f0,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef dec fill:#fbfaf6,stroke:#8a7f66,stroke-width:1.3px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;
classDef warn fill:#fbeee6,stroke:#b5562a,stroke-width:1.4px,color:#14261f;
Duplikaadikaitse: sama e-post + juba avatud Lead/Deal → uut kirjet ei looda, lisatakse märge. Kliendisildid: Püsiklient (varasem deal üle 2 nädala vana) · VIP (üle 3 deali). Omanikku ei määrata — jaotab haldur.
AOH kiirpäring töökorras
Kodulehe vorm salvestab päringu WordPressi andmebaasi (tõe allikas) ja saadab sama info n8n-i. Andmebaasi salvestus ja AOH API kutse ei sõltu n8n-ist — kui webhook peaks tõrkuma, päring ei kao ja Kevin saab teate.
flowchart LR
F["Kodulehe
kiirpäringu vorm"]:::start
DB[("WordPress DB
salvestus")]:::store
AOH["AOH API
(agentonholidays)"]:::ext
WH["n8n webhook
(header-auth)"]:::step
NM["Normaliseeri väljad"]:::step
CR{{"Core Router"}}:::router
ML["E-kiri Kevinile
(kui webhook tõrgub)"]:::warn
F --> DB
F --> AOH
DB --> WH
WH --> NM --> CR
WH -.->|tõrge| ML
classDef start fill:#eef5f0,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef store fill:#ffffff,stroke:#47584f,stroke-width:1.5px,color:#14261f;
classDef ext fill:#f3eee4,stroke:#8a7f66,stroke-width:1.3px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef router fill:#e3f0e8,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef warn fill:#fbeee6,stroke:#b5562a,stroke-width:1.3px,color:#14261f;
Kogu reisiinfo (sihtkoht, hotell, kuupäevad, reisijad, eelarve) koondatakse Pipedrive’i lead’i note’i, mitmerealisena.
Reisipäring & hotellipäring töökorras
Kaks eraldi Typeform-vormi, mõlemad sama mustriga. Erinevus on ainult allikasildis (Pipedrive’is eristatav) ja väljade hulgas — hotellipäring on detailsem.
flowchart LR
T1["Reisipäring
(Typeform)"]:::src
T2["Hotellipäring
(Typeform)"]:::src
NM["Normaliseeri väljad
→ message"]:::step
CR{{"Core Router"}}:::router
PD[("Pipedrive
Lead/Deal + note")]:::store
T1 -->|"source: reisipäring"| NM
T2 -->|"source: hotellipäring"| NM
NM --> CR --> PD
classDef src fill:#eef5f0,stroke:#1f6b4c,stroke-width:1.6px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef router fill:#e3f0e8,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef store fill:#ffffff,stroke:#47584f,stroke-width:1.5px,color:#14261f;
Allikasilt kannab pealkirja: Pipedrive’is on kirje “REISIPÄRING — Nimi” vs “HOTELLIPÄRING — Nimi”, nii on kanal kohe näha.
info@ postkast valmis
Jälgib üldpostkasti ja loob otse kirjutanud klientidest leadid. Automaatkirjad eraldatakse tehniliste päiste järgi — see ei vaja hooldust ega tasulisi teenuseid.
flowchart TB
M["Uus kiri info@"]:::start
F{"Automaatkiri?
päised + must nimekiri"}:::dec
X["jäetakse vahele"]:::mut
L["Loe välja
telefon · sihtkoht · reisiaeg"]:::step
K{"Kahtlane?"}:::dec
A["Lead
allikas: e-post"]:::ok
B["Lead
e-post (kontrollida)"]:::warn
CR{{"Core Router"}}:::router
M --> F
F -->|"jah"| X
F -->|"ei"| L --> K
K -->|"ei"| A --> CR
K -->|"jah"| B --> CR
classDef start fill:#eef5f0,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef dec fill:#fbfaf6,stroke:#8a7f66,stroke-width:1.3px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;
classDef warn fill:#fbeee6,stroke:#b5562a,stroke-width:1.4px,color:#14261f;
classDef router fill:#e3f0e8,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef mut fill:#f4f2ec,stroke:#c9c2b2,stroke-width:1px,color:#8a7f66;
Blokitakse: automaatvastused, uudiskirjad, postiloendid ja vastused olemasolevale kirjavahetusele (need pole uued päringud). Lisaks käsitsi hallatav must nimekiri. Kahtlased ei kao — need luuakse eraldi märkega.
Merit — arve loomine töökorras
Kui deal jõuab staadiumisse “Arve esitatud”, luuakse Meritis müügiarve — maksmata. Arve number on unikaalne ja kannab deali ID-d, et makse hiljem õige dealiga seostuks. Reisiteenus on 0% (erikord KMS §40).
flowchart LR
DC["Deal muutus
(Pipedrive)"]:::start
ST{"Staadium =
Arve esitatud?"}:::dec
MK["Koosta arve
TH-<deal>-<aeg> · 0%"]:::merit
SN["Saada Meritisse
(maksmata)"]:::merit
NT["Märge dealile
(arve nr)"]:::ok
DC --> ST
ST -->|"jah"| MK --> SN --> NT
ST -.->|"ei"| X["—"]:::mut
classDef start fill:#eef5f0,stroke:#1f6b4c,stroke-width:2px,color:#14261f;
classDef dec fill:#fbfaf6,stroke:#8a7f66,stroke-width:1.3px,color:#14261f;
classDef merit fill:#e5eef6,stroke:#2d6ea8,stroke-width:1.5px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;
classDef mut fill:#f4f2ec,stroke:#c9c2b2,stroke-width:1px,color:#8a7f66;
Arve on juriidiline dokument. Enne aktiveerimist: raamatupidaja kinnitab KM-käsitluse ja üks test-arve vaadatakse Meritis üle.
Merit — makse tagasisünk töökorras
Iga 15 minuti tagant küsitakse Meritist laekunud makseid. Kui meie arve (TH-deal-aeg) on makstute seas, loetakse numbrist deali ID ja deal liigub ise “Arve makstud” staadiumisse.
flowchart LR
SC(["Iga 15 min"]):::clock
GP["Päri Meriti maksed
(getpayments)"]:::merit
FI["Leia TH-arvete maksed
→ loe deal ID numbrist"]:::merit
UP["Vii Deal → Arve makstud"]:::ok
SC --> GP --> FI --> UP
classDef clock fill:#eef5f0,stroke:#1f6b4c,stroke-width:1.6px,color:#14261f;
classDef merit fill:#e5eef6,stroke:#2d6ea8,stroke-width:1.5px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;
Makset kontrollitakse arve numbri alusel. Idempotentne — juba “Makstud” deali uuesti liigutamine ei tee kahju.
Waavo tellimused ehitamisel
Waavo tellimused on juba makstud — need muutuvad kohe Deal’iks. Voog ootab Waavo API ligipääsu: päringud käivad läbi WordPressi serveri, mille IP tuleb Waavo nimekirja lisada.
flowchart LR
SC(["Iga 15 min"]):::clock
WO["Päri Waavo
makstud tellimused"]:::wip
DP{"Juba
töödeldud?"}:::dec
RR["Vormista tellimus"]:::step
DL["Loo Deal
+ Waavo ID"]:::ok
MK["Märgi töödelduks"]:::step
SC --> WO --> DP
DP -->|"ei"| RR --> DL --> MK
DP -.->|"jah"| SKIP["jäta vahele"]:::mut
classDef clock fill:#eef5f0,stroke:#1f6b4c,stroke-width:1.6px,color:#14261f;
classDef wip fill:#fbeee6,stroke:#b5562a,stroke-width:1.5px,stroke-dasharray:4 3,color:#14261f;
classDef dec fill:#fbfaf6,stroke:#8a7f66,stroke-width:1.3px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;
classDef mut fill:#f4f2ec,stroke:#c9c2b2,stroke-width:1px,color:#8a7f66;
Dedupe-tabel väldib sama tellimuse topelt-töötlemist, kui pollimine kattub.
Veateavitus töökorras
Kui ükskõik milline voog tootmises tõrgub, saab Kevin e-kirja voo nime, vea, tõrkunud sammu ja käivituse lingiga. Käivitub ainult päris (mitte käsitsi test-) käivituste tõrke korral.
flowchart LR
ANY["Ükskõik milline
voog tõrgub"]:::warn
ET["Error Trigger"]:::step
MSG["Koosta veateade
(voog · viga · samm · link)"]:::step
ML["E-kiri Kevinile"]:::ok
ANY --> ET --> MSG --> ML
classDef warn fill:#fbeee6,stroke:#b5562a,stroke-width:1.5px,color:#14261f;
classDef step fill:#ffffff,stroke:#47584f,stroke-width:1.3px,color:#14261f;
classDef ok fill:#e3f0e8,stroke:#1f6b4c,stroke-width:1.4px,color:#14261f;