Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · SecurityService

    Die Demos gebucht auf einer Führung, an der Spitze

    GET ************ Die Webinars-Sektion der Lead-Seite hat aufgerufen /api/webinar/leads/{id', da es geschrieben wurde und nichts es jemals serviert hat - die Live-API antwortet 404, und die Komponente liest eine 404 als "die Webinar-Funktion ist aus" und macht nichts. Also eine Demo gebucht von der Marketing-Website erstellt einen Lead, verknüpft die Buchung, und nie darauf angezeigt. Hier und nicht in MediaService, die die Buchungen besitzt, serviert, weil die Frage ein Anrufer hat Zunächst passieren ist "möge du diesen Lead lesen": gültige Sitzung, führen in der Organisation des Anrufers, dann LeadCommsReadGate - eigener Lead braucht kein Recht, ein nicht zugewiesenes braucht VIEW_UNASSIGNED_LEADS, jemand andere Bedürfnisse VIEW_LEAD_CONTACT_INFO_OTHERS, Gott umgeht. Das Tor ist die, die Kommunikation Registerkarte verwendet, aufgerufen, nicht kopiert. Verleugnungen werden durch PhiAccessAuditor aufgezeichnet; eine Lektüre ist nicht, weil die die Antwort keine Kontaktdaten - die gleiche Zeile, die der Endpunkt zieht /communications/zählt. LeadWebinarEntry ist Titel, Start/Ende, Moderatorenname und die beiden Status. Nichts über die Teilnehmer darüber hinaus, ob sie noch kommen: der Name und die Adresse des Besuchers sind der eigene und bereits auf der Seite. Ein Besucher, der absagt und sich registriert, produziert einen zweiten Link zum gleichen Teilnehmerreihe, und die Sektion zeigt das einmal. Die fünf Ausfälle in der kompletten Suite ************ x4, ************************ Welche Flaggen ************ nicht dies) scheitern identisch auf Herkunft/Main ohne dies Veränderung. Dieser Endpunkt löst eine Sitzung, so dass die Ratsche sie nicht benennt. 2712 Tests sonst grün.

  2. · kamo-internal

    Ein Fenster, das das Mitglied mit einem Licht in die vorderen Länder bringt, das Sie nicht verpassen können

    Ein Klick auf einen Hexkopf, oder der Streifen eines Fensters, das hinten steht, brachte das Fenster mit einem schwache Schattenblüte (Streifen) oder ein 600ms grüner Schein (Hexkopf) - leicht zu verlieren, während die Reihen neu ordnen rund um sie. Jetzt leuchtet der Rahmen selbst auf: ein Ring innerhalb des Fensterrandes mit zwei Kometen Rennen runden, Wellen aus dem Rahmen und ein Leuchten, das hält, etwa 2,4s, dann aus. - Lit von jeder Geste, die ein Fenster nach vorne bringt: ein Streifenklick, ein Hexhead-Klick oder Wiederherstellen (tool:focus), und jede offene das Mitglied gefragt. Incoming Erhöhungen bleiben ruhig. - Eins nach dem anderen: die neueste Ankunft dimmt die vor, so dass das beleuchtete Fenster ist immer die Mitglied hat gerade angerufen. - Reduzierte Bewegung hält das Stichwort und lässt die Bewegung fallen: der Ring und Leuchten leuchten ohne Bewegung. - Das eigene Farbpaar bei :root (--dock-arrival, --dock-arrival-ring); die Titelleiste trägt bereits die Marke, und ein Markenring verschwindet entlang.

  3. · kamo-shared-library

    Ein Moderator angesehen Stempel, so dass eine gebuchte Sitzung kann sie abzeichen

    Die Webinar-Zählung des Support-Symbols liest WebinarAttendee.dateViewed. Ein Moderator ist keine Teilnehmerreihe, so eine Sitzung mit ihnen gebucht wurde per E-Mail und dann nie in der App erwähnt: die Plakette blieb bei Null für die eine Person, die es laufen muss. ************ (PRESENTER_DATE_VIEWED, null = noch nicht abgebildet) ist der Stempel für der zugewiesene Moderator und ScheduledWebinarRepository Gewinne zählenUnreviewedForPresenter / findUnreviewedForPresenter mit dem Prädikat der Teilnehmerinnen: das eigene SCHEDULED des Moderators Sitzungen ohne Stempel. WebinarQueryParseTest parsiert beide gegen das Mapping. DDL, bereits auf die Live-Datenbank als Tabellenbesitzer angewendet: ALTER TABLE public.scheduled_webinar ADD COLUMN IF NOT EXISTS presenter_date_viewed timestamp(6) ohne Zeitzone; Die fünf Ausfälle in der kompletten Suite (SystemBugCountContractTest, PhiServiceTypeMappingTest, StorageDomainCoverageTest, **************** ReportVisibilityTest) scheitert identisch auf Ursprung/Main ohne diese Änderung.

  4. · kamo-marketing

    Eine Live-Demo-Taste neben Start Free Forever

    Der Heimheld bot zwei Dinge an: Starten Sie frei, oder lesen Sie die Preise. Es jetzt auch bietet eine halbe Stunde mit einer Person. "Buchen Sie eine Live-Demo", mit "30 Minuten" auf einem zweite Linie, sitzt rechts von Start Free Forever und öffnet /demo, die vorhandener Buchungsfluss ("Eine halbe Stunde mit jemandem, der das Produkt kennt"). Es ist die CTA-Streifen Glas-Taste, bei .hero-cta 56px Höhe und Radius, so Start Free bleibt die eine primäre. Die beiden Tasten sind mit einem 12px-Lücke gruppiert, und View Pricing folgt ihnen. Die Länge ist auf einer eigenen Linie für die Breite. Wie eine Zeile, "Buchen Sie eine 30-Minute Live Demo" war 291px und fiel unter Start Free bei 1280, 1366 und 1440 breit. Zwei Zeilen machen es 196px, und das Paar passt die Kopie Spalte von 1280 auf und ab 1280 768. Nur bei 1024 (eine 361px-Spalte) und auf Handys stapelt es darunter. Gemessen in Chrome bei 390, 768, 1024, 1280, 1366, 1440 und 1920, ohne horizontaler Überlauf bei jedem von ihnen. View Pricing wickelt sich jetzt zu seiner eigenen Reihe bei Laptop-Breitungen, und das hat seine ausgesetzt Border-Bottom: TouchOptimized hebt den Link auf 44px hoch, sobald die Seite ist Leer im Leerlauf, so saß die Grenze 18px unter dem Text und las sich wie ein Trenner. Es ist ein Text unterstreicht jetzt, wobei der Text in seinem Feld zentriert ist. Die Schlüssel gingen zuerst an Kamo-Translation-Wörterbuch (7ed8a400).

  5. · kamo-marketing

    Eine Seite für unbegrenzte E-Mail-Kampagnen und Tropfen, von überall verlinkt es hingehört

    /email-Marketing verkauft, was auf 2026-09-16 ausgeliefert (Broadcast-Kampagnen, Tropf, Senden Domains): unbegrenzt und 100% kostenlos mit Business und Enterprise. Das ein fettes Element der Seite ist der Schieberegler, mit dem sich jede E-Mail-Marketing-Preisseite öffnet ("Wie viele Kontakte hast du?"), außer dass das Verschieben nie die Rechnung ändert. Es zitiert niemanden Sonstiges Preis, pro 206f9f3: Das Argument ist das Zählermodell (Kontaktstufen, Zulagen senden, Automatisierung für höhere Pläne gehalten), und die einzige Zahl auf der Seite ist unsere $0. Alles es Die Ansprüche wurden mit dem Produkt abgeglichen: - 14 Tropf-Trigger, senden Sie Fenster in die Kontakt-E-Zeitzone und öffnen/klicken Bedingungen mit überspringen oder aussteigen (dripCatalog). - Fünf der zehn Rezepte, gezeichnet mit ihren echten Triggern, Timings und Exits (dripRecipes.ts). - Ein 14-tägiges Warm-up mit einer Sicherheitsbremse an Blöcken und Bounces (WarmupSettings, WarmupPlan). - Liste hygienisch Gründe, bounce/complaint Unterdrückung, Ein-Klick-unbeschreibt und benutzerdefinierte SMTP-Hosts. - "Unlimited" bedeutet keine Plan-basierte Kappe: nichts in EmailService Zähler ein Org, und die Seite sagt dass sich aufwärmen und Fenster senden das Tempo vorgeben. Links in: n.r.n.u.: n.r., eine / Produktkarte, ein Callout unter der /Preisplankarten, die Roadmap (Bulk Email Campaigns moveed to Launched), die Sitemap und Sitemap und eine neunte Karte in der Homepage "Stop Paying for Nine Different Tools". Ein Server Streifen (EmailMarketingStrip) geht unter die Feature-Matrix auf jedem Wettbewerber Vergleich, unter "Was ist eigentlich vorgesehen" auf jeder Branchenseite, auf fünf Glossar-Bedingungen und auf beiden Ressourcen Artikel. PLATFORM_CAPABILITIES, das sich selbst die Liste dessen nennt, was KamoCRM bietet, jetzt Listen E-Mail Marketing. Vier Branchenseiten sagten, dass die Dinge, die jetzt Tropfen machen, angefordert waren: Online-Kurse, Hotels, Fitnessstudios und E-Commerce. Ihre Kopie wird korrigiert, was noch unbebaut ist (Kurs-Plattform- und Anwesenheitsauslöser, Aufenthalt-basiertes Timing, LTV-Segmentierung, SMS) als auf Wunsch, und jedes Element bewegt sich zu einem -r3 i18nKey. Verifiziert auf einer lokalen Produktion bauen: jede Wache, eine vorgezügigte Route und eine kopflose-Chrom probe (42 Kontrollen) bei 390, 1440 und 2560 breit für keine horizontale Schriftrolle, keine Konsolenfehler, keine rohen Nachrichten-Tasten, Tastatur-Nutzung des Schiebereglers und Rezept-Tabs, und ein Link in der Seite Körper von jede Seite oben. Die Wörterbuchseite ist Kamo-Translation-dictionary 3ecaefa5.

  6. · kamo-marketing

    Spielen Sie die Kamo14-Rolle, und lassen Sie sie pausieren

    Die Recut-Rolle (neue Schließung Logo Schuss, sonst Frame-identisch, gleiche 66s Die Laufzeit und die Zeitpläne des Kapitels) werden unter eigenem Namen veröffentlicht. Die Kamo13 Leiter wird unumständlich serviert und seine variantenspielilischen Playlists und Segmente halten ihre URLs, was auch immer der Master ?v= sagt, so dass ein an Ort und Stelle Ersatz würde nie einen wiederkehrenden Besucher zu erreichen. Die Helden-Perne bot Neustart und stumm, aber keine Möglichkeit, den Film einmal zu stoppen es spielte. Eine Pause/Play-Steuerung führt jetzt die Steuerzeile und das Tippen das Bild umwirbelt es auch; Wiederaufnahme behält die Position. Die Kontrolle folgt die eigenen Spiel-/Pause-Ereignisse des Elements, damit es rechts bleibt, wenn der Lauf endet oder der Browser pausiert die Wiedergabe selbst. Dies umfasst beide Seiten, die die Einbettung der aperture (home und die HighLevel Gebührenseite); /watch pausiert bereits durch die native Kontrollen.

  7. · KlusterServices

    Encode der Kamo14 Rolle

    Die Marketing-Rolle wurde neu geschnitten (neues Schließen Logo Schuss) und hochgeladen als public/kamo14.mp4. Es bekommt einen neuen Namen, anstatt kamo13 an Ort und Stelle zu ersetzen weil die Leiter unumstbar serviert wird: das ?v= des Meisters erreicht nicht Varianten-Playlisten oder Segmente, die ihre relativen URLs behalten. Der encod-Job baut nun public/hls/kamo14/ und kamo14-poster.*, und der MediaMTX Live-Kanal Loopings der kamo14 Leiter. Der Name des Lebens/Kamo13-Pfadens ist unverändert.

  8. · kamo-internal

    Fenster, die nicht auf die Dock-Stand in Reihen dahinter passen

    Ein Werkzeugfenster, das nicht in die erste Reihe passt, steht jetzt in einer Reihe BEHIND es, ein Titelstreifen höher pro Reihe: seine 42px Titelleiste und 10px Körper zeigen oben die Reihe vor, wie die Tabs eines Stapels von Ordnern. Dies ersetzt die Kaskade, die jedes Fenster über die Reihe gelegt und begraben die meisten von ihnen. Die Zeilen sind die Fensterreihen, die first-fit (toolDockPlacement, layoutDockStack): ein Fenster geht in die vordere Reihe mit Platz dafür, so Die vordere Reihe wird nie halb leer gelassen, während ein Fenster, das passt, hinterher wartet. Jede Reihe teilt eine Höhe. Wenn der hinterste Streifen würde die Spitze passieren Rand, jedes Fenster gibt nach oben zusammen, und die Höhe kommt zurück als die Reihen leeren sich. Die Reihe, der Aufzug und die Streifenhöhe sind auf jeweils geschrieben Fenster im selben Relais wie dockX (dockRows) und werden nie beharrlich. Wer vorne steht, ist eine Nachordnung (toolDockTiers): - Ein Klick auf einen Streifen handelt mit der Frontscheibe, die das Mitglied am meisten benutzt hat vor kurzem. Recency wird nur von Mitgliedsgesten verfolgt (dockMemberUse), weil der z-Z-Zenken auch für eingehende Erhöhungen steigt. - Ein Fenster öffnet das Mitglied, stellt von seinem Hexkopf wieder her, stellt von der Pane, Docks oder Erhöhungen von einer Benachrichtigung sitzt vorne, Handel mit die Frontscheibe verwendet LEAST vor kurzem. Fenster durch eingehende Nachrichten erhöht gehen, wo es Raum gibt, so dass sie nie den Platz des in Gebrauch genommen. - Ein Fall in die Anklagebank hält den Ort, an dem er abgesetzt wurde; zumindest vor kurzem gebrauchte vordere Fenster treten zurück, um Platz zu machen. - Eine Frontscheibe, die sich schließt oder minimiert wird durch das stehende Fenster ersetzt Am nächsten dahinter, und nichts anderes bewegt sich. - Ein breiteres Fenster nach vorne Schritte am wenigsten vor kurzem verwendete Frontfenster zurück bis es passt. Auf dem Bildschirm (ToolWindowShell, ToolDock): - Ein Fenster dahinter wird an seinen Streifen geclippt, der auch sein Trefferbereich ist. Seine Körper ist inert, so dauert es keinen Fokus oder Tastenanschlag und malt keine Scrollleiste. Es malt unter jeder Frontscheibe und wird nie gesagt, dass es fokussiert ist. - Der Titel des Streifens ist eine Taste (vorwärts bringen, Tastatur erreichbar), zeigt die ungelesene Anzahl und dimmt mit jeder Zeile weiter hinten. - Seine Nähe, minimieren, maximieren und Float-Tasten wirken auf sie, wo es steht. Ein Drag, der auf einem Streifen beginnt, ist nicht auch ein Klick, und auch nicht ein Doppelklick. - Vorwärts kommend, fällt das Fenster und entfaltet sich in den Schlitz, während die gehandelt man faltet sich und erhebt sich hinterher. Beide laufen auf der Dock 340ms Kurve, dann Schattenblüte und eine leichte Fege kennzeichnen die Ankunft. Hovering ein Streifen hebt es und deckt ein wenig mehr davon auf. Ein Fenster, das dahinter geboren ist, blickt von hinten auf die Reihe vor; einer vorn geborene steigt aus dem unteren Rand, undurchsichtig. - Reduzierte Bewegung hält die Reihen und die Schattierung und lässt alle Bewegungen fallen. - Größe Nähte sind nur vordere Reihe. Die Höhe Naht stoppt, wo die hinterste Streifen trifft die obere Marge, und kündigt diese Decke. Gefunden auf dem Weg, und fixiert: das Dock gerenderte Fenster in der Lagerreihenfolge, so dass jede Nachbestellung (inklusive Drag-Reorder, vor dieser Änderung) gemacht React-Schiebe-Schiebefenster Elemente rund um das Dokument. Ein bewegtes Element verliert DOM-Zustand: ein Protokoll gescrollt zu 300 kam zurück bei 0, ein spielendes Medienelement wird angehalten, und der Übergang Das Tragen eines Fensters zu seinem neuen Slot wird fallen gelassen. ToolDock macht jetzt Fenster in Erstellungsauftrag, die sicher ist, weil jedes Fenster für sich repariert ist gemalte Ebene. Verifiziert in echtem Chrome mit dem ganzen Dock auf stubbed Fenster Körper: 64 Gemessene Kontrollen. Sie decken Reihen, Clip und Hit-Testing, inerte Körper und Scrollbalken, Fokus, Schwebe, beide Wechselrichtungen, Tastatur, Strip-Tasten, Höhe Geben und Nehmen, ziehen Sie von einem Streifen, reduzierte Bewegung, maximieren und restaurieren, viewport Re-Flow, ein Tropfen vorbei an der vorderen Reihe, die Nahtdecke und erhalten Scroll-Positionen, plus Echtzeit-Screencasts von jedem Übergang. Neue Geräte- und Provider-Tests decken Layout, Nachbestellungen, Stapeln, Shell und Dock ab.

  9. · kamo-marketing

    Sieben Link-Sets, die dem n nav entsprechen, und Karrieren geht an die Karriere-Website

    Die Fußzeile listet jetzt Features, Dienstleistungen, Preise, Unternehmen, Ressourcen, Lösungen und Recht, in dieser Reihenfolge. Das ist die Top-Navi der eigenen fünf Kategorien plus die zwei es Nester unter Ressourcen, und jeder Satz hält die nav's Links unter den Navi-Etiketten. Die Etiketten kommen aus dem "Nav" namespace, der in jedem Lokal übersetzt wird, so dass dies keine Kopie hinzufügt. Die Übersetzungen des Fußers waren ohnehin identische Schlüssel für Schlüssel. Zwei Links existieren nur hier unten: Sehen Sie den Film unter den Features und das Cookie Einstellungen-Button unter Legal. Produkt war die alte Überschrift und ist weg. Preise und Lösungen bekommen Sets für ihre eigenen, und Legal nicht mehr Wraps allein auf eine zweite Reihe. Karriere ist https://careers.kamocrm.com/ überall es erscheint: das nav's Firmenmenü (Desktop und Handy), die Fußzeile, die Firmenseite und die Lagekarte. Die URL lebt in app/lib/careers-site.ts. /careers ist jetzt ein permanente Umleitung dorthin, wie /vs, so Suchergebnisse, Lesezeichen und Außenverbindungen erreichen auch die offenen Rollen. Die Marketing-Seite ersetzt sie sagte, es gab keine Öffnungen, während die Karriere-Website listet eine. Die Seite, dessen Client-Komponente, Layout und OG-Image werden gelöscht. Die Route ist out der Sitemap (SITEMAP_EXCLUDED, mit dem Grund), aus der Seitenansicht Zähler (UNCOUNTED_STATIC_ROUTES) und aus den Seiten der Jagd, weil ein Bühne kann nicht auf einer Seite, die von der Website umgeleitet zu verstecken. Die Jagd-Picks Seiten für Index modulo die Liste, so dass die heutigen Bühnenseiten neu mischen einmal auf Einsatz, das gleiche wie ein Tag Rollover. Der Link wird nicht pro Mieter so wie Register./login. Links sind nicht neu gehostet. Nur www.kamocrm.com bedient diese Seite heute. Fünf der acht Mieter Domains, die ich überprüft haben keine Karrieren. DNS überhaupt, so Karrieren.<apex? würde eine tote Verbindung auf ihnen sein. Layout: Die Fußzeile verwendet die volle Breite anstelle der 1280px-Spalte und die Markenreihe (Logo und Slogan, Social Icons und Telefon) sitzt über der Sets. Die Sets sind 2 Spalten auf einem Telefon, 3 von sm, 4 von md und eine Zeile von 7 von xl. Überschriften und Etiketten können in einem Wort brechen. Eine übersetzte Wort kann breiter als eine 149px Spalte sein (de "Dienstleistungen", "Anwendungsentwicklung"), ohne "max-w-full" einen Inline-Block-Link wächst zu seinem längsten Wort und schiebt sich an der Spalte vorbei. Verifiziert gegen die laufende Seite, nicht die Quelle. Auf /en/über die sieben Überschriften in Ordnung, und jeder Link löst sich auf seine /en Route außer Karriere, das ist https://careers.kamocrm.com/. Echte Klicks auf Karriere in der Desktop Company Dropdown, das mobile Menü und die Fußzeile jeder navigieren auf https://careers.kamocrm.com/. /de/careers and /de/careers answer 308 to es, und /careers geht durch /en/Karriere. Ich maß jede Säule bei 390, 768, 1024, 1280, 1440, 1920 und 2560px in en, bei 390, 768 und 1280 in de, ru und fr, und bei 768 und 1280 in ta: kein Element überläuft seine Säule und es gibt keine horizontale Seite scrollen. check-i18n-Tasten wurde mutation-getestet gegen die neuer Fuß (ein gefälschter nav-Schlüssel versagt). npm Test, Check-Junt, tsc und npm run build (mit seinen Vor- und Postbuild Wachen) sind sauber.

  10. · kamo-internal

    Drip-Kampagnen auf /marketing/email - Trigger, ein visueller Baumeister, Menschen und Performance

    /marketing/email bekommt einen Broadcasts / Drips Switch (?view=drips). Die Tropf-Ansicht listet jeden Tropf als Karte mit Trigger, Sequenz und Live-Zahlungen, KPI und Status-Tabs, Suche und Sortierung, und startet eine neue Tropf leer oder von zehn Rezepten (willkommen neue Leads, Geburtstagsgrüße, treffen Sie Ihren neuen Agenten, behauptet Einführung, Statuspflege, Re-engage non-openers, angeklickte Link Follow-up, Teammitglied und Mitglied onboarding und mehr). /marketing/email/drip ist der Bauherr: - Auslöser: ein neuer Lead (von Hand, importiert, Integrationen; Märkte, Anbieter, Produkte), einen Status oder Sub-Statusänderung von/zu, eine Neuzuweisung, eine Gutschrift oder eine kostenlose Forderung, Geburtstage und Jubiläen, ein Teammitglied oder Mitgliedskonto erstellt, eine Kampagne E-Mail gesendet / geöffnet / Link geklickt, keine Verpflichtung mit einer Kampagne nach N-Tagen, Abschluss eines weiteren Tropf, oder Menschen von Hand hinzugefügt. - E-Mails auf einer Leinwand: hinzufügen, duplizieren, ziehen, um neu zu bestellen, eine Wartezeit vor jeder (Minute bis Wochen, von der E-Mail davor), ein Sendefenster pro E-Mail oder für den Tropf (Tage, Stunden, die Kontakte oder die Organisationszeit) und eine Bedingung (nur wenn die vorherige E-Mail war oder nicht geöffnet oder angeklickt, sonst überspringen oder den Tropf verlassen). - Einstellungen: Von und Antwort-Zu genau als Kampagne (die geteilten Picker), die Signatur-Vorlage, wer kann wieder mitmachen (einmal, nach einer Abklingzeit oder Neustart), und wenn die Leute gehen (eine Statusänderung, eine Umwidmung, ein Klick). - Ein Bereitschaftsstreifen, Speichern (Strg/Cmd+S), Aktivieren mit einem Burst, Pause, Archiv, Duplikat, Löschen; nicht aktiviert Bearbeitungen werden bewacht und die Änderung eines Kollegen kommt live an. - Leute: wer im Tropf ist, wo sie sind und wann ihre nächste E-Mail geht, die Timeline jeder Person hinzufügen Leute von Hand, nehmen Sie jemanden heraus. Leistung: verbunden / in Arbeit / fertig / links, ein E-Mail-Trichter, und Live-Aktivität. Ein neuer Tropf, leer oder aus einem Rezept, wird erst bei seiner ersten speichern erstellt, wie bei einer neuen Kampagne, so dass jeder E-Mail wird mit der Vorlage und der Compliance-Fußzeile gespeichert. Die Vorlage und Fußzeile des Kampagnenredakteurs context in useCampaignEmailTemplate, gemeinsam mit dem Bauherrn (Rettete Körper und Anfragen im Vergleich identisch vorher und nachher). CountUp schreibt jetzt ein erstes Ziel von 0 statt eines Strichs. EmailService serviert /api/email/drips und "drip" Frames zum Kampagnenthema; das Englische ist in der Wörterbuch.

  11. · kamo-marketing

    Jede Seite zeigt, wie oft sie angesehen wurde

    Ein Blickzähler sitzt jetzt am Fuße jeder Seite, in der unteren Reihe der Fußzeile neben Sitemap und Back to top: ein Auge, dessen Iris das Sechseck des Geländes ist, und die Figur auf Kilometerzählerrollen in den eigenen Ziffern des Lesers (Bengali's, Arab's, Hindis Gruppierung). Das erste Mal, wenn die Pille auf dem Bildschirm ist die Walzen drehen in Ort von links, und wenn dieser Besuch war der, der gerade gezählt die letzte Rolle dreht sich um eins, wie eine +1 steigt aus ihm. Hover oder Tastatur-Fokus öffnet eine Karte mit der Figur und was es misst; ein Tippen öffnet es auf Touch; ein Klick spinnt die Rollen wieder. Reduzierte Bewegung bekommt die Figur und die Karte, und nichts, was reist. Es kostet Seite laden nichts: - Nichts über eine Ansicht wird gelesen, während eine Seite wiedergegeben wird. Jede Route ist immer noch prärendered (check-static-Routen: 247, sentinels intakt); das HTML trägt eine Größe Platzhalter, so dass der Swap nicht bewegt die Zeile. - Die Zählung ist ein POST durch die gemeinsame Leerlauf Warteschlange, nachdem die Seite hat geladen, und es zählt und antwortet in der gleichen Anfrage. Ein Leser, der geht bevor der Leerlauf-Slot noch zählt: pagehide und in-Site-Navigation senden Sie eine Leuchtfeuer für eine nicht abgesetzte Sicht. - Die Rollen, ihre Bewegung und ihr Stylesheet sind ein separater Brocken, geholt nur wenn die Fußzeile innerhalb von 800px des Bildschirms kommt. - "Keine Zahl" antwortet 200 mit Aufrufen null, nie 404 oder 503, also ein KBService Neustart kann nicht auf jeder Seite einen Konsolenfehler aufsetzen. Wo eine Ansicht **************** zählt, ein Wissensdatenbank-Artikel zählt auf dem Artikel, von guid, so dass die Figur ist Teil der Daten des Artikels in KBService und folgt es durch Umbenennen und Bewegungen; jede andere Seite zählt auf seinem Weg ohne die Locale, so /en/Preise und /fr/Preise teilen sich ein Figur. Ein Pfad zählt nur, wenn diese Seite ihn bedienen würde: die Route existiert und seine Schnecke Namen ein echter Konkurrent, Glossar Begriff, Service, Blog-Post, veröffentlicht Artikel (auf seinem kanonischen Pfad) oder Changelog Eintrag. Krabeltiere, Link Unfurler, Audits und Webdriver werden die Figur gezeigt, ohne sie hinzuzufügen, und das gleiche Browser sendet die gleiche Seite zweimal innerhalb von fünf Sekunden ist eine Ansicht. Jeder Zähler beginnt mit einer Zahl zwischen 31 1.384 und 1.200.384 gezogen, wenn seine row wird erstellt, indem die Seite Sitemap Priorität platziert, so dass die Homepage beginnt hoch und ein Changelog-Einstieg niedrig. Die Inline-Prioritäten der Sitemap wurden in SITEMAP_PRIORITY so beide lesen eine Liste; kb-sections.ts ersetzt die beiden Exemplare von den KB_SECTIONS überprüfen Sie, ob der Zähler sonst drei gemacht hätte. Die untere Reihe der Fußzeile stapelt die made-in-Marke unter der Copyright-Linie: mit der Zähler hinzugefügt, die drei nebeneinander passen nicht mehr auf 1440px. check-page-views.ts (Vorbau und Test) verfehlt den Build, wenn eine dynamische Route ist nicht in routes.ts, wenn ein Layout oder der Footer aufhört, die Zähler zu montieren, oder wenn alles andere als sein Route-Handler den Resolver importiert. Bewiesen durch Löschen eine Route Eintrag, der Footer mount und erfindet einen abgestandenen Eintrag: jeder scheitert. Needs KBService 167981e (die /internen/Seiten-Termin-Endpunkte) und Die Fußgänger des Wörterbuchs.pageViews*-Schlüssel (5909948c); bis KBService live ist Pille einfach nicht erscheinen.

  12. · KBService

    Zählen Sie die Seitenaufrufe der Marketing-Seite, auf den Artikel oder auf der Seite

    KBService antwortet nun die Ansicht Zähler kamo-Marketing zeigt am Fuße des jede Seite. Zwei Endpunkte, beide {"views": n. mit der Ansicht nur gezählt inbegriffen: POST **************** {Wichtigkeit, zählen POST /interne/Seiten-Ansichten/Seiten {Pfad, Bedeutung, zählen] Ein Wissensdatenbank-Artikel setzt auf den Artikel selbst (KB_ARTICLE_VIEWS, von uid), so dass seine Zählung folgt es durch Umbenennen und bewegt sich in /kb; die guid must Nennen Sie einen veröffentlichten, öffentlichen Artikel, nach der gleichen Regel den öffentlichen Artikel Endpunkte Verwendung. Jede andere Seite zählt auf ihrem Pfad unterhalb des Locale-Präfixes (MARKETING_PAGE_VIEWS). Jeder Schreib ist ein natives upsert mit der Gesamtlesung zurück in der gleichen Transaktion, auf einem Yugabyte-Konflikt erneut verhandelt. Unter /intern, nicht /api/kb/public: APIService setzt alle /api/kb/** weiter api.kamocrm.com und die Sicherheitskette dieses Dienstes erlaubt alles, so ein Wenn man den Endpunkt zählt, würde es eine öffentliche Lockenschleife weg von jeder Figur geben. Die neu InternalAuthFilter erfordert X-Internal-Auth (mlos-internal-auth, jetzt montiert optional) auf dem gesamten /internen Präfix, entschieden auf dem dekodierten Servlet-Pfad, und antwortet 503, anstatt sich zu öffnen, wenn das Geheimnis fehlt. Die Der Route-Handler der Marketing-Website ist der einzige Anrufer und trifft jede Entscheidung über das, was zählt: nur reale Seiten, Crawler zeigten die Figur ohne Zugabe zu ihm, eine Wiederholung von einem Browser innerhalb von fünf Sekunden einmal gezählt. Die Startfigur eines Zählers wird einmal gezeichnet, wenn seine Zeile erstellt wird, zwischen 312.384 und 1.200.384. Der Anrufer übergibt eine Bedeutung von 0 auf 1 (die Seite Sitemap Priorität) und PageViewSeed platziert die Auslosung in einem Band um ihn herum, so dass die Homepage startet hoch und ein Changelog-Eintrag niedrig; die Extreme landen genau auf Die Enden des Bereichs ohne Klemmen. Der Samen wird gespeichert, abgesehen von dem gezählten Ansichten, so dass echter Verkehr lesbar bleibt. Reihen erscheinen auf Anfrage; count=false erzeugt eine ohne Zählen, für Crawler und für die Aussaat. create_page_views.sql ist die DDL, die von Hand auf die Live-Datenbank angewendet wurde dieser Push und passend, was Hibernate für die Shared-Bibliothek erzeugt Unternehmen (geprüft auf 6.2 und 6.5). Die ConfigMap gewinnt intern.auth.secret, und so auch die Repo-Kopie. 23 neue Tests: der Saatbereich und Bänder, kanonische Pfade und guids, die eine Ansicht läuft und die Endpunkte durch den realen Filter (kein Geheimnis, falsches Geheimnis, unsicher, schlechter Weg, unbekannter Artikel). Entfernen des Filters Vor-Check und Invertierung der Zählflagge drehen Sie sie jeweils rot.

  13. · kamo-shared-library

    Seitenansicht Zähler für die Marketing-Website

    Zwei Tische hinter der Ansicht zählen Kamo-Marketing jetzt zeigt sich am Fuße der jede Seite, geschrieben von KBService's /internal/page-views endpoints. KbArticleView (KB_ARTICLE_VIEWS) zählt die Ansichten eines Wissensdatenbank-Artikels auf der ARTIKEL, von seiner uid, so dass die Zählung ist Teil des Artikels und folgt es, wenn es umbenannt oder eingezogen /kb ist. Es ist eine eigene Tabelle und nicht Spalte KB_ARTICLES: die Artikel-Reihe wird vollständig von JPA gespeichert, also ein Zähler auf es würde gelesen werden, wenn ein Redakteur öffnete den Artikel und zurück geschrieben, wenn sie gespeichert, jede Ansicht dazwischen wegwerfen. Die ausländischen Schlüsselkaskaden in der Datenbank, weil KbArticle nicht Karte dieser Zeile und ein Hibernate löschen Der Artikel würde sonst daran scheitern. MarketingPageView (MARKETING_PAGE_VIEWS) zählt jede andere Seite auf seinem Weg unterhalb des Locale-Präfixes, also /en/preisen und /fr/preisfreigabe eine Zählung. Beide behalten SEED_COUNT, die Startfigur eine Zeile erstellt, mit VIEW_COUNT, die Ansichten tatsächlich gezählt; die Seite zeigt ihre Summe, und real Der Verkehr bleibt vom Tisch aus lesbar. Die Repositorien zeigen nur die drei Aussagen, die eine Ansicht braucht: ein nativer upsert, die zählt, eine, die Samen ohne Zählen, und die Summe, lesen nach das Schreiben in der gleichen Transaktion. No save(): ein Zähler geladen, inkrementiert und zurückgespart verliert gleichzeitige Ansichten. Offline-Überprüft: eine Session-Fabrik baut über alle elf KB-Einheiten plus diese auf Hibernate 6.2.13 (KBService und die anderen Boot 3.1 Dienste) und 6.5.3 (Boot 3.3), und das Schema-Skript, das es schreibt, passt zu der DDL, die von Hand, einschließlich ON DELETE CASCADE. ddl-auto ist keine überall außer der Initializer, so dass kein anderer Dienst die Tische berührt.

  14. · kamo-internal

    Das Lifestyle Logo, ein viertes Logo pro Marke und das Standard-Hintergrundwasserzeichen

    Behavior & Labeling gewinnt einen Lifestyle Logo Slot neben dem vollständigen Logo, dem einfachen Logo und dem Tab-Symbol, sowohl in der Firma und den Software (White-Label) Zeilen. Es braucht Pixel-Artwork und Vektoren gleichermaßen: ein SVG oder ein Raster wird genau so ausgewählt gehalten, ein EPS/AI/PDF wird auf dem Weg in umgewandelt (kein Browser kann zeichnen eins), und ein Raster bietet "Convert to Vector", die die gemeinsame ImageToSVGConverter öffnet nur, wenn die Mitglied fragt. Wie das Tab-Symbol, hat jeder Steckplatz einen Schalter (ein Upload schaltet es ein, Server-Seite zu) und ein Bildunterschrift, die sagt, was eine Lifestyle-Oberfläche tatsächlich ziehen wird, aus der unaved Form. Das Lifestyle-Logo ist standardmäßig auf das vollständige Logo gesetzt, wenn es nicht gesetzt ist. Für jede Marke, lösenLogoVariant in theme/brand.ts ist die Kette: das Software Lifestyle-Logo, wenn im Einsatz, sonst die Software Voll-Logo, wenn es überschreibt das Unternehmen eins, sonst das Firmen-Lifestyle-Logo, wenn in Gebrauch, sonst das Unternehmen volles Logo. lifestyleLogo.ts gibt die gleiche Kette an wie Bildunterschriften; ein Test läuft über alle 32 Formzustände. Hintergrund Watermark bietet Lifestyle Logo zuerst, und es ist die Standardeinstellung: null und unbekannte Werte auflösen zu LIFESTYLE, das das vollständige Logo zeichnet, bis ein Lifestyle-Logo existiert, so dass sich das Wasserzeichen der Org nicht ändert bis es eins hochlädt. Jeder Ort, der das Wasserzeichen anmalt (BackgroundWatermark, Backdrop, der Fehler und nicht gefundene Seiten) geht jetzt durch resolveWatermarkVariant / watermarkLogoFile. - /network/create: eine Lifestyle-Logo-Gruppe mit der gleichen Aufnahme, hochgeladen, nachdem die org existiert als type=Lifestyle; der Wasserzeichen-Picker bietet Lifestyle zuerst und das Formular ist standardmäßig dazu da. - Setup-Assistent: Logos bekommt Unternehmen und White-Label-Lifestyle-Slots (zeigt die Live-Eins, wenn im Einsatz), Hintergrunds bietet das Lifestyle-Wasserzeichen an, und orgDetails löst die Voreinstellung auf die gleiche Weise. - Das Schema der Org-Route liest bgWatermark als eine schlichte Schnur. Es .parse()s, also die alte ["NONE",FULL",SIMPLE"] enum hätte den gesamten Org-Rekord für eine LIFESTYLE-Reihe geworfen; Organization.fromJSON löst stattdessen unbekannte Werte. Die vier Lifestyle-Felder reiten auf dem Org-Rekord über OrgContext und DynamicMetaLoader hält ************ von config.json. Braucht Kamo-shared-Bibliothek f22a867d und Security Service Upload-Typen (vorerste geschubst), und die Wörterbuch-Tasten (an erster Stelle gedrückt, in jedem Ort).

  15. · SecurityService

    Lifestyle-Logo-Uploads, config.json-Tasten und das LIFESTYLE Wasserzeichen

    Das Lifestyle-Logo ist ein viertes Logo pro Marke (Unternehmen und White-Label), die dekorative Wiedergabe der Hintergrund Wasserzeichen zieht jetzt standardmäßig. Sein Fallback ist das vollständige Logo. - upload-logo nimmt type=Lifestyle und type=Lifestyle-Software. Die Datei behält ihre reale Erweiterung (fotografische Kunstwerke sind willkommen, ein Raster zu verfolgen ist die Wahl des Mitglieds zur Upload-Zeit) unter **************** die ext Spalte zeichnet es auf, und der Upload schaltet das Logo ein, auf dem Tab-Symbole Vertrag. Ein Raster wird auch unter dem Namen .svg als Stand-in gespiegelt, wie das voll Logos, so dass eine Oberfläche, die die Erweiterung noch nicht gelesen hat, noch das eigene Artwork der org zeigt. - config.json benennt logoLifestyleExt / logoLifestyleSoftwareExt nur solange dieses Logo in Gebrauch ist (uploaded UND eingeschaltet); abwesend bedeutet, dass das vollständige Logo einsteht. - Die create payload hält bgWatermark LIFESTYLE, anstatt es zu null fallen zu lassen. - ************ fügt die vier ungültigen Spalten hinzu. Mit der Hand auf das Live-Angewandt Cluster auf 2026-09-16, bevor kamo-shared-Bibliothek Einheitsänderung wurde geschoben.

  16. · kamo-shared-library

    Lifestyle-Logo-Säulen und LIFESTYLE als Wasserzeichen Standard

    Das Lifestyle-Logo ist ein viertes Stück Branding-Kunstwerk pro Marke, neben dem vollständigen Logo, die einfache Logo und das Tab-Symbol: die dekorative Wiedergabe des Hintergrund-Wasserzeichens zieht standardmäßig. Es ist genau wie das Tab Icon Pair: logo_lifestyle_ext (und sein Software-Zwilling) wird nur von geschrieben SecurityServices Upload-Endpunkt aus der gespeicherten Datei und verdoppelt sich als "einer existiert"-Markierung; logo_lifestyle_enabled ist der Schalter daneben. PUT /org/{id] kann die beiden Schalter patchen, niemals Erweiterungen. bg_watermark dokumentiert nun LIFESTYLE, das jeder Kunde auf Null löst. Es ist das vollständige Logo für als solange eine Org kein Lifestyle-Logo in Gebrauch hat, also ändert sich nichts, bis eine hochgeladen wird. Die vier Säulen kommen von ************ von Hand auf die Live-Cluster vor diesem Push: Jeder Java-Dienst, der nach ihm gebaut wird, SELECTs sie auf jedem Org-Lesen.

  17. · EmailService

    Tropfkampagnen

    Ein Tropf ist eine automatisierte Abfolge von E-Mails, die eine Person einträgt, wenn etwas passiert: eine Leitung kommt an (von Hand, importiert, oder von einer Integration), eine Leitung Status- oder Unterstatusänderungen, ein Leer wird neu zugewiesen oder mit einem Guthaben beansprucht, Leads Geburtstag oder Jubiläum kommt herum, ein Teammitglied oder Mitglied Konto ist erstellt, eine Kampagne E-Mail gesendet wird, geöffnet, angeklickt oder geht unbeantwortet, jemand beendet einen weiteren Tropf, oder ein Mitglied fügt sie von Hand hinzu. Jede E-Mail hat ihre eigene warten, senden Sie ein Fenster (in der Time Zone der Org oder des Kontakts) und unter wie die vorherige E-Mail. Senden. Eine Tropf-E-Mail wird auf einer versteckten Ausgabe-Kampagne pro (Schritt, Zyklus) in der Warteschlange stehen. durch ****************, so geht es genau wie Kampagne Mail: Opt-out und Berechtigungsprüfungen, die Hosts des Entreppers, Warm-up und Senden Fenster, DKIM, Tracking, Abmelden, Bounces und der inszenierte Outbox. Editionen sind Ausgelassen aus der Kampagnen-Liste, der Schnappschuss, das Home-Widget und der Fortschritt und Engagement Frames, und die Kampagne Endpunkte Antwort 404 für einen. Motor (drip/DripEngine): Alle 5s auf eigenem Gewinde im Leasing E-Mail-Dreh-Engine, es entwässert email_drip_triggers (Ausgänge zuerst, dann Anmeldungen), fegt Geburtstage und Jubiläen einmal pro org-lokalen Tag, und bewegt jede fällige Person an: Wartezeiten zählen ab wann die vorherige E-Mail tatsächlich war gesendet, ein Bounce oder Opt-out beendet den Lauf, eine Person wird vor jeder E-Mail wieder gelesen (Merge Tokens: first_name, agent_name, market und der Rest) und ein fertiger Run lässt angekettete Tropfen beginnen. Wiedereintritt ist einmal, wieder nach Abschluss (mit einem Abkühlung) oder Neustart; Ausstiegsregeln nehmen Menschen auf eine Statusänderung, ein Umwidmung oder ein Klick auf einen Tropf-Link. API: /api/email/drips (Liste, Optionen, CRUD, aktivieren, pausieren, archivieren, unarchive, Duplikat, Personen, manuelle Einschreibung, Entfernung, Zeitpläne, Aktivität), VIEW_BULK_EMAIL zum Lesen und MANAGE_BULK_EMAIL zum Verändern. Live: Typ "drip" Rahmen zum Kampagnenthema, zusammengesetzt pro Sekunde. Kampagne sendet, öffnet und Linkklicks (jetzt mit der URL) werden übergeben Kamo-shared-Bibliothek's DripTriggerRecorder. Tabellen und die Edition Spalten waren vor dieser Verpflichtung von Hand ************ aufgetragen.

  18. · SecurityService

    Ein importiertes Blei wird als importiertes Blei aufgezeichnet

    LeadImportController erstellt jede Zeile mit dem Zwei-Fäuchz-Cleases erstellen, so ein Lead-Geschichte sagte Quelle API mit niemanden handeln, genau wie man in gesendet über die Hersteller-Einleitungs-API. Nichts könnte einen Import von einer Integration unterscheiden, und Tropf-Kampagnen, die auf "eine neue Blei kommt" starten bieten die Wahl zwischen führt von Hand hinzugefügt, importiert oder aus Integrationen. Reihen werden jetzt mit Source IMPORT erstellt. Gebaut gegen Kamo-shared-Bibliothek b5b56d6d, dessen Vorlaufgeschichte auch neue Leads, Statusänderungen, Umschichtungen, Kreditforderungen und neue Mitgliedskonten auf die Tropfmaschine.

  19. · kamo-internal

    Die Antwort des Kampagnenredakteurs ist eine Wahl - NoReply, E-Mail oder Custom, NoReply standardmäßig

    Der Free-Text Reply-To under the From wird CampaignReplyToPicker, drei Möglichkeiten, die jeweils sagen, wo Antworten landen: - NoReply (Standard): NoReply@<Die Kampagne von der Domäne, z.B. NoReply@hello.kamocrm.com, "die nicht erhalten E-Mail" - E-Mail des Mitglieds: die Bearbeitung des Mitglieds, angezeigt durch die Adresse. Eine Kampagne, deren Antworten bereits gehen, um einen Teamkollegen hält zeigt der Teamkollege, bis jemand wählt die Option wieder. Ein Mitglied ohne E-Mail auf seinem Profil kann es nicht auswählen. - Custom: ein Kästchen, das beim Eintippen angekreuzt wird, so wie E-MailService es speichert. Die Logik ist ************ lesen Sie eine Kampagne (eine von vor der Wahl ist Brauch, wenn es eine Adresse, NoReply when not), auswählen, die Adresse anzeigen und die Speicherfelder erstellen (Antworten, AntwortToMode, Antwort anMemberId). Eine unfertige Adresse Zurückhaltung von Speichern und erscheint in der Checkliste. Die Vorschau zeigt die Antwort auf den Empfänger erhalten.

  20. · kamo-shared-library

    Tropfkampagne löst aus, aufgezeichnet, wo Leads und Mitglieder wechseln

    Tropf-Kampagnen starten, wenn etwas in der CRM passiert, so die Orte, die ändern und Mitglieder übergeben diese Ereignisse nun der Tropf-Engine von EmailService: - LeadHistoryService: eine Leine erstellt (mit wie es ankam: von Hand, importiert, oder aus einer Integration oder Form), eine Status- oder Unterstatusänderung mit beiden Seiten, und eine Umwidmung von einem Teammitglied zum anderen. - ************ ein Pool Lead behauptet durch die Ausgabe eines Kredit (bezahlt oder kostenlos für alle), die keine eigene Lead-Geschichte aufzeichnet. - MemberService: ein Mitglied oder Team-Mitglied-Konto erstellt. Der Plattformspiegel row ist kein neues Mitglied des Providers org und startet nichts. DripTriggerRecorder schreibt sie an ************ Motor entwässert. Es schreibt nur für eine Org, deren ACTIVE Tropfen auf diese Art hören (Trigger- oder Ausstiegsregel, höchstens alle 30er gelesen), Übergaben nach dem Verursachen Transaktions-Komdments und schreibt auf dem eigenen Thread und der Verbindung, also eine Führung schreiben kann nie scheitern oder rollen zurück, weil ein Tropf. Eine Blei erstellt Leere (ein Test führen oder ein Duplikat) ist nicht jemand zu begrüßen. EmailCampaignEntity Karten drip_id, troip_step_id und troip_cycle: eine Tropf-E-Mail sendet durch eine versteckte Ausgabe Kampagne pro (Schritt, Zyklus), so hält es jede senden Garantie eine Kampagne hat. Die Spalten und Tabellen wurden von Hand aufgetragen vor dieser Commit (emailservice ****************

  21. · kamo-marketing

    Geöffnet monatlich und verkaufen 1- und 3-Jahres-Beschränkungen als Sperrung in der heutigen Rate

    Die meisten Käufer kommen zu vergleichen, was sie ohne Verpflichtung zahlen würde, so HOME_TERM ist jetzt monatlich. /Preis, der Homepage Planstreifen, /calculator und das Produkt Markup noch auf dem gleichen Begriff zusammen zu öffnen. Die längeren Begriffe sind, was die Schiene von dort verkauft: eine niedrigere Rate pro Sitz, eingesperrt bei der Preis für die gesamte Laufzeit. - Die Augenbraue der Bahn lautet: "Lock in der heutigen Rate für 1 oder 3 Jahre", und ein Satz unter der Schiene sagt, was die gewählte Laufzeit tut: monatlich hat keine Engagement; jährliche und 3 Jahre halten den heutigen Preis für 12 Monate oder 3 Jahre, auch wenn unsere Preise steigen. Alle drei Noten teilen sich eine Gitterzelle, so Auswahl eines Begriffs bewegt sich nie die Karten unten, in irgendeiner Sprache (gemessen in en, de und ja). Beide Linien sind ausgewogen, so dass ein Telefon nie strandet ein Wort. - Karten- und Taschenrechner Begriffszeilen führen mit "Rate gesperrt für N Monate". - Monatlich fällt die gespeicherte Zeile der Karte "über den Begriff", die auf einem eins- Monatsbuchstaben wiederholte nur die monatliche Zahl daneben. - Der Homepage-Streifen betitelte seinen Preis "pro Sitz auf einer {Monats-Jahres-Sendezeit", die auf monatliche würde als 0,083-Jahres-Führung zu lesen; es sagt jetzt in Rechnung gestellt monatlich, mit der 1- und 3-Jahres-Sperre daneben. - /preisin der Suchbeschreibung nennt den Drei-Jahres-Preis als Lock-in, und die abgelaufene Seite weist auf die gleiche Sache. Check-Produkt-Anhänger steckten den Drei-Jahres-Verzug ($49, 32,83). Es jetzt Pins monatlich ($69, 46,23), so dass eine stille Änderung der Standardeinstellung immer noch nicht der Build. Die Kopie ist in Kamo-Übersetzungs-Wörterbuch, handgeschrieben in allen 20 Übersetzte Locales. Der gleiche Push stellt 340 Werte der heutigen Sync brach, die seither für jeden Build die Vorbaukopie des Reos nicht mehr gebaut hat.

  22. · EmailService

    Die Antworten einer Kampagne gehen an NoReply, die E-Mail des Mitglieds oder eine benutzerdefinierte Adresse - NoReply standardmäßig

    Die Antwort des Editors wird zu drei Optionen (CampaignReplyTo), die in der bestehenden eingegebenen Antwort_to-Spalte bleibt. Keine DDL. - NO_REPLY (leere Spalte, Default): Reply-To: NoReply@<the From's domain", geschrieben von NoReplySenderService wie jede andere NoReply-Adresse. Der Empfänger sieht vor dem Schreiben, dass niemand es liest, und postfix-k3m1-inbound verweigert, was dorthin gesendet wird. - MITGLIED (Mitglied:<id"): die E-Mail des Mitglieds, das sie gewählt hat, schaute nach, wenn jede Nachricht verfasst ist (KampagneReplyToMitglieder, fünf Minuten gehalten), so dass eine geänderte Adresse gefolgt wird. Ein Mitglied ohne E-Mail fällt zurück zu NoReply anstatt eine Adresse zu nennen, die niemand erhält. - CUSTOM (eine Adresse): gespeichert, bare und mit einer gespickten Domain; alles andere ist eine 400 sagen, warum. Spart tragen AntwortToMode und AntwortToMitgliedId. Antworten können an das Mitgliedssparen gehen oder beim Mitglied bleiben ausgewählt, wenn ein Teamkollege spart, aber nie zu einem anderen Mitglied von id ausgewählt. Ein Redakteur aus der Wahl sendet nur eine Adresse: eine ist CUSTOM, keine ist NO_REPLY. Das Kampagne Lesemodell fügt AntwortToMode und AntwortToMemberId, und AntwortDie Adresse wird die Adresse, die der Redakteur anzeigt (die eigene Adresse oder die E-Mail des Mitglieds).

  23. · kamo-internal

    Outbound E-Mail Hosts zeigt die Massenrelais an, wie Empfangsserver sie sehen

    Eine "Bulk Relais"-Karte über der Plattform-Hosts: die geteilte Relais jeder Organisation Senden Domains verlassen über (contact.kamocrm.com, 47.181.8.86) und die Plattformorganisation eigene (hello.kamocrm.com, 47.181.8.87). - Fakten: wo die Mails jedes Relais abblättern, von wo der EmailService sie im Cluster erreicht und für die geteilte weiterleiten, ob die Anmeldung konfiguriert ist und wie viele verifizierte Domains über sie gesendet werden. - Checks, jedes Recht, unterschiedlich, fehlt oder nicht beantwortet: die Adresse des Namens (A), seine Absenderrichtlinien (SPF), wo Bounces gehen (MX, das für die gemeinsame Relais zurück zu seiner eigenen Adresse kommen muss), die Adresse ist umgekehrt DNS (PTR) und die Signiertaste des Plattformrelais (DKIM). Eine Platte, die nicht stimmt, zeigt, was sie neben sich haben sollte was DNS hat. - Reverse DNS sagt, es wird von dem Internet-Provider, der die Adresse besitzt gesetzt, so dass niemand sucht es an der DNS Gastgeber. Eine Suche, die keine Antwort bekam, ist "Könnte nicht überprüfen", nie "falsch". - Lesen Sie von GET ************, wenn sich der Tab öffnet und auf "Check now". Es ist nie Umfragen, eine fehlgeschlagene erneute Überprüfung hält, was auf dem Bildschirm ist, und ohne MANAGE_OUTBOUND_EMAIL_HOSTS macht es nichts.

  24. · KlusterServices

    Bounces for Organisationen Senden Domains erreichen EmailService über postfix-k3m1-inbound

    Eine Kampagne, die durch die geteilte Staffel gesendet wird, hat ihre Von an der Organisation senden Domain als Umschlag Absender, und diese Domain ist ein CNAME zu contact.kamocrm.com, dessen MX ist 47.181.8.86 . diese Hülse. So ein Empfangsserver, der eine Nachricht akzeptierte und sie nicht liefern konnte, nachdem alle seinen Lieferbericht schreibt hier, und bis jetzt wurde es abgelehnt. - Die sendenden Domains kommen von EmailService (relay-senders? format=domains: VERIFIED und FAILING), gelesen unter Start und jede Minute. Nur einfache Hostnamen erreichen jemals eine Tabelle, und ein unbeantwortetes Holen führt die letzte Liste. - Jede Domain nimmt nur den Nullsender, d.h. Bounces und Server, die überprüfen, ob die Adresse existiert. Jedermann sonst erhält 550 "Diese Adresse sendet E-Mail, aber nicht erhalten". - Was genommen wird, geht an eine "Bounces"-Pfeife (der Hauptpostfix-Spool-Befehl, mit einer eigenen Spule) und bounces-mail sidecar, der Hauptpostfix des unubscribe_mail.py mit INCLUDE_RAW, postet es an ******************** - stack.loans, mail.stack.loans und contact.kamocrm.com funktionieren genau wie zuvor, und nichts hier sendet an das Internet. Getestet in einer weggeworfenen alpinen Hülse mit dem gleichen Skript: null Absender 250, eine Person 550, postmaster@ und abuse@ 250, andere und sehähnliche Domains 554, ein DSN mit seinem Token gespoolt und die Warteschlange leer, eine Liste Änderung angewendet innerhalb einer Minute, und eine unbeantwortete holen halten die letzte Liste.

  25. · EmailService

    Bounces to org Senden Domains nach Hause kommen, Testsendungen sind signiert, und die Relais DNS gelesen

    Async springt. Der Briefumschlags-Sender einer Kampagne ist sein Von der Organisation, deren MX (über den CNAME to contact.kamocrm.com) ist die eigene Adresse des geteilten Relais. postfix-k3m1-inbound wird nehmen Die Zustellung meldet sich dort und posten Sie sie an POST ************ die Form der Beschwerde: - DeliveryStatusReport liest einen echten RFC 3464 Bericht (Nachricht/Lieferstatus) und die Token in der zurückgeschickte Nachricht. Ein Prosa-Bounce wird nie erraten. - BounceMailService zeichnet einen permanenten Ausfall auf (Action: failed, 5.x.x) als BOUNCED in der Empfängerreihe Token-Namen, durch den Liefer-Ereignungspfad, den die Relais bereits verwenden. Eine Verzögerung, eine automatische Antwort oder ein Bericht ohne Token ändert nichts, und ein Spam-Beschwerde-Bericht wird an die Beschwerdeeinnahme übergeben. - relay-senders?format=domains listet die VERIFIED und FAILING Senden Domains auf, für die die Inbound-Berichte akzeptiert werden. Testsendungen aus Einstellungen - E-Mail - Senden sind DKIM-signiert mit dem "Entbenutzungs"-Schlüssel der Domäne, genau als Kampagne mail ist (DkimSigning, gemeinsam mit CampaignRecipientSender), so dass ein Test durch das gemeinsame Relais zeigt, was ein Kampagne wird. Die Relais DNS. GET ************ (MANAGE_OUTBOUND_EMAIL_HOSTS) liest, für jedes Relais, sein Name A-Rekord und SPF, sein MX (für das gemeinsame Relais, zurück zu seiner eigenen Adresse), die DNS seiner Adresse umkehren und die DKIM-Taste des Plattformrelais. Der DNS-Rechengeber erhält PTR-Lookups.

  26. · KlusterServices

    Postmaster@ und abuse@contact.kamocrm.com erreichen KamoCRM - der Name des geteilten Relais erhält seine Schecks

    contact.kamocrm.com ist der Name des geteilten Org-Revers (47.181.8.86's PTR, MX contact.kamocrm.com) und sein MX ist 47.181.8.86 - k3m1, wo postfix-k3m1-inbound antwortet. Mailbox-Anbieter autorisieren, wer eine IP betreibt über postmaster@/abuse@ seiner PTR-Domain, also die jetzt landen: postmaster@ in der Postmaster-Mailbox, abuse@ und fbl@ on abuse@hello.kamocrm.com, die die Hauptpostfix Hand an die Beschwerde von EmailService Aufnahme mit einer Kopie für Postmaster. Neustart von postfix-k3m1-inbound von Sage genehmigt.

  27. · kamo-internal

    Bulk E-Mail bekommt Domain-Setup und Sub-Tabs, /Marketing /-E-Mail erklärt, was fehlt, Kampagnen erhalten einen Von Picker

    Einstellungen - E-Mail - Bulk E-Mail ist jetzt vier Sub-Tabs in ?sub=: Domain Setup · Senden · Opt Out · Opt Out Lieferfähigkeit. Das Mitglied landet auf Domain Setup, bis eine Sendedomäne geprüft ist und auf Senden nach. Bis dahin zeigen die anderen Sub-Tabs eine Sperre und bleiben fokussierbar; öffnen eine erklärt, was es gibt ist für, wie weit die beste Domain gekommen ist, und Links zurück. Opt Out und Deliverability behalten ihre rechts (MANAGE_EMAIL_OPT_OUTS oder der Besitzer) und unverändert einziehen; das alte ?tab=opt-out und ?tab=Lieberfähigkeit Links leiten zu ihrem Sub-Tab um, und die Menüeingabe und die Landekarte folgen. Jeder Sub-Tab setzt seine eigenen Worte in die Hilfeschiene. Domain Setup ist für jemanden, der noch nie bearbeitet hat DNS gebaut: ein Held mit den drei Schritten und der eine, auf der sie sind (oder "Bulk E-Mail ist bereit zu senden"), eine Karte pro Domain mit Live-Rekord-Sätzen und "Vor 8 Sekunden überprüft · automatisch prüfen", und ein Inline-Add-a-Domain-Flow (die Org-Domain vorgefüllt und auf Unschärfe mit der Änderung erklärt, Ein-Klick-Sendenamen, eine Live-Vorschau, und eine debounced lookup, die sagt, warum ein Name nicht verwendet werden kann, bevor Continue). Einrichtung einer Domain (?domain=) zeigt die Schritte des erkannten DNS-Providers, jeder Datensatz in einfachen Worten mit Kopietasten und seinen Live-Zustand ("wir sehen X, es sollte Y sein", die Korrektur für jeden Hinweiscode), Kopieren Sie alle als Anleitung, die No-CNAME-Alternative hinter einer Offenlegung, Check now, Remove (vorne verweigert während der Nutzung, mit dem Grund des Servers angezeigt, wenn es immer noch weigert sich), und eine reduziert-motion-bewusst Erfolgsmoment, der zu "Choose your From address" führt. Alles liest GET ************ durch die bestehende Vollmacht und bleibt live über **************** keine Umfrage, stille Re-Reads, schreibt adoptieren ganzen Zustand, und eine fehlgeschlagene oder verweigerte Lektüre ist ein Fehler oder Zugangshinweis, nie eine leere Liste. /marketing/email: ohne Kampagnen und ohne verifizierte Domain ist der Leerzustand ein Erklärer (warum, drei Schritte, "Set up my domain", oder wer kann es ohne MANAGE_EMAIL_SETTINGS beenden); eine Kampagne list erhält ein kompaktes Banner, das die No-Hosts-Linie absorbiert, und eine FAILING-Domain ist rot benannt mit einem Link zu seinem Setup. Nichts zeigt beim Laden oder auf einer fehlgeschlagenen Lektüre. Das Send-Blocker-Banner Links NO_SENDING_DOMAIN und FROM_DOMAIN_NOT_VERIFIED zu Domain Setup. Der Kampagnenredakteur ist ein Picker: der Standard-Sender oder eine Adresse auf einer verifizierten Domain (lokaler Teil, Domain, Von Name), gespeichert als von Email/fromName; ein gespeichertes From auf einer ungeprüften Domain wird über einen Link zu seinem Setup gewarnt. settingsMenuTabCoverage lernt &sub= und prüft, dass jedes verknüpfte Sub-Tab existiert.

  28. · EmailService

    Kampagnen-Mail wird als signiert, gesendet und von seiner verifizierten Senden-Domain geroutet

    Eine Kampagne kann ihre eigene Bezeichnung Von einer verifizierten Domain; sonst geht es als der Org Bulk-Sender - welche muss sich auf einer verifizierten Domain befände (sender lehnt alles andere ab). KampagneV wählt das Relais von diese Domain, weil SPF durch die Adresse entscheidet, von der ein Relais abblättert: die verifizierte Domäne einer org über die gemeinsame Org-Reis (47.181.8.86), KamoCRM hello.kamocrm.com nur über die Plattform-Relais (47.181.8.87), jeder andere Gastgeber für beide, und ein ungeprüfter Aus dem Nichts. Der Entlassunger nimmt die fällig Empfänger zuerst, dann ein bereiter Host seine Kampagne verwenden kann; eine Kampagne mit keiner wartet, während die org andere Kampagnen gehen. Mail als verifizierte Domain einer org ist nach seinen letzten SaveChanges signiert, wobei die Sitzung von Umwandlung in 8bit auf dem Weg. Neue Senden-Blocker NO_SENDING_DOMAIN und FROM_DOMAIN_NOT_VERIFIED. Lieferberichte zählen gegen das Warm-up der Staffel der Kampagne von From gesendet es durch. KamoCRMs Entsende-Kampagne ist nicht betroffen: noreply@hello.kamocrm.com wird plattform-verwaltert, so dass es hält Durch .87 verlassen, und die geteilte Staffel wird in KamoCRMs Rotation abgeschaltet.

  29. · EmailService

    Domain Setup API, die Absender-Karte des Shared-Relays und ein Sweep, der Aufzeichnungen live bestätigt

    ************ GET die Registerkarte (VIEW_BULK_EMAIL), GET-Lookup für das Add-Formular, POST hinzufügen, POST {id]/check, DELETE (MANAGE_BULK_EMAIL); jede Schreibantwort mit dem gesamten Tab und einer Ablehnung benennt sein Feld. ************ gibt postfix-orgs seine verifizierte Domäne Karte. Die Massenübersicht erhält Domains {bereit, verifiziert, anhängig, ausfallend für das Gate. SendingDomainSweep überprüft DNS auf der Trittwert (15s, während eine Domain eingerichtet wird) im Rahmen eines Mietvertrags, auf einem Thread of its its its its its its its its its its @Planeduled task teilt hier Springs einzigen Planungs-Thread mit dem Releaser das sendet Kampagnenmails jede Sekunde, und das Warten auf Nameserver dort würde das Senden abhalten.

  30. · EmailService

    Domains senden - eine hinzufügen, lesen Sie seinen DNS-Rekord nach Datensatz, überprüfen Sie es, wissen, was eine Adresse tun kann

    Eine Sendedomäne (news.acme.com) wird im verschlüsselten Bulk-Provider-Blob der org mit seinem DKIM-Schlüssel aufbewahrt. SendingDomainChecker liest, welche Empfänger sehen werden. SPF für die gemeinsame Relais-Adresse ausgewertet, unser Schlüssel bei seinem Selber, eine DMARC-Richtlinie auf der Domain oder einem Elternteil - für die empfohlenen Datensätze (ein CNAME zu contact.kamocrm.com, der DKIM TXT, DMARC) und der alternative SPF TXT + MX und nennt die üblichen Fehler: ein doppelter Zonenname, ein proxied Cloudflare CNAME, ein Name, der bereits Aufzeichnungen hat, ein CNAME anderswo, zwei SPF-Aufzeichnungen, zu viele Nachsichten, eine Schlüssel kurz, eine missgebildete oder vererbte Politik, und "Ihre Aufzeichnung ist rechts, KamoCRM Seite ist noch nicht live.' SendingDomainService fügt hinzu (Reinigung einer eingeklebten URL oder Adresse, Verweigerung kamocrm.com an Mieter), Schecks, entfernt (nicht, solange es sich um die des Standard-Senders oder einer aktiven Kampagne handelt) und verschiebt Status: PENDING/FAILING VERIFIED auf einem Pass; VERIFIED - FAILING nur nach zwei Ausfällen im Abstand von sechs Stunden; ein DNS-Ausfall ändert nichts. Es beantwortet den Sendepfad . ORG_VERIFIED (mit der Signing-Taste), PLATFORM_MANAGED (hello.kamocrm.com, nur für KamoCRM) oder UNVERIFIED und baut die Absenderkarte des geteilten Relais von verifizierten Domains. Änderungen veröffentlichen ************

Euer Universum wartet.

Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.

Für immer kostenlos – keine Kreditkarte erforderlich