Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· SecurityService
Demos rezervat pe o pistă, pe plumb
GET *************** Secţiunea Webinars a paginii principale a sunat /api/webinar/leads/{id} deoarece a fost scris și nimic nu a servit-o vreodată iar componenta citește un 404 ca " caracteristica Webinar este oprit" și nu redă nimic. Deci, un demo rezervat de pe site-ul de marketing a creat o pistă, a legat rezervarea de ea, și nu a arătat pe ea. Servit mai degrabă aici decât în MediaService, care deține rezervările, pentru că întrebarea un apelant are să treci primul este "poti citi acest plumb": sesiune validă, plumb în organizația apelantului, apoi LeadCommsReadGate alceva are nevoie de vedere LEAD CONTACT INFO Others, Dumnezeu ocolește. Poarta este cea de comunicare fila utilizare, numit, nu copiat. Negările sunt înregistrate prin PhiAccessAuditor; o citire nu este, deoarece Răspunsul nu conține date de contact LeadWebinarEntry este titlul, start/end, numele prezentatorului și cele două statute. Nimic despre participant dincolo de faptul dacă acestea sunt încă vin: numele și adresa vizitatorului sunt propriile și deja pe pagina. Un vizitator care anulează și înregistrează din nou produce un al doilea link către aceeași Rândul participantului, și secțiunea arată că o dată. Cele cinci eşecuri din întregul apartament ***************************************** Care steaguri ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* schimbare. Acest obiectiv rezolvă o sesiune, astfel încât clichetul să nu-l numească. 2712 teste altfel verde.
· kamo-internal
O fereastră pe care membrul o aduce pe terenurile din faţă cu o lumină pe care nu o poţi rata
Făcând clic pe un hexhead, sau banda de o fereastră în picioare în spatele, a adus fereastra înainte cu un umbra slab înflori (strip) sau o strălucire verde 600ms (hexhead) - ușor de pierdut în timp ce rândurile rearanja În jurul ei. Acum rama se aprinde: un inel în interiorul marginii ferestrei cu două comete curse În jurul ei, valurile se împrăştie din cadru şi o strălucire care ţine, aproximativ 2,4s, apoi afară. - Lit by every member gests that brings a window forward: a strip click, a hexhead click or Restaurare (instrument:focus), și orice deschis membru solicitat. Creşterile de salariu rămân liniştite. - Unul la un moment dat: cel mai nou sosire scade cel dinainte, astfel încât fereastra luminat este întotdeauna cel membru tocmai a sunat. - Miscarea redusa pastreaza tacul si scade miscarea: inelul si straluceste lumina fara miscare. - propria pereche de culori la:root (---dock-sosire, --dock-sosire-ring); bara de titlu poartă deja marca, și un inel brand dispare de-a lungul ei.
· kamo-shared-library
Un prezentator a vazut timbru, astfel încât o sesiune rezervata le poate insigna
Iconiţa de suport a Webinarului citeşte WebinarAttendee.dateViewed. Un prezentator nu este un rând participant, o sesiune rezervata cu ei a fost trimisa prin e-mail si nu a fost mentionata niciodata in aplicatie: insigna a ramas la Zero pentru o persoană care trebuie să-l ruleze. Nu-ţi face griji. (PRESENTER DATE VIEWED, nul = neprezentat) este această ștampilă pentru prezentatorul desemnat şi câştigurile WebinarRepository CountUnreviewedForPresenter / găseșteUnreviewedForPresenter cu lista de întrebări ale participantului: propriul SCHEDULED al prezentatorului sesiuni fără timbru. WebinarQueryParseTest pares ambele împotriva cartografiere. DDL, deja aplicat în baza de date live ca proprietar de masă: ALTER Table public.programat webinar ADD COLUMN DACĂ NU EXISTĂ presenter date viewed timestamp(6) fără fus orar; Cele cinci eșecuri din suita completă (SystemBugCount ContractmentTest, PhiServiceTypeMappingTest, Storage DomainCoverageTest, *************** Vizibilitatea raportului Test) nu reușesc identic pe origine/main fără această schimbare.
· kamo-marketing
Un buton demo live lângă Start Free Forever
Eroul de acasă a oferit două lucruri: începe gratuit, sau citiți prețul. Şi acum oferă o jumătate de oră cu o persoană. "Book a Live Demo," cu "30 minute" pe o a doua linie, stă la dreapta Start Free Forever și deschide / demo, fluxul de rezervare existent ("jumătate de oră cu cineva care cunoaște produsul"). Este butonul de sticlă al benzii CTA, la înălţimea şi raza de 56 px a .hero-cta, deci Start Free rămâne unul primar. Cele două butoane sunt grupate cu un decalaj 12px, şi View Pricing îi urmează. Lungimea este pe linia proprie pentru lățimea. Ca o linie, "Cărțiți o 30 de minute Live Demo" a fost 291px și a scăzut sub Start Free la 1280, 1366 și 1440 lat. Două linii fac 196px, iar perechea se potrivește coloana copie de la 1280 în sus și la 768. Numai la 1024 (o coloană 361px) și pe telefoane nu-l stiva dedesubt. Măsurată în Chrome la 390, 768, 1024, 1280, 1366, 1440 și 1920, cu nr. Deversare orizontală la oricare dintre ele. Vizualizare Preturi acum se impacheta la rândul său la lățimile laptop-ului, și care a expus sale frontieră-jos: TouchOptimized ridică link-ul la 44px înălțime odată ce pagina este Lent, astfel încât frontiera sa așezat 18px sub text și citit ca un separator. Este o textul subliniază acum, cu textul centrat în caseta sa. Cheile au mers la kamo-translation-dictionary primul (7ed8a400).
· kamo-marketing
O pagină pentru campanii de e-mail nelimitate și dripuri, legate de oriunde îi aparține
/email-marketing vinde ceea ce expediate pe 2026-09-16 (Campanii de difuzare, picurari, domenii de trimitere): nelimitat, și 100% gratuit cu Business și Enterprise. Un element îndrăzneț al paginii este slider-ul fiecare pagină de preț de introducere pe piață de e-mail se deschide cu ("Cum aveți multe contacte?"), cu excepția faptului că mutarea nu schimbă niciodată proiectul de lege. Nu citează nimic. prețul altor produse, per 206f9f3: argumentul este modelul de măsurare (niveluri de contact, certificate de expediere; Automatizare păstrat pentru planuri mai mari), și singura cifră de pe pagina este nostru $0. Totul. Cererile au fost verificate în raport cu produsul: - 14 declansatoare de picurare, trimite ferestre in zona de timp proprie a contactului, si conditii deschise / click cu sărire sau ieșire (picurareCatalog). - Cinci dintre cele zece rețete, desenate cu declanșatoarele lor reale, calendarul și ieșiri (picurareRețete.ts). - Încălzire de 14 zile cu frână de siguranţă pe blocuri şi sărituri (WarmupSettings, WarmupPlan). - Lista motive de igienă, bounce/plânge suprimarea, un-click dezabonare și gazde SMTP personalizate. - "Nelimitat" inseamna nici un capac bazat pe plan: nimic in e-mailService contorizeaza o org, si pagina spune Că încălzirea și trimite ferestrele setați ritmul. Link-uri în: nav și footer, a /fetures category, a /produs card, un callout sub /Carduri plan de preț, foaia de parcurs (Campanie de e-mail vrac se mută la Lansat), harta site-ului și Sitemap, și o nouă carte în prima pagină a lui "Stop Paying for Nine Different Tools." Un server benzi (EmailMarketingStrip) merge sub matricea caracteristică pe fiecare comparație concurent, sub "Ce este de fapt furnizat" pe fiecare pagină a industriei, pe cinci termeni glosari și pe ambele resurse articole. PLATFORM CAPABILITĂȚI, care se numește lista a ceea ce oferă KamoCRM, acum liste e-mail marketing. Patru pagini din industrie au spus că lucrurile pe care le fac acum pot fi solicitate: cursuri online, hoteluri, fitness-studios și e-commerce. Copia lor este corectată, păstrând ceea ce este încă neconstruit (trasee-platformă și declanșatoare de prezență, calendarul de ședere, segmentarea LTV, SMS) ca cerere, și fiecare element trece la un -r3 i18nKey. Verificat pe o clădire de producție locală: fiecare paznic, un traseu prerandionat, și un crom fără cap sondă (42 de verificări) la 390, 1440 și 2560 lățime care acoperă nici un pergament orizontal, nici o eroare de consolă; nici o cheie de mesaj brut, utilizarea tastaturii slider și file de rețetă, și un link în corpul paginii de fiecare pagină de mai sus. Partea dicționar este kamo-translation-dictionary 3ecaefa5.
· kamo-marketing
Joaca rola kamo14, și să fie oprit
Rola de retaiere (noua lovitura logo de inchidere, altfel cadru-identic, aceleasi 66s Timpul de funcționare și calendarul capitolelor) se publică sub numele propriu. Kamo13 scara este servită imuabilă și variantele sale liste de redare și segmente păstrează lor URL-uri orice spune maestrul ?v=, astfel încât un înlocuitor în loc nu ar ajunge la un vizitator care se întoarce. Deschiderea eroului a oferit repornire și mut, dar nici o modalitate de a opri filmul o dată Se juca. Un control pauză / joc conduce acum rândul de control, și atingând imaginea o schimbă prea; reluarea păstrează poziția. Urmează controlul. propriile evenimente de joc/pauză ale elementului, așa că rămâne chiar atunci când se termină cursa sau browserul întrerupe redarea. Aceasta acoperă ambele pagini care au inclus deschidere (acasă și pagina de taxe la nivel înalt); /watch deja pauzele prin intermediul controale native.
· KlusterServices
Codează rola kamo14
Rola de marketing a fost recutată (nouă fotografie de închidere logo) și încărcată ca public/kamo14.mp4. Are un nume nou în loc să-l înlocuiască pe kamo13. deoarece scara este servită imuabil: maestrul ?v = nu ajunge la liste de redare variante sau segmente, care păstrează URL-urile lor relative. Locul de muncă de cod acum construiește publice / hls / kamo14 / și kamo14-poster.*, și MediaMTX canal live buclă scara kamo14. Numele de cale live/kamo13 este neschimbat.
· kamo-internal
Ferestre care nu se potrivesc standului de andocare în rândurile din spatele acestuia
O fereastră instrument care nu se potrivește rândul din față acum stă într-un rând în spatele ei, o bandă titlu mai mare pe rând: bara de 42px titlu și 10px de corp arată mai sus rândul din faţă, ca filele unui teanc de dosare. Aceasta înlocuieşte Cascada, care a pus fiecare fereastră peste rând și îngropat cele mai multe dintre ele. Rândurile sunt ordinea ferestrei stabilită în primul rând (ToolDockLocation, LayoutDockStack: o fereastră intră în primul rând cu loc pentru ea, așa că rândul din faţă nu este niciodată lăsat pe jumătate gol în timp ce o fereastră care se potriveşte aşteaptă în urmă. Fiecare rând are o singură înălţime. Când banda cea mai din spate trecea pe deasupra marja, fiecare fereastră dă drumul împreună, și înălțimea vine înapoi ca Rânduri goale. Rândul, liftul și înălțimea benzii sunt scrise pe fiecare fereastra în același releu ca docuri (DockRows), și nu sunt niciodată persistate. Cine stă în față este o reordonare (toolDockTiers): - Un click pe un magazin de striptease cu fereastra din fata membrul folosit cel mai mult recent. Recența este urmărită numai de gesturile membrilor (DockMemberUse), Pentru că şi contorul Z urcă pentru creşteri. - O fereastră pe care membrul o deschide, o restabileşte din hexhead, o pune înapoi de la vedere, docuri sau ridicări dintr-o notificare este așezat în față, tranzacționare cu Fereastra din faţă a fost folosită cel mai recent. Ferestre ridicate prin mesaje primite Du-te oriunde este loc, astfel încât să nu ia locul celui în uz. - O picătură în port păstrează locul unde a fost aruncat la; cel puțin recent a folosit ferestre fata pas înapoi pentru a face loc. - O fereastră din faţă care se închide sau minimizează se înlocuieşte cu fereastra în picioare Cel mai apropiat din spate şi nimic altceva nu se mişcă. - O fereastră mai largă care vine înainte pași cel mai puțin-recent utilizate ferestre din față spate până când se potriveşte. Pe ecran (ToolWindowShell, ToolDock): - O fereastră din spate este tăiată de banda sa, care este, de asemenea, zona lovită. Este Corpul este inert, deci nu este nevoie de focalizare sau tastatură și nu pictează bara de defilare. Pictează sub fiecare fereastră din faţă şi nu i se spune niciodată că este concentrată. - Titlul benzii este un buton (aducere înainte, tastatură accesibilă), arată numărul necitit, și dims cu fiecare rând mai înapoi. - Aproape, minimiza, maximiza și float butoane acționează pe ea în cazul în care se află. Un drag care începe pe o bandă nu este, de asemenea, un clic, și nici nu este o dublu-click. - Vine înainte, fereastra cade şi se desfăşoară în slot în timp ce tranzacţionat unul se pliază şi se ridică în spate. Ambele rula pe curba de 340ms docului, apoi un Bloom umbră și o matura lumina marca sosirea. Pătrunderea unui lift de benzi şi să dezvelească mai mult. O fereastră născută în spatele se uită din spate rândul din față; unul născut în față se ridică din partea de jos, opac. - Mişcarea redusă păstrează rândurile şi umbra şi lasă mişcarea. - Resize cusături sunt doar în primul rând. Cusătura de înălțime se oprește în cazul în care cel mai din spate Strip se întâlneşte cu marginea superioară şi anunţă tavanul. Găsit pe drum, și fix: docul a transformat ferestre în ordine magazin, astfel încât orice reordonare (inclusiv recomandare Drag, înainte de această schimbare) a făcut fereastra de mutare React elemente din jurul documentului. Un element mutat pierde starea DOM: un jurnal defilat la 300 s-au întors la 0, un element media de joc este oprit, și tranziția care transportă o fereastră la noul său slot este scăzut. ToolDock acum redă ferestre în ordine de creare, care este sigur deoarece fiecare fereastră este fixat la propria sa nivel pictat. Verificat în Chrome real cu întregul doc pe corpurile de fereastră Stubbed: 64 verificări măsurate. Acoperă rânduri, clipuri şi teste, corpuri inerte şi bare de defilare, focalizare, plan, ambele direcții swap, tastatură, butoane de benzi, înălțime da-și-take, trageți dintr-o bandă, mișcare redusă, maximiza și restaura, re-curgerea televizoarelor, o cădere peste rândul din față, tavanul cusăturii și conservate pergament poziții, plus ecrane în timp real de fiecare tranziție. Noile teste de unitate și furnizor acoperă aspectul, recomanda, stivuire, coajă și doc.
· kamo-marketing
Șapte seturi de link-uri care se potrivesc nav, și cariere merge la site-ul carierei
Fotograful enumeră acum caracteristici, Servicii, Prețuri, Companie, Resurse, Soluţii legale, în această ordine. Ăştia sunt cei cinci de top ai navei. categorii plus cele două cuiburi sub resurse, și fiecare set deține Legăturile lui Nav sub etichetele navei. Etichetele provin de la namespace, care este tradus în fiecare local, astfel încât acest lucru nu adaugă nici o copie. Traducerile subsolului erau cheia identică pentru cheie. Două legături Există doar aici: Uita-te la film sub caracteristici, și Cookie Setări buton sub Legal. Produsul a fost vechiul titlu şi a dispărut. Preturile si Solutiile obtine seturi de propriile lor, si legal nu se mai impacheta singur pe un al doilea rând. Cariere este https://careers.kamocrm.com/ oriunde apare: nav's Meniul companiei (desktop și mobil), subsolul, cardul de pagină al companiei și harta site-ului. URL-ul locuiește în app/lib/cariers-site.ts. /Cariera este acum o redirecționare permanentă acolo, cum ar fi /vs, astfel încât rezultatele căutării, semne de carte și Legăturile exterioare ating şi ele rolurile deschise. Pagina de marketing pe care o înlocuiește a spus că nu au existat deschideri în timp ce site-ul carierei listează una. Pagina, componenta sa client, aspectul și imaginea OG sunt șterse. Traseul este în afara a sitemap-ului (SITEMAP EXCLUDed, cu motivul), în afara paginii contor (UNCOUNTED STATIC ROUTES) și din paginile de vânătoare, deoarece o scena nu se poate ascunde pe o pagină care redirecționează de pe site. Vânătoarea alege Pagini după modul index lista, astfel încât paginile de azi remaniere o dată pe desfăşurare, la fel ca o zi de răsturnare. Link-ul nu este rehosted per chirias modul de înregistrare./login. link-urile sunt. Numai www.kamocrm.com servește acest site astăzi. Cinci din cei opt chiriaşi domenii am verificat nu au cariere. DNS la toate, astfel încât carierele. să fie o legătură moartă cu ei. Layout: subsolul utilizează lățimea completă în loc de coloana 1280px și rândul de brand (logo și tagline, icoane sociale și telefon) stă deasupra Seturi. Seturile sunt 2 coloane pe un telefon, 3 de la sm, 4 de la md și un rând din 7 din xl. Rubrica și etichetele pot pătrunde într-un cuvânt. O traducere cuvântul poate fi mai larg decât o coloană 149px (de "Dienstleistungen"; "Anwendungsentwicklung"), și fără creşte până la cel mai lung cuvânt şi trece de coloană. Verificat împotriva paginii de rulare, nu sursa. Pe / er / despre șapte linii redă în ordine, și fiecare legătură se rezolvă la traseul său /en, cu excepția Cariere, care este https://careers.kamocrm.com/. Clicuri reale pe Cariere în Desktop Company dropdown, meniul mobil și subsolul fiecare naviga la https://careers.kamocrm.com/. /en/cariere si /de/carieri raspuns 308 la şi/cariere trece prin /en / cariere. Am măsurat fiecare coloană la 390, 768, 1024, 1280, 1440, 1920 și 2560px în en, la 390, 768 și 1280 în de, ru și fr și la 768 și 1280 în ta: nici un element nu se revarsă coloana sa și Nu există nici un pergament orizontal. Cheile de verificare au fost testate împotriva mutaţiei Footer nou (o cheie fals nav nu reușește). npm test, verificare-vânătoare, TSC și npm run build (cu paza pre- și postbuild) sunt curate.
· kamo-internal
Campanii de picurare pe /marketing/email declanseaza, un constructor vizual, oameni si performanta
/marketing/email gets a Broadcasts / Drips switch (?view=drips). Vedere picurare lista fiecare picurare ca o card cu declanșarea, secvența și numărul de vii, KPI și file de stare, căutare și sortare, și începe un nou picurare gol sau din zece rețete (bun venit noi piste, salutari ziua de nastere, întâlni noul agent, revendicat introducerea plumbului, menţinerea statutului, reluarea non-deschiderilor, urmărirea link-ului click, membru al echipei şi membru la bord, și mai mult). /marketing/email/drip is the builder: - Declanşator: un nou plumb (în funcţie de mână, import, integrare; pieţe, vânzători, produse), un statut sau substatus change from/to, a reassignment, a credit or free-for-all pretention, birthdays and aniversarys; un membru al echipei sau cont de membru creat, un email de campanie trimis / deschis / link click, nici un angajament cu o campanie după N zile, finisarea un alt picurare, sau oameni adăugat de mână. - E-mailuri pe o panza: se adauga, se multiplica, se trage la reordonare, se asteapta inainte de fiecare (minunate la saptamani, de la e-mail înainte de aceasta), o fereastră trimite pe e-mail sau pentru picurare (zile, ore, contact sau timpul organizației), și o condiție (numai dacă e-mailul anterior a fost sau nu a fost deschis sau click, altfel săriți peste sau lăsați picurarea). - Setări: De la şi Răspunde-la exact ca o campanie (alegătorii partajate), şablonul de semnătură, care poate să se alăture din nou (o dată, după plecarea cu o răcire, sau repornire) și atunci când oamenii pleacă (o schimbare de statut, o schimbare, un click). - O bandă de pregătire, Salvați (Ctrl/Cmd+S), Activați cu o explozie, Pauză, Archive, Duplicate, Șterge; nesalvat Edițiile sunt păzite și schimbarea unui coleg ajunge în direct. - Oameni: care este în picurare, în cazul în care acestea sunt și atunci când următorul lor e-mail merge, cronologie fiecare persoană, adăugați Oamenii de mână, scoate pe cineva. Performanță: alăturat / în curs / terminat / stânga, o pâlnie de e-mail, şi activitate live. Un nou picurare, gol sau dintr-o rețetă, nu este creat până la prima salvare, ca și cu o nouă campanie, astfel încât fiecare e-mail este stocat cu șablonul și subsolul de conformitate. Șablonul și subsolul editorului campaniei context mutat în utilizareCampaignEmailTemplate, împărtășit cu constructorul (organisme salvate și cereri a comparat identic înainte și după). CountUp scrie acum o prima tinta de 0 in loc de o linie. EmailService servește /api/email/picurare și rame "picurare" pe tema campaniilor; engleza este în dicţionar.
· kamo-marketing
Fiecare pagină arată de câte ori a fost văzută
Un contor de vedere stă acum la baza fiecărei pagini, în rândul de jos al subsolului alături de Sitemap și Back to top: un ochi al cărui iris este hexagonul site-ului, și figura de pe rolele de kilometraj din propriile cifre ale cititorului (Bengali's, Arabic's); Gruparea Hindi). Prima dată când pastila este pe ecran rolele rotiți în locul din stânga, şi când această vizită a fost cea care a numărat ultima Rola se răstoarnă cu una când un +1 se ridică de pe ea. Hover sau tastatură focus deschide un card cu figura si ce masoara; un robinet il deschide la atingere; un click învârte rolele din nou. Mișcarea redusă primește figura și cardul, și Nimic care să călătorească. Acesta costă pagina de încărcare nimic: - Nimic despre o vedere este citit în timp ce o pagină redă. Fiecare traseu este încă prerendered (check-static-routes: 247, santinele intacte); HTML poartă un dimensionat placeholder, astfel încât swap-ul nu se mișcă rândul. - Contele este unul POST prin coada de inactivare comună, după pagina are Încărcat, şi contează şi răspunde în aceeaşi cerere. Un cititor care pleacă înainte ca slot-ul inactiv să conteze încă: navigarea pagehide și in-site trimite un far pentru o vedere netrimisă. - Rolele, mişcarea lor şi foaia lor de stil sunt o bucată separată, adunate numai atunci când subsolul vine la 800px de ecran. - "Nu figura" raspunde 200 cu vizualizari nule, niciodata 404 sau 503, deci un KBService Repornire nu poate pune o eroare de consolă pe fiecare pagină. În cazul în care o imagine contează Nu-ţi face griji. un articol de bază de cunoștințe conteaza pe articol, de guid, astfel încât cifra este parte din datele articolului în KBService și îl urmează prin redenumite și mutări; toate celelalte pagini contează pe drumul său fără localizare, astfel încât /en/preturi și /fr/preț parts o figura. O cale contează doar dacă acest site ar servi: ruta există și slug nume un concurent real, termen glosar, serviciu, blog post, publicat articol (pe calea sa canonică) sau intrarea în jurnal. Crawlers, link unfurlers, Auditurile și webdriver-ul sunt prezentate cifra fără adăugarea acesteia, și același browser-ul trimite aceeași pagină de două ori în interiorul cinci secunde este o vizualizare. Fiecare contor începe dintr-o cifră trasată între 312,384 și 1200,384 atunci când rând este creat, plasat de prioritate site-map pagina astfel încât pagina de start începe mare și un cod de schimbare de intrare scăzut. Prioritățile de bază ale site-ului s-au mutat în SITEMAP PRIORITATE astfel încât ambele să citească o listă; kb-secțiuni.ts înlocuiește cele două copii din KB SECŢIONS verifica contorul altfel ar fi făcut trei. Rândul de jos al subsolului stivă marca made-in sub linia de copyright: cu tejghea a adăugat, trei parte de parte nu se mai potrivesc la 1440px. check-page-views.ts (preconstrucție și testare) nu reușește să construiască atunci când o rută dinamică este nu pe trasee.ts, atunci când un layout sau Footer încetează montarea contorului; sau atunci când nimic, dar handler său traseu importă rezolvatorul. Dovedită prin ştergere o intrare pe traseu, montarea Footer și inventarea unei intrări vechi: fiecare nu reușește. Necesită KBService 167981e (obiectivele/interne/vizuale) și Footer.pageViews* taste (5909948c); până când KBService este live Pur și simplu nu apare pastila.
· KBService
Numără opiniile site-ului de marketing, pe articol sau pe pagină
KBService răspunde acum la ecranul contra kamo-marketing arată la poalele Fiecare pagină. Două criterii finale, ambele {"vizoane": n} cu vederea doar numărat inclusiv: POST *************** {importanţă, numărare} Post/intern/pagini/pagini {path, importanta, numara} Un articol de bază de cunoștințe se bazează pe articolul în sine (KB ARTTICLE VIEWS, prin uid), astfel încât numărul său îl urmează prin redenumite și se mută în /kb; guid trebuie nume un articol publicat, public, după aceeași regulă articolul public utilizare finală. Fiecare pagină contează pe calea sa sub prefixul local (Marketing page views). Fiecare scriere este un upsert nativ cu citirea totală Înapoi în aceeași tranzacție, retrimis pe un conflict Yugabyte. Sub /intern, nu /api/kb/public: APIService forwards all of /api/kb/** from Api.kamocrm.com și lanțul de securitate al acestui serviciu permite totul, astfel încât o numarea obiectivului final ar exista o buclă buclă publică departe de orice cifră. ă New InternAuthFilter necesită X-Normal-Auth (mlos-intern-auth, acum montat opțional) pe întregul prefix /intern, decis pe calea deservirii decodate; și răspunde 503 mai degrabă decât deschiderea atunci când secretul lipsește. ă handler de rută site-ul de marketing este singurul apelant și face fiecare decizie despre ceea ce contează: doar pagini reale, crawlere a arătat figura fără a adăuga la aceasta, o repetare dintr-un browser în termen de cinci secunde conta o dată. Figura de pornire a contorului este desenată o dată, când rândul său este creat, între 312,384 şi 1200,384. Apelantul transmite o importanţă de la 0 la 1 (pagina sitemap priority) și PageViewSeed plasează desenul într-o bandă din jurul ei, astfel încât homepage începe mare și o intrare changelog scăzut; extreme teren exact pe Range se termină fără prindere. Semințele sunt depozitate în afara numărului Vederi, deci traficul real rămâne lizibil. Rândurile apar la prima cerere; Conte=fals creează unul fără numărare, pentru crawlere și pentru însămânțare. create page views.sql este DDL, aplicat manual în baza de date live înainte Acest impuls și potrivire ceea ce Hibernate generează pentru comun-library entități (verificate la 6.2 și 6.5). ConfigMap câștigă intern.auth.secret, La fel şi copia repo. 23 teste noi: gama de semințe și benzi, căi canonice și guide, care se declară că o vizualizare se execută, iar obiectivele finale prin filtrul real (fără secrete; secret greșit, secret nesetat, cale rea, articol necunoscut). Îndepărtarea filtrului Verificare prefix și inversarea steagul numărătoare fiecare rândul său, le roșu.
· kamo-shared-library
Contoare de vizualizare pagini pentru site-ul de marketing
Două tabele din spatele valorii de vizualizare kamo-marketing arată acum la poalele fiecare pagină, scrisă de punctele finale ale KBService /intern/page-views. KbArticleView (KB ARTICOLE VIEWS) pune la socoteală opiniile unui articol bazat pe cunoaștere cu privire la Articolul, cu cheia uid-ului său, deci contele face parte din articol și urmează atunci când este redenumit sau mutat în /kb. Este o masă proprie, mai degrabă decât o coloana despre KB ARTICOLE: rândul articol este salvat întreg de JPA, astfel încât un contor pe ar fi citit atunci când un editor a deschis articolul și a scris înapoi atunci când au salvat, aruncarea fiecare vedere între. Cheia străin cascade în baza de date, deoarece KbArticle nu cartografiază acest rând și un hibernat șterge o Altfel, articolul ar eşua. MarketingPageView (MARKETING PAGE VIEWS) contează fiecare altă pagină de pe calea sa sub prefixul local, deci /en/preturi si /fr/preturi parts un cont. Ambele păstrează SEED COUNT, figura de pornire un rând este creat cu, în afară de AviZ COUNT, punctele de vedere de fapt numărat; pagina arată suma lor, și reale Traficul rămâne lizibil de la masă. Registrele expun doar cele trei afirmaţii de care are nevoie un punct de vedere: upsert care contează, unul care semințe fără numărare, și total, citit după scrierea în aceeași tranzacție. Fără excepţie (): un contor încărcat, incrementat și salvat înapoi pierde vederi concurente. Verificat offline: o fabrică de sesiune construiește peste toate cele unsprezece entități KB plus acestea pe Hibernate 6.2.13 (KBService și alte servicii Boot 3.1) și 6.5.3 (Boot 3.3) şi scriptul schema se potriveşte cu DDL aplicat de mână, inclusiv pe piele cascadă. DDL-auto este nimeni peste tot, dar iniţializator, deci niciun alt serviciu nu atinge mesele.
· kamo-internal
Logo-ul Lifestyle, al patrulea logo pe marcă și filigranul de fundal implicit
Comportamentul și etichetarea câștigă un slot Logo Lifestyle alături de logo-ul complet, logo-ul simplu și pictograma filă, în ambele rânduri ale companiei și ale software-ului (etichetă albă). Este nevoie de lucrări de pixel și vectori deopotrivă: o SVG sau un raster este păstrat exact ca ales, un EPS/AI/PDF este convertit pe drum în (nici un browser nu poate desena unul), și un raster oferă "Convert to vector," care deschide ImageToSVGConverter comun numai atunci când membru întreabă. Ca pictograma fila, fiecare slot are un comutator (un upload îl activează, server-side prea) și un subtitrare care spune ceea ce o suprafață de viață va trage de fapt, din forma nesalvat. Logo-ul stilului de viață implicit pentru logo-ul complet atunci când nu este setat. Pentru fiecare brand, rezolvaLogoVariant in temă/marcă.ts este lanțul: logo-ul stilului de viață software atunci când este utilizat, altfel software-ul complet logo atunci când acesta suprascrie compania una, altfel logo-ul de viață al companiei atunci când este utilizat, altfel logo-ul complet al companiei. stil de viațăLogo.ts prevede același lanț ca subtitrări; un test trece atât peste toate cele 32 de state de formă. Background Watermark oferă Logo Lifestyle primul, și este implicit: nul și valori necunoscute rezolva la LIFESTYLE, care atrage logo-ul complet până când există logo-ul stilului de viață, astfel încât nici o schimbare a filigranului org până când încarcă unul. Fiecare loc care pictează filigranul (BackgroundWatermark, Backdrop, eroare și Pagini negăsite) trece acum prin WatermarkVariant / watermarkLogoFile. - /Rețea/creare: un grup logo Lifestyle cu aceeași admisie, încărcat după org există ca tip = lifestyle; pickerul de filigran oferă Lifestyle primul și forma implicit pentru ea. - Setare expert: Logos devine companie și alb-eticheta stil de viață sloturi (arată cel viu atunci când este utilizat), Backgrounds oferă filigran Lifestyle, și orgDetails rezolvă implicit în același mod. - Schema traseului orga lui citește bgWatermark ca un șir simplu. Acesta.parse()s, astfel încât vechi ["NU" , FULL" , SIMPLE"] enum ar fi aruncat pe întregul record org pentru un rând LIFESTYLE; Organizaţia. De la JSON rezolvă în schimb valorile necunoscute. Cele patru domenii de viață plimbare record org prin OrgContext, și DynamicMetaLoader păstrează ***************** de la config.json. are nevoie de kamo-shared-library f22a867d și tipurile de încărcare a serviciilor de securitate (împrăștiat mai întâi), și tastele dicţionarului (în primul rând, în fiecare locaţie).
· SecurityService
Logo-ul stilului de viață încarcă, config.json tastele, și filigran LIFESTYLE
Logo-ul stilului de viață este un al patrulea logo pentru fiecare marcă (companie și alb-etichetă), rendition decorativ filigran de fundal acum trage implicit. Retragerea sa este logo-ul complet. - upload-logo ia tip = lifestyle și tip = lifestyle-software. Fișierul păstrează extensia reală (Arta fotografică este binevenită, urmărirea unui raster este alegerea membrului la timpul de încărcare) sub **************** inregistreaza coloana, iar incarcatura comuta logo-ul pe, în contractul icoanelor. Un raster este, de asemenea, oglindit sub numele .svg ca un stand-in, ca plin logo-uri, astfel încât o suprafață care nu a citit extensia încă arată încă propria operă de artă a orgii. - config.json names logoLifestyleExt / logoLifestyleSoftwareExt numai în timp ce logo-ul este utilizat (încărcat și pornit); absent înseamnă că logo-ul complet se află în. - Creare sarcină utilă păstrează bgWatermark LIFESTYLE în loc să-l scadă la nul. - *************** adaugă cele patru coloane anulate. Aplicată manual pe viu cluster pe 2026-09-16, înainte de schimbarea entității kamo-împărtășit-library a fost împins.
· kamo-shared-library
Coloanele logo-ului stilului de viață și LIFESTILE ca filigran implicit
Logo-ul stilului de viață este o a patra piesă de brand pe brand, alături de logo-ul complet, simplu logo-ul și pictograma tab-ului: redarea decorativă a filigranului de fundal se trage implicit. Este format exact ca perechea de pictogramă tab: logo lifestyle ext (și software-ul său twin) este scris numai de Securitatea Obiectivul de încărcare al serviciului din fișierul pe care l-a stocat și se dublează ca marker "unul există"; logo lifestyle enabled este comutatorul de lângă el. PUS /org/{id} poate petici cele două comutatoare, niciodată Extensii. bg watermark acum documente LIFESTYLE, care fiecare client rezolvă nul la. Este logo-ul complet pentru ca Atâta timp cât o org nu are logo-ul stilului de viață în uz, astfel încât nimeni nu vede schimbări până când unul este încărcat. Cele patru coloane provin de la *********** aplicate manual pe grup live înainte de această împingere: orice serviciu Java construit după ce le SELECTează pe fiecare org citit.
· EmailService
Campanii de picurare
O picurare este o secvență automată de e-mailuri pe care o persoană le introduce atunci când ceva se întâmplă: o pistă ajunge (de mână, importate, sau de la o integrare), un plumb statutul sau modificările substatale, o pistă este realocată sau revendicată cu un credit, a Ziua de naştere sau aniversarea lui Lead vine, un membru al echipei sau un cont de membru este creat, un e-mail de campanie este trimis, deschis, click sau merge fără răspuns, cineva termină un alt picurare, sau un membru le adaugă manual. Fiecare e-mail are propria sa Aşteptaţi, trimiteţi fereastra (în org sau în fusul orar al persoanei de contact) şi condiţia cum a făcut e-mailul anterior. Trimit. Un e-mail de picurare este coadă pe o campanie ediție ascunsă per (pas, ciclu) Prin ************* astfel încât să iasă exact ca o campanie e-mail: opt-out și controale de eligibilitate, gazdele de eliberare, încălzire și trimite fereastra, DKIM, urmărire, dezabonare, salturi și outbox înscenat. Ediţiile sunt lăsat în afara listei de campanii, instantaneu, widget acasă și progresul și cadre de angajament, și criteriile de campanie răspunde 404 pentru unul. Motor (picurare/DripEngine): fiecare 5s pe fir propriu în leasing e-mail-drip-motor, se scurge e-mail drip triggers (ieși mai întâi, apoi Înscrierea), matura zilele de naștere și aniversările o dată pe zi org-locală și mută fiecare persoană datorată pe: așteaptă conta de la momentul în care e-mailul anterior a fost de fapt trimis, un salt sau opt-out se termină rula, o persoană este citit din nou înainte de fiecare e-mail (mijlocie token-uri: prenume, agent nume, piață și restul) și o cursă terminată Să începem cu picături în lanţ. Reintrarea este o dată, din nou după finisare (cu o răcire) sau repornire; regulile de ieșire scoate oamenii pe o schimbare de stare, a Reasignment sau un click pe un link de picurare. API: /api/email/drips (listă, opțiuni, CRUD, activ, pauză, arhivă, unarchive, duplicate, persoane, înscriere manuală, îndepărtarea, cronologie, activitate); VEDE BULK EMAIL pentru a citi și managerul BULK EMAIL pentru a schimba. Live: tip "picurare" cadre pe tema campaniilor, coalesced pe secundă. Campania trimite, prima deschide și link click-uri (acum cu URL) sunt predate Kamo-shared-library DripTriggerRecorder. Mesele şi coloanele ediţiei au fost aplicat de mână ***************** înainte de această comitere.
· SecurityService
O pistă importată este înregistrată ca importată
LeadImportController creat fiecare rând cu două argumente crea Lead, astfel încât o Istoria lui plumb a spus sursă API cu nimeni care acționează, exact ca unul trimis în prin furnizorul de admisie API. Nimic nu ar putea spune un import de la o integrare, și campanii de picurare care încep pe "un nou plumb ajunge" oferă alegerea între piste adăugate manual, importate sau din integrări. Rândurile sunt acum create cu sursă de import. Construită împotriva bibliotecii kamo-shared b5b56d6d, a cărui istorie de plumb, de asemenea, mâinile noi conduce, modificări de stare, reasignments, creanțe private și conturi noi ale membrilor la motorul de picurare.
· kamo-internal
Răspunsul editorului campaniei este o alegere
Mesajul liber Răspunsul-To sub De la devine campanieReplyToPicker, trei opțiuni pe care fiecare spune unde răspunde teren: - NoReply (default): NoReply@<the campanie's From domain>, de ex. NoReply@hello.kamocrm.com, "which does not primise e-mail" - E-mailul deputatului: editarea membrului, afișată prin adresă. O campanie ale cărei răspunsuri merg deja la un coechipier Arată colegul de echipă până când cineva alege opțiunea din nou. Un membru fără e-mail pe profilul lor nu-l poate alege. - Personalizat: o cutie verificata asa cum este tastata, modul in care EmailService o verifica pe salvare. Logica este ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* adresa, NoReply when not), alege, afișează adresa și construiește câmpurile de salvare (replyTo, replyToMode, Răspunsulla nivelul UE). O adresă personalizată neterminată reţine Salvează şi apare în lista de verificare. Previzualizarea arată Răspunsul-Pentru destinatar va primi.
· kamo-shared-library
Campania de picurare declanseaza, inregistrata unde conduce si membrii se schimba
Campaniile de picurare încep atunci când ceva se întâmplă în CRM, astfel încât locurile care schimbarea pistelor și membrii acum mâna aceste evenimente la EmailService lui picurare motor: - LeadHistoryService: un fir creat (cu cum a ajuns: manual, importat, sau dintr-o integrare sau o formă), o modificare a statutului sau substatusului cu ambele laturi, si o schimbare de la un membru al echipei la altul. - *************** o pistă de rezervă revendicată prin cheltuirea unei credit (plătit sau gratuit pentru toți), care nu înregistrează nici un istoric de plumb propriu. - Serviciul Membru: un cont membru sau membru al echipei creat. Oglinda platformei Rândul nu este un nou membru al org furnizor și începe nimic. DripTriggerRecorder le scrie la *************** care Scurgerea motorului. Scrie doar pentru o orga a carui picurare activa asculta pentru acest tip (regulă de declanșare sau ieșire, citit cel mult la fiecare 30 de ani), mâinile peste după cauza tranzacție se angajează, și scrie pe propriul fir și conexiune, astfel încât un plumb scrie nu poate eșua sau rola înapoi din cauza unui picurare. Un plumb creat Void (un test plumb sau un duplicat) nu este cineva de bun venit. EmailCampaignEntity maps drip id, drip step id and drip cycle: a drip email trimite printr-o campanie ediție ascunsă per (pas, ciclu), astfel încât păstrează fiecare Trimite garanţie că o campanie are. Coloanele și tabelele au fost aplicate manual înainte de acest angajament (e-mailservice ***************
· kamo-marketing
Deschide lunar, și vinde termeni 1- și 3 ani ca blocare în rata de astăzi
Cei mai mulți cumpărători vin să compare ceea ce ar plăti cu nici un angajament, așa Termenul limită este acum lunar. /preturi, homepage plan strip, /calculator și marca produsului încă deschisă pe același termen împreună. Termenii mai lungi sunt ceea ce șina vinde de acolo: o rată mai mică pe scaun, blocat la Preţul de astăzi pentru întregul termen. - Sprâncenele șinei se citesc "Lock în rata de astăzi pentru 1 sau 3 ani" și un fraza de sub linie spune ce face termenul selectat: lunar nu are angajament; anual și 3 ani dețin prețul de astăzi pentru 12 luni sau 3 Ani, chiar dacă preţurile cresc. Toate cele trei note împărtășesc o celulă grilă, așa alegerea unui termen nu mută niciodată cărțile de mai jos, în orice limbă (măsurat în en, de and ja). Ambele linii sunt echilibrate, astfel încât un telefon nu se leagă una Cuvânt. - linii de termen card și calculator conduce cu "Rate blocat timp de N luni." - Lunar, linia de salvare a cardului scade "peste termen," care pe o - pe termen lung a repetat doar cifra lunară de lângă aceasta. - Homepage strip subtitrat pretul "pe loc pe un termen {luni}-an," care lunar ar fi citit ca un termen de 0.083 ani; acum spune facturat lunar, cu un an de blocare și 3 ani lângă ea. - descrierea cautarii /preturii numeste pretul pe trei ani ca o blocare-in, Şi pagina expirată indică acelaşi lucru. check-produs-oferte fixat trei ani implicit (49, 32.83 dolari). Ea acum pini lunar (69 $, 46.23), astfel încât o schimbare tăcută de implicit încă nu se construiește. Copia este în kamo-translation-dictionary, scris de mână în toate 20 locale traduse. Acelaşi impuls restabileşte 340 de valori pe ziua de azi. Care nu a reușit acest repo prebuild copy guard pentru fiecare clădire de atunci.
· EmailService
Răspunsurile unei campanii merg la NoReply, e-mail-ul membrului, sau o adresă personalizată
Răspunsul editorului devine trei opțiuni (CampaignReplyTo), păstrate în coloana de răspuns to. Fără DDL. - NO REPLY (coloană goală, implicit): Răspuns-To: NoReply@<the From's domain>, scris de NoReplySenderService ca orice altă adresă NoReply. Primitorul vede înainte de a scrie că nimeni nu-l citește, și Postfix-k3m1-inbound refuză ceea ce este trimis acolo. - Membru (membru: <id>): e-mailul membrului care l-a ales, a privit în sus atunci când fiecare mesaj este compus (CampanieReplyTombers, a păstrat cinci minute), astfel încât este urmată o adresă modificată. Un membru fără e-mail cade înapoi la NoReply mai degrabă decât numirea unei adrese nimeni nu primește. - CUSTOM (o adresă): verificat pe salvare, gol și cu un domeniu punctat; orice altceva este un 400 spune de ce. Salvare transmite răspunsMode și răspunde către UEId. Răspunsurile pot merge la salvarea membrului, sau stau cu membrul deja ales atunci când un coechipier salvează, dar niciodată la un alt membru ales de ID. Un editor înainte de alegerea trimite Doar o adresă: una este custom, niciuna nu este NO REPTY. Modelul de citire a campaniei adaugă un răspunsMode și un răspuns către UEId, si raspunsTo devine adresa pe care o prezinta editorul (adresa personalizata sau e-mailul membrului).
· kamo-internal
Outbound E-Mail Gazde arată releele în vrac ca serverele care primesc le văd
O carte "Bulk relee" deasupra gazdelor platformei: releul comun fiecare organizație trimite domenii concediu prin (contact.kamocrm.com, 47.1818.8.86) și a organizației platformei proprii (allo.kamocrm.com, 47.181.8.87). - Fapte: de unde pleacă poşta fiecărui releu, de unde EmailService ajunge în grup, şi pentru cei împărţiţi releu dacă sign-in este configurat și cât de multe domenii verificate trimite prin ea. - controale, fiecare dreapta, diferite, lipsă sau nu a răspuns: adresa numelui (A), politica expeditorului (SPF), unde sarituri merge (MX, care pentru releul comun trebuie să vină înapoi la propria adresă), adresa invers DNS (PTR) și cheia de semnare a releului platformei (DKIM). Un record care nu este corect arată ce ar trebui să fie lângă ce are DNS. - Reverse DNS spune că este stabilit de furnizorul de internet care deține adresa, astfel încât nimeni nu se uită pentru ea la DNS gazda. Un lookup care nu a primit nici un răspuns este "Couldn't check," niciodată "wrong." - Citeste de la GET ************* cand se deschide fila si pe "Verifica acum." Niciodată. Sondat, o re-verificare eșuată păstrează ceea ce este pe ecran, și fără MANAGE OUTBOUND EMAIL HOSTS nu redă nimic.
· KlusterServices
Sarituri pentru domeniile de trimitere ale organizatiilor ajung EmailService prin postfix-k3m1-inbound
O campanie trimisă prin releul comun are domeniul său de trimitere al organizației ca plicul său expeditor, iar acest domeniu este un CNAME pentru a contacta. kamocrm.com, al cărui MX este 47.181.8.86 Deci... server de primire care a acceptat un mesaj și nu l-au putut livra după toate scrie raportul de livrare Aici şi până acum a fost refuzat. - Domeniile de trimitere provin de la EmailService (relay-senders?format=domenii: VERIFIFICATE și ELAILING), citit la Start şi fiecare minut. Doar nume simple de gazde ajung vreodată la o masă, și un aduce fără răspuns păstrează ultima listă. - Fiecare domeniu ia doar expeditorul nul, adică bounces și servere verificarea că adresa există. Oricine altfel devine 550 "Această adresă trimite e-mail, dar nu-l primesc." - Ceea ce este luat merge la o teava sidecar bounces-mail, dezabonare postfix principal mail.py cu INCLUSIVE RAW, posteaza-l la Nu-ţi face griji. - stiva.împrumuturi, mail.stack.împrumuturi și contact.kamocrm.com funcționează exact ca înainte, și nimic aici trimite la internetul. Testat într-un pod alpine aruncaway cu același scenariu: expeditor nul 250, o persoană 550, postmaster@ și abuz@ 250, alte domenii și aspect-asemănător 554, un DSN îmbinat cu jetonul său și coada goală, o modificare de listă aplicată într-un minut, şi un pachet fără răspuns care să păstreze ultima listă.
· EmailService
Sărituri pentru a org trimite domenii vin acasă, Trimisurile de testare sunt semnate, și releele "DNS este citit
Async sare. Scrisorul de plicuri al unei campanii este din domeniul de trimitere al organizaţiei, al cărui MX (prin CNAME pentru a contacta.kamocrm.com) este propria adresă a releului comun. Postfix-k3m1 va lua Rapoartele de livrare acolo şi postează-le la POST *************** forma de admisie a plângerii: - LivrareStatusReport citește un raport real RFC 3464 (mesaj/livrare-status) și jetoanele din mesaj returnat. Un salt proza nu este niciodată ghicit. - BounceMailService înregistrează un eșec permanent (Acțiune: eșuat, 5.x.x) ca BOUNCED pe rândul destinatar nume jetoane, prin calea de livrare-eveniment releele folosesc deja. O întârziere, un răspuns automat sau un raport fără nici un semn nu schimbă nimic, iar un raport spam-plângere este înmânat la aportul plângere. -releu-senders?format=domeniile listează domeniile VERIFICATE și SCAILING de trimitere pentru care acceptă rapoarte. Test trimite de la Setări → Email → Trimiterea sunt semnate DKIM cu cheia din domeniu, exact ca campanie e-mail este (DkimSemning, împărtășit cu campania PrimitorSender), astfel încât un test prin releu partajat arată ce o campania va. DNS releele. GET Nu-ţi face griji. Citeşte, pentru fiecare releu, numele său este A record și SPF, MX (pentru releul comun, înapoi la propria adresă), DNS inversat de adresa sa, și cheia DKIM releu platforma. Rezolvatorul DNS câştigă căutările PTR.
· KlusterServices
Postmaster@ și abuzs@contact.kamocrm.com ajunge la KamoCRM
contact.kamocrm.com este numele releului comun (47.181.8.86's PTR, MX contact.kamocrm.com) și MX al acestuia. este 47.181.8.86 → k3m1, în cazul în care răspunsurile postfix-k3m1-inbound. Furnizorii de mailbox autorizează cine conduce un IP prin poștamaster@/abuse@ din domeniul său PTR, astfel încât cei care acum teren: postmaster@ în căsuța poștală postmaster, abuz@ și fbl@ la abuzs@hello.kamocrm.com, care principala postfix mâinile la plângerea EmailService Aport cu o copie pentru poştaş. Repornire de intrare postfix-k3m1 aprobată de Sage.
· kamo-internal
Bulk Email devine Domain Setup și sub-tab-uri, /marketing / email explică ceea ce lipsește, campanii obține un De la picker
Configurări → E-mail → E-mail vrac este acum patru sub-tabe în ?sub: Setare domeniu · Trimiterea · Opt Out · Livrare. Membrul aterizează pe Domain Setup până când un domeniu de trimitere este verificat și la Trimitere după. Până atunci celelalte sub-tabe arată o blocare și să rămână focalizat; deschiderea unul explică ceea ce este pentru, cât de departe cel mai bun domeniu a venit, și link-uri înapoi. Opţiunea şi eliberarea le păstrează dreapta (MANAGE EMAIL OPT OUTS sau proprietarul) și se deplasează în neschimbat; vechiul ?tab=opt-out și ?tab=livrare link-uri redirecționare la sub-tab lor, și meniul de intrare și de aterizare carte de urmat. Fiecare sub-tab îşi pune propriile cuvinte în calea ferată. Domain Setup este construit pentru cineva care nu a editat DNS: un erou cu trei pași și unul sunt pe (sau "Bulk e-mail este gata pentru a trimite"), un card pe domeniu cu puncte de înregistrare live și "Verificat acum 8 secunde · verificarea automata" si un flux de adauga-un-domeniu (domeniul org preumplută și ordonată pe blur cu schimbarea explicată, un clic pe nume de trimitere, o previzualizare live, și o privire denunțată care spune de ce un nume nu poate fi folosit înainte de Continue). Configurarea unui domeniu (?domeniul=) arată pașii furnizorului DNS detectat, fiecare înregistrare în cuvinte simple cu butoane de copiere și starea sa live ("vedem X, ar trebui să fie Y," fix pentru fiecare cod indiciu), Copiați toate ca instrucțiuni, alternativa no-CNAME în spatele unei dezvăluiri, Verificați acum, Elimină (refuzat în față în timpul utilizării, cu motivul serverului afișat dacă încă refuză) și cu un conștient redus de mișcare moment de succes care duce la "Alege-ţi adresa." Totul citeşte GET *************** prin proxy-ul existent şi rămâne Traiesc peste *********** fara sondaje, recitiri silentioase, scrieri adopta întregul stat, și o citire eșuată sau refuzată este o eroare sau o notă de acces, niciodată o listă goală. /marketing/email: fără campanii și fără domeniu verificat statul gol este un explicator (de ce, trei pași, "Aranjează domeniul meu" sau cine îl poate termina fără MANAGE EMAIL SETTINGS); o campanie lista primeste un banner compact care absoarbe linia no-hosts, si un domeniu esuat este numit in rosu cu o legătură cu configurarea sa. Nimic nu arată în timpul de încărcare sau pe o citire eșuată. Banner-ul de blocare a mesajelor link-uri NO SELLING DOMAIN și DE LA DOMAIN NOT VERIFICATE la configurarea domeniului. Editorul de campanie De la este un picker: expeditorul implicit, sau o adresă pe un domeniu verificat (parte locală, domeniu, De la nume), salvată de la Email/de la Nume; salvată de pe un domeniu neverificat este avertizat cu privire la o legătură la configurarea sa. setărileMenuTabCoverage învață și verifică fiecare sub-tab legat există.
· EmailService
Campanie de mail este semnat ca, trimis de la, și rutat de domeniul său de trimitere verificate
O campanie poate numi propria sa De pe un domeniu verificat; în caz contrar, merge ca expeditor în vrac a org lui trebuie să fie pe un domeniu verificat (salvareSender refuză orice altceva). CampaniaDe la alege releul de acest domeniu, deoarece SPF este decis de adresa unui releu frunze de la: un domeniu verificat doar o org prin releul comun de org (47.181.8.86), Hello.kamocrm.com KamoCRM numai prin releul platformei (47.181.8.87), orice altă gazdă pentru oricare, și un neverificat de nicăieri. Eliberatorul ia datoria Primitor în primul rând, apoi o gazdă gata campania sa poate utiliza; o campanie cu nimeni nu așteaptă în timp ce orga lui alte campanii merge. Mail ca domeniu verificat al unui org este semnat DKIM după ultima salvareChanges, cu sesiunea interzis de la Conversia la 8 biți pe drum. Nou trimite blocanți NO Sending DOMAIN și de la DOMAIN NOT VERIFICATE. Rapoartele de livrare se bazează pe încălzirea releului prin care a fost trimisă campania. Campania de trimitere KamoCRM este neafectată: noreply@hello.kamocrm.com este gestionat-platformă, așa că păstrează lăsându-se prin .87, și releul comun este oprit în rotație KamoCRM lui.
· EmailService
Domain Setup API, harta expeditorului releului comun, și o matura care confirmă înregistrările live
Nu-ţi face griji. GET fila (VIEW BULK EMAIL), GET up pentru formularul de adăugare, POST adăugați, POST {id}/check, DELETE (MANAGE BULK EMAIL); fiecare scrie răspunsuri cu toată fila și un refuz numele câmpului său. - Nu. dă postfix-orgs domeniul său verificat harta. Prezentare generală în vrac câștigă domenii {gata, verificat, în așteptare, în lipsa} pentru poarta. TrimitereDomainSweep re-citește DNS pe cadență (15s în timp ce un domeniu este în curs de înființare) sub un leasing, pe o fir propriu: fiecare @Scheduled task here parts Spring's single programation thread with the releaver care trimite e-mail campanie în fiecare secundă, și de așteptare pe nameservers acolo ar bloca trimiterea.
· EmailService
Trimiterea de domenii adăugați unul, citiți înregistrarea DNS prin înregistrare, verificați-l, știu ce o adresă poate face
Un domeniu de trimitere (news.acme.com) este păstrat pe blogul criptat al furnizorului de vrac din org cu cheia DKIM. TrimitereDomainChecker citește ceea ce receptoarele vor vedea SPF evaluat pentru adresa releului comun, cheia noastră la selectorul său, o politică DMARC la domeniu sau un părinte contact.kamocrm.com, DKIM TXT, DMARC) și alternativa SPF TXT + MX, și numește greșelile obișnuite: un nume dublu al zonei, un Cloudflare CNAME, un nume care are deja înregistrări, un CNAME în altă parte, două Înregistrările SPF, prea multe căutări, o cheie scurt, o politică malformată sau moștenită, și " recordul este dreapta, partea KamoCRM nu este în direct încă." TrimitereDomainService adaugă (curățarea unui URL sau a unei adrese lipite, refuzul kamocrm.com chiriașilor), controale, elimină (nu în timp ce este expeditorul implicit sau o campanie activă), și mută statutul: PELLING / FAILING → VERIFICAT pe o trecere; VERIFICAT → EȘUGIT numai după două eșecuri șase ore distanță; o pană DNS modificări Nimic. Raspunde traseului de trimitere (Bună ziua.kamocrm.com, numai pentru KamoCRM) sau UNVERIFF domenii. Modificări publicate *****************

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit