Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · EmailService

    Ein Aufwärmtag wurde nichts gesendet, zählt nicht

    Ein Aufwärmtag war der N-th 24 Stunden von Anfang an, ob oder nicht alles ging, so drehen das Warm-up an Tagen vor der ersten Kampagne still ihre Tage mit geringem Volumen verbrachte. Ein Tag, der ohne Versuch endet, ist jetzt wiederholt: es und jeden späteren Tag vorwärts schieben durch die ganzen Tage, die blieben ungenutzt, jede Zahl auf einmal, während Tage, die gebraucht wurden, ihre Fenster und Geschichte. Fertigstellung bewegt sich mit ihnen, und der Aufwärmzustand berichtet müßleDaysSkipped. Der Lauf ist abgerechnet, bevor der Absendepfad etwas zählt, so dass ein Senden ist nie gegen einen Tag gezählt, der im Begriff ist, wiederholt zu werden; und wenn die Zähler kann nicht gelesen werden, die Lauf wird so gelassen wie es steht, anstatt sich zu schließen ein Tag auf Nullen.

  2. · kamo-internal

    Eine Kampagne, die das Backend nicht senden kann, sagt, warum und wie man es repariert

    EmailService unterbret jetzt eine Kampagne, anstatt seine Empfänger eins scheitern durch eins, wenn es nicht senden kann: seine From ist aus der Plattform Relais Domain, oder es gibt keinen Bulk-Sender überhaupt. Es weigert sich senden, Zeitplan und Lebenslauf, während die Ursache steht, und berichtet es auf der Kampagne als sendBlocker. - der Editor und die Fortschrittsansicht zeigen ein Banner mit der Ursache, der Server-eigene Satz und der Fix als zwei Schritte: ändern Sie die From (oder verwenden Sie den Provider-Standard) und Lebenslauf, oder öffnen Sie den Bulk-Sender Einstellungen und Lebenslauf. Lebenslauf bleibt behindert, während der Entwurf noch hat die Ursache - Resume speichert nun zuerst den Entwurf, so dass ein korrigiertes Von die Backend statt der Kampagne wieder aufgenommen als gespeichert und abgelehnt wieder - ein abgelehntes Senden, Zeitplan oder Lebenslauf wird an Ort und Stelle mit der angezeigt die Nachricht des Servers, nicht nur in einem Toast, und die Kampagne wird erneut gelesen so sein Status und Blocker sind aktuell - die Kampagnen Raster markiert eine blockierte Kampagne neben seinem Status, mit der Grund auf Schwebe - Fehler aus der Kampagne API bevorzugen die menschliche Botschaft gegenüber einem bloßen Maschinencode und tragen den Status und Code

  3. · kamo-internal

    Warm-up sagt Leerlauf Tage zählen nicht und zieht die Daten, die rutschten

    Ein Aufwärmtag, an dem nichts gesendet wird, zählt nicht mehr: Die Laufrutsche Vorwärts und der Tag wiederholt sich beim Senden von Lebensläufen, was das Umschalten macht Aufwärmen vor der ersten Kampagne sicher. Das Gremium sagt es jetzt, neben der Schalter und wieder im Leerlauf und nicht gestartete Notizen. Wenn die Tage übersprungen wurden, sagt der Tagesring, wie viele, mit der Zeitplan vorwärts durch so viele bewegt. Jeder Zeitplan Fliesen zeigt sein Datum, und der Tooltip des Diagramms benennt es, lesen Sie von jedem Tag, wie das Backend hat es jetzt anstatt von der ersten an gezählt, so dass die rutschten Daten sind die welche gezeichnet. Auf /marketing/E-Mail, ein Leerlauf Warm-up mit nichts Warten liest sich als "on, beginnt mit Ihrer nächsten Kampagne" statt zu behaupten, Lieferung wird Tempo.

  4. · EmailService

    Kampagnenpost der Plattform-Relais würde sich verweigern, scheitert auf einmal, anstatt wieder vorgehandelt zu werden

    Die Staffel sendet nur als eigene Domäne und beantwortet alles andere mit einem 451, also eine Kampagne, deren Von ist auf einer anderen Domain verwendet, um jede erneute versuchen Empfänger dreimal, jeder erneut versuchen, einen Aufwärmversuch, bevor jemand gelernt die Von war falsch. Wenn der Anbieter des org der Host und der Port des Relais ist und die From-Domain ist nicht die Relais-Sende-Domain, der Empfänger ist jetzt FAILED mit dem Fix in seinem Fehler: kein SMTP, kein Retry, no Unterdrückung, und nichts zählte gegen das Warm-up oder seinen Slot.

  5. · EmailService

    Neues Host Warm-up hält eine Org-Kampagne Mail und veröffentlicht es im Warm-up Tempo

    Während das Warm-up einer Org läuft, lässt der Disponent seine Kampagnen in Ruhe und ein Entersteller sendet ihnen eine Nachricht nach der anderen, die früheste fällige erste über die Org-Kampagnen, nie über eine Kampagne eigene Stundenmütze und nie über die Aufwärmkappe des Tages. Es läuft jede Sekunde unter der Disponenten eigenen Mietvertrag, so dass die beiden nie den gleichen Empfänger von senden können verschiedene Hülsen. Die Einstellungen, entschiedene Tage und Sicherheitsbremse leben in der Bulk-Anbieter verschlüsselte Blob; Counter leben in Redis und werden aus Empfängerreihen umgebaut wenn verloren. GET, PUT und Reset Endpoints unter /api/email/bulk-provider/warmup Bericht des Staates, Zeitplan, Warteschlange und Gesundheit. Beide Wege senden nun durch eine pro-Empfänger-Methode, die die behauptet, Reihe SENDING bevor die Staffel es sieht. Kampagne Zähler sind geschrieben ohne die Kampagne zu retten, die unterbrochen-senden-Send Sweep enthalten; Sparen es verwendet, um eine Kampagne pausiert Mitte-Fledermaus zurück zu SENDING setzen.

  6. · kamo-internal

    Empfängerreihen tragen kontaktiert, und bereits abentierte Reihen halten ihre Marke neben dem Status

    EmailService-Empfänger DTO berichtet nun, ob die Kampagne bereits vorhanden ist E-Mail jede Adresse. Der Mapper trägt es durch, zusammen mit lastError, und füllt die Kampagne id die DTO auslässt. Ein bereits kontaktiertes Streit wird nie per Warm-up gehalten und nie gemailt wieder, so dass das Fortschrittsraster nicht mehr gibt es die Warm-up-Note, und wenn sein letztes Ergebnis ist alles andere als Sent der Status-Chip hält eine kleine "Bereits gesendet"-Zeichen. Im Schritt der Empfänger, eine Zeile mit der Aufschrift "Bereits gesendet" zeigt auch, wie dieser Senden endete, als er nicht einfach ausging.

  7. · kamo-internal

    Die Kampagne Aus Feld sagt, wenn die Massenrelais würde es ablehnen

    Die Kampagne eigenen From-Feld, aus dem Bulk-Anbieter aus fehlgeschlagen, warnt wenn die Adresse von der Domain des Anbieters ist, als Mail, die in Spam. Auf der Plattform-Relais ist das kein Risiko, sondern eine Gewissheit: EmailService versagt jedem Empfänger einer Kampagne, dessen From-Domain nicht die Sending-Domain des Relais ("Der Massenrelais sendet nur als @domain"). Also, wenn der Bulk-Anbieter trägt eine Plattform-Relais, eine Off-Domain From ist ein Fehler: das Feld ist markiert, ein Alarm sagt, was passieren wird und bietet der Provider Standard, wenn das auf der Domäne des Relais ist, und vorflight blockiert das Senden, bis es repariert ist. Organisationen auf eigene SMTP Anbieter immer noch die weichere Spam-Warnung.

  8. · EmailService

    Jede Kampagnenmeldung benennt die Empfängerreihe in X-Kamo-Ref

    Die Massen-Relais protokolliert den Header gegen seine Warteschlangen-ID und streift ihn vor Lieferung, so dass die Lieferergebnisse mit der genauen Empfängerzeile abgeglichen werden können. Die Tests des Komponisten heften auch den Rest dessen an, was eine Kampagnenbotschaft hinterlässt mit: die Kampagne Von Adresse und Name, jeder fällt zurück auf die Masse Provider; ein Display-Name, der keinen eigenen Header starten kann; Abmelden Mailbox auf der Domain die Mail ist eigentlich aus; und ein Antwort-Zu nur, wenn die Kampagne eins setzt.

  9. · EmailService

    Die Zustellungsberichte des Relais hüpfen, blockieren und zählen Kampagnenpost nach der Übergabe

    POST ************ nimmt die Berichte der Plattform-Relais von dem, was aus jeder Nachricht wurde, abgestimmt auf die Empfängerreihe durch die X-Kamo-Ref-Header oder, falls nicht, die neueste Zeile an die Adresse in gesendet die letzten sieben Tage. Ein harter Sprung (5.1.x, 5.2.1, 5.4.4) markiert die Reihe BOUNCED und unterdrückt die Adresse. Ein Block (5.7.x) markiert es FAILED, aber behält die Adresse, da die Ablehnung war vom Absender, nicht der Briefkasten. Alles andere dauerhaft ist ein schlichtes Versagen. Der Grund eines Aufschubs wird bis zur Lieferung in der Reihe gehalten. Nur noch Reihen SENT werden verschoben, und das Warm-up zählt jeden Bericht einmal, gegen den Tag, an dem die Nachricht gesendet wurde, so dass der Reporter eine Charge zurückschicken kann sicher.

  10. · EmailService

    Der Zeitplan des Aufwärmens, Tempo und Gesundheit Regeln

    Eine neue IP-Versand wird über vierzehn Aufwärmtage hochgefahren. Tage 1-7 folgen Festplan pro Tempo (konservativ, ausgewogen, aggressiv); ab Tag 8 Jeder Tag wächst nur um den Prozentsatz des Tempos, wenn der Vortag gesund war durch seine Sprung-, Block- und Aufschubraten und anderweitig hält. Jeder Tag ist einmal beschlossen und mit dem Grund gehalten. Nachrichten werden von dem, was vom Tag übrig ist, mit gemein-einem Jitter und die gelegentliche Pause, nie schneller als das Vierfache der konstanten Rate und nie so spät, dass der Rest des Tagesbudgets nicht mehr passt. Die Sicherheitsbrems stoppt einen Tag, an dem Empfänger blockieren oder springen.

  11. · kamo-internal

    Warm-up Tempobanner auf /marketing/email

    Während der neue Gastgeber Warm-up geht, gehen Kampagnen viel langsamer als ihre eigenen Einstellungen sagen, und nichts auf der Kampagne sagte, warum. Die Kampagnen Workspace und eine Kampagne Fortschrittsansicht tragen jetzt eine schlanke Banner mit dem Tag, die heutige sendet gegen die Kappe, die nächste senden und was wartet, Link zu den Warm-up-Einstellungen und einem Warteschlangen-Empfänger erklärt, dass es gehalten wird. Das Banner ist versteckt, während das Warm-up aus oder vollständig ist, und wann immer die Aufwärmen kann nicht gelesen werden.

  12. · kamo-internal

    Typter Bulk-Sender-Client mit Feldfehlern und den Aufwärm-Endpunkten

    Der Kunde kannte einen Provider-Status namens PENDING, dass das Backend nie sendet, so dass ein Absender, der gespeichert wurde, aber noch nicht getestet fiel auf "Nicht konfiguriert". Es liest jetzt PENDING_SETUP (immer noch akzeptieren PENDING) und normalisiert den ganzen Staat an einer Stelle: die Verbindungszusammenfassung, wenn die Passwort zuletzt geändert, die Plattform-Relay und ob das Mitglied kann verwalten. Ausfälle kommen zurück als BulkEmailApiError, mit dem HTTP-Status und, für a 400, das Formularfeld das Backend genannt, so dass das Formular die Nachricht setzen kann auf diesem Feld und ein 403 kann als Zugangszustand und nicht als eine angezeigt werden Fehler. Leer 204 werden toleriert, und ein Save- oder Warm-up schreiben, dass Antworten mit einer bloßen Anerkennung wird von einem GET gefolgt, anstatt angenommen zu werden wie der Staat, das ist, was ausgeblendet die Form nach jedem Speichern. Fügt die Aufwärmrufe hinzu: GET und PUT /bulk-Provider/Warmup und POST /bulk-provider/warmup/reset.

  13. · kamo-internal

    Anschlussregel, Vorsatz und Warm-up-Ansicht-Modell hinter dem Massensender

    Die reinen Stücke, auf denen die neuen Bildschirme gebaut sind, jeweils mit Tests: - die Port-erste Verbindungsregel des Backends, gespiegelt, so dass das Formular sagen kann wie KamoCRM verbindet, bevor etwas gespeichert wird: 465 ist implizit TLS mit Anmelden, 587 ist STARTTLS mit Anmeldung, was auch immer Sicherheit sagt, anderer Hafen mit STARTTLS Upgrades und Anmeldungen, und alles andere ist Klartext ohne Anmeldung - Einklicken-Voreinstellungen für das Plattformrelais und gemeinsame Anbieter - die Form als Wert: was schmutzig ist, der speichernde Körper und Validierung, nur nach einem Benutzernamen und Passwort gefragt, wenn sich die Verbindung in - Setup-Bereitschaft und die Stufen eines Tests senden - die Aufwärmrampe, Countdown, Rhythmus- und Zeitplan-Chart-Zahlen senden useBulkWarmup befragt das Warm-up alle 15 Sekunden, während die Registerkarte sichtbar ist, Pausen, während es versteckt ist, stoppt auf einem 403, und gilt schreibt optimistisch mit Rollback.

  14. · kamo-internal

    Umgebaute Bulk-Sender-Tab mit neuem Host-Remedel-Up-Panel

    Der Bulk Email Sender Tab wird von einer langen Form zu einem Satz umgebaut Karten über einen Entwurf des gespeicherten Staates: - ein Masthead mit dem Live-Status (ein gespeicherter, aber ungetestet Absender liest jetzt "Bedürf einen Test"), wer es als sendet, die gespeicherte Verbindung in einer Zeile und als es zuletzt getestet wurde - eine vierstufige Bereitschaftsschiene: Anschluss, Absender, Test bestanden, Warm-up - die Verbindung, mit Voreingestellten, eine None / STARTTLS / SSL-TLS-Steuerung, ein Vorschlag, wenn ein bekannter Port getippt wird, und ein Live-Bericht darüber, wie KamoCRM wird tatsächlich verbinden, Warnung, wenn der Port überschreibt die gewählte Sicherheit - Anmeldung, die nur interaktiv ist, wenn sich die Verbindung anmeldet, und Passwort-Reihe, die sagt, ob man gespeichert ist und wann, mit Ersetzen und Entfernen inszeniert, bis speichern - die Absender-Identität mit einer Posteingangsvorschau, Warnung bei der Plattform Relais würde die From Domain ablehnen - eine klebrige Speicherleiste, Fehler aus dem Backend auf ihrem Feld platziert, und der gespeicherte Zustand, der von der eigenen Antwort genommen wird - ein Inline-Test senden, dass zieht, wo die Nachricht bekam, Kennzeichnung der Stadium, das es verweigerte Das New Host Warm Up Panel sitzt unten: Ein/Aus, Tempo, der aktuelle Tag als ein 14-Segment-Ring, heutige sendet gegen die Kappe mit einem Live- Countdown zum nächsten Senden, Summen, Lieferung Gesundheit und wie viel davon die Staffelberichte, der 14-Tage-Zeitplan mit jeder Tagesentscheidung und einer Obergrenze gegen die aktuelle Grafik, die heutigen stündlichen Sendungen und die unebenen Lücken zwischen aktuelle Sendungen, die Warteschlange, die Sicherheitsbremse mit Resume jetzt, und Reset. Ein Mitglied ohne das Recht, den Absender zu ändern, bekommt einen Lese-Register und eine verweigerte die Lektüre bekommt einen Zugangszustand statt eines Fehlers.

  15. · EmailService

    Eine Kampagne kann nicht gesendet oder geplant werden, ohne einen Massen-E-Mail-Nachricht

    Der Disponent verwendet, um eine solche Kampagne zu akzeptieren und dann überspringen sie auf jeder ticken, so dass es bei SENDING mit nichts als einer Log-Linie. sendNow und Zeitplan jetzt verweigern es mit einer Nachricht sagen, wo der Absender eingestellt. Ein konfigurierter Host und Port ist genug; es muss nicht überprüft worden sein.

  16. · EmailService

    Die Provider-Einstellungen api antwortet mit dem gespeicherten Zustand und benennt das Feld, das er ablehnt

    PUT gibt nun den vollen Einstellungszustand anstelle von {Erfolg: true] zurück, der nach jedem Speichern das Formular ausgeblendet. Felder werden serverseitig validiert und abgelehnt als 400 {Fehler, Feld]; eine Anmeldung ist nur erforderlich, wenn die Verbindung wird sich tatsächlich anmelden. Ein leeres Passwort behält das gespeicherte, clearPasswort entfernt und Passwort-UpdatedZu Datensätze, wenn man gesetzt wurde. Status geht zurück zu PENDING_SETUP nur, wenn sich ein lieferrelevantes Feld geändert hat. Jedes Schreiben an den verschlüsselten Blob geht jetzt durch eine gesperrt read-modify-write, das Schlüssel hält, die es nicht besitzt, weil der Blob ist über das Warm-up als auch zu tragen. Der Staat zeigt, wie E-MailService wird connect, und der Plattform org werden die Einstellungen des internen Relais angezeigt. Der Test-Sende sagt, wo es fehlgeschlagen ist (Verbindung, TLS, Login, Absender, Empfänger, Daten) mit einem kurzen Fix für jeden.

  17. · kamo-internal

    Vorschau der E-Mail wie gesendet, ein Custom / No Template Publikum, und ein echtes Aus Feld

    Vorschau: ein Dialog, der die Ausgabe des Editors selbst erstelltBodyHtml() - die string Speichern Sie Speichern und der Disponent sendet - so der Header des Publikums, Signatur und Fußzeile und die Compliance-Fußzeile sind alle da und es kann nicht abdriften von der echten E-Mail. Desktop- und mobile Ansichten, "Vorschau wie" Empfänger oder eine Stichprobe, Merge Tokens gefüllt die Art und Weise E-MailService füllt sie, ein Briefumschlag im Posteingang und ein Sandboxrahmen. Erreichbar aus der Kompose Schritt, die Fußzeile und die Fortschrittssicht einer gesendeten Kampagne. Audienz: "Custom / No Template" wickelt nichts um den Körper. Es wird gerettet als COMPANY Umfang mit SignaturScope NONE (die der Server speichert und nie liest), und die Kampagnen Grid beschriftet es als Custom. Von: seine eigenen Von Namen und Adressfelder, standardmäßig aus der Masse E-Mail Anbieter und editierbar pro Kampagne, mit einem Rückset auf die Standardeinstellung und einer Warnung wenn die Adresse nicht von der Domain des Providers entfernt ist. Dies ersetzt den Absender abgeleitet vom Publikum und dem No-Reply-Radio. Empfänger: Adressen, die die Kampagne bereits per E-Mail erhalten hat, sind mit "Already gesendet", mit einer Mitteilung, dass sie nie wieder per E-Mail; EmailService meldet dies nun pro Empfänger.

  18. · KlusterServices

    Melden Sie hello.kamocrm.com mit einem eigenen Kundenschlüssel, durch die From Domain selbst

    Kampagnenpost verlässt als hallo.kamocrm.com durch postfix-bulk. Es bekommt seine eigener DKIM-Schlüssel (Selector-Kunde, veröffentlicht als customer._domainkey.hello), und use_esld = false so eine hello.kamocrm.com Nachricht ist signiert d=hello anstatt auf den Postschlüssel der Eltern zurückzufallen, der die strenge verfehlt DKIM Ausrichtung (adkim=s) die Domain veröffentlicht.

  19. · KlusterServices

    Postfix-Bulk, ein zweites Outbound-Relais für Kampagnenpost, mit Zustellergebnissen zurückgefüttert

    Kampagnenpost geht jetzt durch eine eigene Staffel auf k3m1 (anstelle 47.181.8.87) als hallo.kamocrm.com, so Beschwerden über Massenpost nie berühren die Ruf von mail.kamocrm.com (47.181.8.84). - Plaintext Relais auf Port 25 nur für EmailService (NetworkPolicy); es akzeptiert nur @hello.kamococrm.com Absender und lehnt alles andere mit einem 4xx, nie ein 5xx, weil der Kampagne Dispatcher auf jedem 5xx unterdrückt. - Ein Egresswächter hält die Lieferung aus dem Ausland bereit, es sei denn, die öffentliche Adresse der Hülse ist 47.181.8.87, so Bulk kann nie ruhig als eine andere IP verlassen. - Ein Zustell-Events Seitenwagen liest das Mail-Log und berichtet jede Kampagne Nachricht geliefert / verschoben / geprallt / abgelaufenes Ergebnis zu EmailService, dazu kommt der X-Kamo-Ref-Header, der vor der Auslieferung abgestreift wird. Vorerst von Hand aufgetragen: deploy-services.yml bewirbt Mail/Dateien mit Namen und listet diese noch nicht auf.

  20. · EmailService

    Eine Kampagne mailt eine Adresse mindestens einmal, überhaupt

    Adressen sind getrimmt und case-unempfindlich, und eine Reihe der Kampagne hat an die Staffel übergeben (geschickt, im Flug, prallte, fehlgeschlagen, oder erneut vor Ort) ist jetzt seine permanente Aufzeichnung dieser Adresse: nie gelöscht, zurückgesetzt oder neu getrauft. - materializeRektienten, die verwendet werden, um jede Zeile zu löschen und die Liste auf jeder speichern, so Bearbeitung einer pausierten Kampagne setzen bereits E-Mail-Adressen wieder in die Warteschlange. Es hält jetzt Geschichte, erfrischt Zeilen noch nicht an Ort und Stelle kontaktiert, entfernt nur kontaktlose Zeilen, die die Liste verlassen haben, und fügt eine Adresse die Kampagne kontaktiert hat, wie oft es hinzugefügt wird. - Der Disponent behauptet, dass ein Zeilenersatz SENDING vorliegt, bevor die Staffel sie sieht. Ein Absturz zwischen dem Relais, das eine Nachricht akzeptiert, und der Zeile, die als SENT gekennzeichnet ist lassen Sie es QUEUED und senden Sie es wieder; jetzt bleibt es SENDING und ein Sweep schließt es als FAILED ohne erneutes Versuch. - Ein Empfänger hinzugefügt, während eine Kampagne angehalten wurde nie bekam eine Release-Zeit, so Es wurde nie gesendet und die Kampagne nie beendet. Release-Zeiten gehen jetzt an jede Wartereihe, der eine fehlt. - Ein Startup Unique Index auf (campaign_id, niedriger(trim(email))) unterstützt die Regel am Tisch. Der Endpunkt der Empfängerliste gibt jetzt den Namen jeder Zeile, Merge-Werte, Quelle zurück und ob es kontaktiert wurde, so Wiedereröffnung und Wiederersparnis eines Entwurfs nicht mehr Löscht Personalisierung. Die From-Adresse fällt zurück auf die des Großanbieters, und der Name From wird tatsächlich gesendet (er wurde gespeichert und gelöscht).

  21. · kamo-internal

    NoReply Outbound, eine rein gott-only-Prüfung der E-Mail als Plattform NoReply Adresse gesendet

    Ein dritter Abschnitt unter Mail, der nur gottberechtigten Mitgliedern gezeigt wird, öffnet /messages/outbound/noreply: jede Nachricht, die EmailService an die Relais als Plattform NoReply Adresse, neueste erste, mit der Suche, ein Sent/Failed Filter und eine Schublade, die die vollständige Nachricht zeigt. Die Seite wendet jeden ab, der nicht gottfähig ist. Das ist die Höflichkeit, nicht die Sperre: die Daten kommen von EmailService, die jede Sitzung verweigert ohne GD.

  22. · EmailService

    Ein Ledger von jeder Nachricht gesendet als die Plattform NoReply Adresse, lesbar nur von Gott

    Aufgezeichnet in EmailSmtpService an der einen Stelle Post erreicht das Relais, und entschieden durch die From-Adresse, so transaktionale Vorlagen, Kampagnen und Artikel-Aktien sind alle abgedeckt, ohne sich zu entscheiden. Verweigerungen werden aufgezeichnet mit der Begründung des Relais und immer noch wieder umgeworfen. Der Schreiblauf läuft in seiner eigenen Transaktion und wirft nie: Eine ausgefallene Prüfungsreihe kann nicht versagen oder zurückrollen eine Sendung. GET /api/email/noreply-outbound listet das Ledger auf (Suche, Statusfilter, paging, Körper ausgeschlossen); /{id' gibt eine Botschaft mit ihrem Körper zurück. Beide erfordern GD auf die Sitzung und nichts anderes: das Ledger umfasst alle Organisation, so dass keine org-scoped Recht kann es öffnen. Die Tabelle wird bei der Einführung von NoReplyOutboundSchema erstellt, als die article-Sharing-Ledger ist.

  23. · kamo-internal

    Ein Tracking-Link kann auf dem White-Label-CRM-Gebührenartikel landen

    Fügt ************ zu den Zielen hinzu, die der Tracking-Link-Picker anbietet /marketing/Tracking, mit eigenem Icon. Der Weg ist örtlich-frei wie seine Geschwister: die Marketing-Website 308s es zu ************ und hält ?discount= über die hop, das gleiche wie /Preis (geprüft gegen die Live-Seite). Das Label und der Hinweis der Reihe sind in Kamo-Übersetzung-Wörterbuch 7a6fd4e2.

  24. · kamo-marketing

    Lassen Sie einen Leser senden Sie die Sitzplatz-Gebüse-Artikel an jemanden, den sie kennen

    Ein "Pass it on"-Form am Fuße von ************ erreicht von einem Chip an der Spitze und einer Linie nach den sieben Fragen. Die Lesernamen bis zu drei Personen und wir mailen jedem von ihnen den Artikel einmal, mit der Lesername darauf; sie können ihn auch in ihrem eigenen Mail-Client öffnen oder kopieren der Link statt. POST /api/share-Artikel Gates es, bevor E-MailService es sieht: gleich-Herkunft nur, eine *** verifizierte Serverseite gegen den *** Dienst (der andere Formulare hier die Nutzlast weiterleiten, ohne dass jemand es überprüft), und selbst senden nur für Besucher in der EU/EWR, dem Vereinigten Königreich und der Schweiz. Es leitet einen Körper vor aus begrenzten Feldern gebaut, mit der Besucheradresse unser Einbruch aufgezeichnet, zu EmailService /api/intern/Artikel-Aktion, die die Grenzen durchsetzt und die Opt-out-Liste der Plattform org. Einsatz liest INTERNAL_AUTH_SECRET aus dem bestehenden mlos-internal-auth geheim (optional, so dass die Website noch ohne sie beginnt) und gewinnt EMAIL_SERVICE_URL und CAPCHA_SERVICE_URL.

  25. · EmailService

    Mailen Sie einen Artikel an jemanden, wie die Plattform org, mit einem funktionierenden Opt-out

    Ein Besucher auf der Marketing-Seite kann den Sitzpreis-Artikel bis zu drei Uhr senden Menschen. POST /api/interne/Teile-Aktien (X-Internal-Auth, wie jeder andere auch /api/interner Endpunkt) sendet jede von ihnen eine E-Mail als Top-Level Organisation, von "<sender" via KamoCRM" mit Reply-To the Absender. Verwendet, was existiert, anstatt eine zweite Kopie hinzuzufügen: - Opt-outs live in email_suppressions, keyed auf der Plattform org's id, so dass Opt-out hier nie berührt eine gehostete org-Liste und eine org-Liste nie blockiert dies. Der Link ist ein signiertes Token (orgId|email, HMAC) bestehender UnsubscribeController und Seite akzeptieren jetzt neben Kampagne Tokens, mit der gleichen RFC 8058 Liste-Unsubscribe Header Kampagnen senden. - Lieferung geht durch ****************, die Gewinne LieferOptionen (Anzeigename und zusätzliche Header) so Von, der SPF-Entscheidung und der Staffel-Fallback-Aufenthalt an einem Ort entschieden. Ein Anrufer-Brief gebaut hat keine Vorlagenzeile, so dass die Verwendungstheke für sie übersprungen wird. Grenzen, gezählt von einem hashed Ledger ************ erstellt bei der Gründung) so dass jede pod stimmt: drei Personen pro Anfrage, voreingestellt nur Notizen, 10 pro Tag pro Absender und pro Besucheranschrift, 500 pro Tag insgesamt, eine E-Mail pro Adresse alle 90 Tage, niemals an eine unterdrückte Adresse. Sett in der prod configmap auch massenhaft-email.unsubscribe-base-url. Der Code default ist blank, das Kampagnenmail ohne den Abmeldelink sendet.

  26. · kamo-marketing

    Legen Sie jede Seite in /sitemap.xml selbst, und liste Seiten nur in den Sprachen, die sie haben

    /sitemap.xml war ein Index, so dass Eröffnungen 79 Dateinamen anstatt die Seiten der Website. - /sitemap.xml ist jetzt eins <urlset" mit jeder Seite: 18.700 von ihnen, jeder seine englische Adresse, mit jeder Sprachversion existiert sie in hreflang abwechselnd. Das ist innerhalb des Protokolls 50.000-URL / 50 MB Grenze für eine einzelne Datei; vorbei, wird die Datei ganz abgelehnt. Changelog-Einträge gehen Sie ohne ihre Alternativen, die die Datei in der Nähe von 60 MB setzen würde. Jeder die Seite mit der Eintragung erklärt sich selbst. - Die Dateien pro Sprache, in denen jede Sprachversion eine eigene URL ist, zu /sitemap-index.xml bewegen. robots.txt benennt beide Dateien. - Eine Seite, deren Kopie einen eigenen Nachrichtennamesraum hat, und Namen Stellvertreter, nur in den Lokalen, in die Namespace wirklich übersetzt wird: mindestens 90% der Fäden vorhanden, weniger als 30% identisch mit der Englisch (app/lib/message-locales.ts). Die neue **************** Artikel und /Ressourcen haben keine Übersetzungen noch. Sie waren in allen 21 Orten, 20 von ihnen die englische Seite unter einem anderen Präfix. - Sammlungsseiten lesen das gleiche Live-Maß für "Sammlungen" anstelle von die hard-coded COLLECTION_CONTENT_LOCALES. Swahili Sammlung Kopie hat wurde übersetzt, da diese Liste geschrieben wurde, so 132 echte Swahili Seiten zeigten sie auf Englisch.

  27. · kamo-internal

    Select einer Abteilung überprüft die Mitglieder, die sie zeigt

    Die pro-Abteilung des Verzeichnisses Select verwendet, um die gesamte Liste in den Select-Modus mit nichts zu schalten checkte, und lesen Sie "Erhalten", bis wieder gedrückt. Es überprüft jetzt jedes Mitglied, dass Abteilung ist zeigen (die Suche und die Alle / Online / Offline-Streifen entscheiden, wer) und lässt von jedem überprüft gehen Draußen. Es liest immer Select, und ist für diese Abteilung allein während der Auswahl deaktiviert ist genau diese Zeilen; unkontrollieren Sie eine, jemanden an anderer Stelle überprüfen, oder ein Filter, der verschiedene zeigt Reihen bringen es zurück. Die eigene Reihe des Zuschauers wird ausgelassen: Ein Gruppenchat oder Treffen, das sie beginnen, enthält sie trotzdem, und ein Treffen würde ihnen sonst eine Chat-Einladung zu sich selbst senden. Entwickelt mit Arie-deaktiviert, so dass ein Tastaturbenutzer hält Fokus innerhalb der Panel-Trade-Trade, und gedimmt mit opacity, weil .operator-label Farbe ist !wichtig unter Rückenwind's "wichtig: true".

  28. · kamo-marketing

    Öffentliche Ankündigung darüber, wer Software-Sitzgebühren behält

    Neue Seite bei ************ erklären, für nicht-technische Eigentümer, wie weiterverkauft White-Label-Plattformen funktionieren: eine flache Agentur-Lizenz, pro Sitz Gebühren, die die Agentur hält, und dosierte Nutzung auf der Oberseite in Rechnung gestellt. Endet mit den Fragen vor der Unterzeichnung zu fragen und wie KamoCRM unterscheidet. Server-rendered Artikel mit Artikel und BreadcrumbList JSON-LD, seine eigene OG Karte, ein Sitz-Gebühren-Rechner und CTAs für kostenlose Anmeldung, Demo, Kontakt und Telefon. Verlinkt von der Ressourcen-Menü und Hub, von der Website-Banner als PSA auf die links vom Änderungsprotokoll und in der Sitemap aufgelistet.

  29. · kamo-marketing

    Listen Sie jede Seite in jeder Sprache, in der sie existiert, und machen Sie jede Seite zu vereinbaren

    /sitemap.xml listete jede Seite einmal auf, als ihre englische URL. Der 17.843 Changelog Einträge hatten keine Sprache Alternativen überhaupt, und jede Seite eigenen hreflang benannt alle 21 Orte, ob die Seite in ihnen existierte oder nicht. - Jede Sprachversion ist jetzt eine eigene <url&L", die die gesamte Seite trägt, reciprocal hreflang Cluster und x-default: Googles empfohlene Form, und die, die eine lokalisierte Seite gefunden bekommt, ohne auf einen Crawler zu warten folgen Sie einem alternativen Link zu ihm. - Eine Version wird nur dort aufgeführt, wo sie ihr eigener kanonischer ist: SITE_LOCALES für handgeschriebene Seiten, Blog-Beiträge und Changelog-Listenseiten; COLLECTION_CONTENT_LOCALES für Vergleiche, Lösungen, Integrationen und die Glossar; und für KB Artikel und Changelog-Einträge, die Locales KBService und SecurityService berichtet über eine echte Übersetzung. Ein Echo des Englischen zählt nicht. Auflistung einer Version, die canonicals auf Englisch einreicht eine URL das kann nicht indexiert werden. - Jede Seite <head" benennt genau den gleichen Satz. localeAlternates() nimmt die lokalisiert eine Seite existiert in, und ein Lokal außerhalb von ihnen canonicals auf Englisch ohne Noindex. Sammlungsseiten in Lokalen ohne Sammlung Kopie verwendet noindex sein, während jede andere Seite sie noch als Alternativen benannt. - Der Index ist nach Abschnitten (Seiten, Sammlungen, jede KB-Sektion, changelog list pages, changelog Einträge), jede Datei mit ihrem neuesten lastmod und gut innerhalb der 50.000-URL / 50 MB-Grenzen. Changelog-Dateien laufen am ältesten zuerst, so dass eine vollständige Datei nie wieder geändert wird. - Changelog list Seiten 2.N sind aufgeführt; jeder ist seine eigene kanonische. - /sitemap.json ist ein gestreamtes Dokument, das jede Seite und jede hält die Sprach-URL. /api/sitemap dient demselben Dokument. - Eine Quelle, die nicht gelesen werden kann Antworten 503 anstatt einer teilweisen Sitemap.

  30. · KBService

    Sagen Sie, welche Orte jeder öffentliche Artikel wirklich übersetzt wird

    Die Website der Marketing-Website listet jetzt jede Sprachversion von jedem help-center, Dokumentation und API-Referenz-Artikel und jede Artikelseite Benennt die anderen als seine hreflang abwechselnd. Keiner konnte eine Übersetzung sagen von einem Echo: TranslateService beantwortet Anweisungen, für die es keinen Anbieter hat die englische Quelle, so dass die sw und ta Reihen den englischen Titel und Körper wiederholen Wort für Wort (gemessen 2026-09-11). Diese zu benennen würde Suchmaschinen zeigen auf Seiten, die kanonisch zurück ins Englische. Baumknoten und einzelne Lektüren tragen jetzt "locales": die Locales, deren Titel oder body unterscheidet sich vom englischen Artikel. Der Körper allein ist genug - ein Arabisch row kann den englischen Titel über einem übersetzten Körper behalten. Bearbeitet in einer Anfrage pro Anfrage von KbTranslatedLocalesService, die sich durch die EntityManager, so dass keine freigegebene Version benötigt wird.

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