Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· SecurityService
Los demos reservados en una pista, al frente
GET ********** La sección Webinars de la página principal ha llamado /api/webinar/leads/id. desde que fue escrita y nada le sirvió. y el componente lee un 404 como "la característica del webinar está apagado" y no renderiza nada. Así que una demo reservada del sitio de marketing creó una pista, enlazaba la reserva a él, y nunca se mostraba en él. Servido aquí en lugar de en MediaService, que es el dueño de las reservas, porque la pregunta que un llamante tiene para pasar primero es "que leas esta pista": sesión válida, lidera la organización del llamante, luego LeadCommsReadGate - su propia pista no necesita ningún derecho, uno no asignado necesita VER-UNASSIGNED-LEADS, alguien Si no, las necesidades de la otra manera, VIEWLEAD-CONTACT-INFO-OTHERS, pasas de Dios. La puerta es la que la pestaña de comunicaciones usa, llamado, no copiado. Las denegaciones se registran a través de PhiAccessAuditor; una lectura no es, porque el La respuesta no lleva datos de contacto de la misma línea que las /comunicaciones/condábitos sorteos de endpoint. LeadWebinarEntry es título, inicio/fin, nombre presentador y los dos estados. Nada sobre el asistentes más allá de si todavía vienen: el nombre y la dirección del visitante son los propios y ya en la página. Un visitante que cancela y se registra de nuevo produce un segundo enlace con el mismo Los asistentes reman, y la sección lo muestra una vez. Los cinco fracasos en la suite completa **************** x4, ********** * que flags ************* no esto) fallan idénticamente en origen / principal sin esto cambio. Este endpoint resuelve una sesión, para que el trinquete no lo nombre. 2712 pruebas de otro modo verde.
· kamo-internal
Una ventana que el miembro trae a las tierras delanteras con una luz que no puedes perderte
Al hacer clic en un cabezal hexadecivero, o la tira de una ventana parada detrás, trajo la ventana hacia adelante con un Flor de sombra débil (taza) o un brillo verde de 600ms (hexhead) - fácil de perder mientras las filas se reorganizan - Recorrido. Ahora el marco en sí se ilumina: un anillo dentro del borde de la ventana con dos cometas corriendo Atravesándolo, ondas extendiéndose desde el marco y un resbalar que sostiene, unos 2.4s, luego fuera. - Lit by every member gesture que trae una ventana hacia adelante: un clic de tira, un clic de cabeza hex o restaurar (herramienta:foco), y cualquier abierto que el miembro pidió. Los aumentos entrantes se quedan callados. - Uno a la vez: la llegada más reciente oscurece la anterior, por lo que la ventana iluminada es siempre la El miembro acaba de llamar. - El movimiento reducido mantiene la señal y deja caer el movimiento: el anillo y el brillo se iluminan sin moverse. - Su propia pareja de colores en :root (---dock-arrival, --dock-arrival-ring); la barra de título ya lleva la marca, y un anillo de marca desaparece a lo largo de ella.
· kamo-shared-library
El sello visto de un presentador, por lo que una sesión reservada puede encogelos
El conteo webinar del icono de Support lee WebinarAttendee.dateed. Un presentador no es una fila de asistentes, para que una sesión reservada con ellos fue enviada por correo electrónico y luego nunca mencionada en la aplicación: la insignia se quedó en cero para la única persona que tiene que ejecutarlo. **************** (PRESENTER-DATE-VIEWED, null = aún no mostrado) es ese sello para el presentador asignado, y ScheduledWebinarRepository ganan countUnreviewedForPresenter / findUnreviewedForPresenter con el predicado de las preguntas de los asistentes: el propio SCHEDULED del presentador sesiones sin sello. WebinarQueryParseParselos a los dos contra la asignación. DDL, ya aplicado a la base de datos en vivo como propietario de la tabla: ALTER TABLE public.scheduled.webinar ADD COLUMN IF NOT EXISTS presentr.viewed timestamp(6) sin huso horario; Los cinco fracasos en la suite completa (SystemBugCountContractTest, PhiServiceTypeMappingTest, StorageDomainCoverageTest, ************* ReportVisibilityTest) fail idénticoly sobre el origen/principal sin este cambio.
· kamo-marketing
Un botón de demostración en vivo al lado de Start Free Forever
El héroe de la casa ofreció dos cosas: empezar gratis, o leer el precio. Ahora también ofrece media hora con una persona. "Libre una demostración en vivo", con "30 minutos" en un segunda línea, se sienta a la derecha de Start Free Forever y abre /demo, el flujo de reserva existente ("Media hora con alguien que conoce el producto"). Es el botón de cristal de la tira CTA, a la altura y radio de 56px de .hero-cta, así que Start Free se mantiene en la primaria. Los dos botones están agrupados con una brecha de 12px, y View Pricing los sigue. La longitud está en su propia línea para la anchura. Como una línea, "Libro un 30-Minute Live Demo" fue de 291px y cayó por debajo de Start Free en 1280, 1366 y 1440 de ancho. Dos líneas lo hacen 196px, y el par se ajusta a la columna de copia de 1280 hacia arriba y en 768. Sólo en 1024 (una columna de 361px) y en los teléfonos se apila debajo. medidas en Chrome a 390, 768, 1024, 1280, 1366, 1440 y 1920, sin desbordamiento horizontal en cualquiera de ellos. Ver Precios ahora se envuelve a su propia fila en anchos de laptop, y que expuso su borde-bajo: TouchOptimized eleva el enlace a 44px alto una vez que la página es Ocioso, así que la frontera se sentó 18px bajo el texto y leyó como un divisor. Es un texto subraya ahora, con el texto centrado en su caja. Las llaves fueron para kamo-translation-dictionary primero (7ed8a400).
· kamo-marketing
Una página para campañas y gotas de correo electrónico ilimitadas, enlazados de todas partes que pertenece
El mercadeo /email-marketing vende lo que se envía en 2026-09-16 (campañas de transmisión, goteos, dominios de envío): ilimitado y 100% gratuito con Empresa y Empresa. El único elemento audaz de la página es el control deslizante con el que se abre cada página de precios de email-marketing ("Cómo muchos contactos tienes?"), excepto que mover nunca cambia el proyecto de ley. No cita a nadie. precio de la otra manera, por 206f9f3: el argumento es el modelo de medición (taleores de contacto, enviar derechos de emisión, automatización mantenida para planes más altos), y la única figura de la página es nuestro $0. Todo. Las reclamaciones se cotejan con el producto: - 14 desencadenantes de goteo, enviar ventanas en el huso horario propio del contacto y condiciones de apertura/clic con salto o salida (dripCatalog). - Cinco de las diez recetas, dibujados con sus verdaderos desencadenantes, tiempos y salidas (goteoRecipes.ts). - Un calentamiento de 14 días con un freno de seguridad en bloques y rebotes (WarmupSettings, WarmupPlan). - Lista razones de higiene, supresión de rebotes/complajas, cancelación de suscripción de un solo clic y hosts SMTP personalizados. - "Ilimitado" significa no hay tapa basada en el plan: nada en EmailService metros an org, y la página dice ese calentamiento y enviar ventanas marca el ritmo. Enlaces en: el navegador y el pie de página, una categoría /característica, una carta /producto, una llamada bajo el /Cartillas de precios, la hoja de ruta (Bulk Email Campaigns se mueve a Lanzado), el mapa del sitio y Sitemap, y una novena carta en la página de inicio "Deja de pagar por nueve herramientas diferentes" de la página de inicio. Un servidor strip (EmailMarketingStrip) va bajo la matriz de características en cada comparación de competidores, en "Lo que realmente se proporciona" en cada página de la industria, en cinco términos de glosario y en ambos recursos artículos. PLATFORM-CAPABILIDADES, que se hace llamar la lista de lo que KamoCRM proporciona, ahora lista email marketing. Cuatro páginas de la industria dijeron que las cosas que ahora hacen goteo eran solicitables: cursos en línea, hoteles, fitness-estudios y comercio electrónico. Su copia se corrige, manteniendo lo que aún no se construye (plataforma de curso y activación de asistencia, tiempo basado en la estancia, segmentación de LTV, SMS) como solicitable, y cada elemento se mueve a un -r3 i18nKey. Verificado en una construcción de producción local: cada guardia, una ruta prerenderizada, y un charro sin cabeza sonda (42 controles) a 390, 1440 y 2560 de ancho sin desplazamiento horizontal, sin errores de consola, sin teclas de mensaje en bruto, el uso del teclado de las pestañas deslizante y de la receta, y un enlace en el cuerpo de página de cada página de arriba. El lado del diccionario es kamo-translation-dictionary 3ecaefa5.
· kamo-marketing
Juega al carrete de kamo14, y deja que se detenga
El carrete de recortado (nuevo disparo de logotipo de cierre, de otra manera frame-id, mismo 66s Tiempo de funcionamiento y calendarios de capítulos) se publica bajo su propio nombre. El kamo13 escalera se sirve inmutable y sus variantes listas de reproducción y segmentos mantienen su URLs sea lo que diga el maestro?v=, por lo que un reemplazo en el lugar nunca llegar a un visitante que regrese. La abertura del héroe ofreció reinicio y mudo pero sin forma de detener la película una vez estaba jugando. Un control de pausa/jugar ahora lidera la fila de control, y tocando la imagen también lo marca; reanudar mantiene la posición. El control sigue los propios eventos de juego/pausa del elemento, por lo que se mantiene justo cuando la carrera termina o el navegador hace una pausas de reproducción en sí. Esto cubre ambas páginas que incrustan la abertura (casa y página de honorarios de alto nivel); /watch ya se detiene a través de la los controles nativos.
· KlusterServices
Codeba el carrete kamo14
El carrete de marketing fue recortado (nuevo logotipo de cierre) y subido como public/kamo14.mp4. Consigo un nuevo nombre en lugar de reemplazar kamo13 en su lugar porque la escalera se sirve inmutable: el maestro ?v= no llega a la variantes listas de reproducción o segmentos, que mantienen sus URLs relativas. El trabajo de codificación ahora construye público/hls/kamo14/ y kamo14-poster.*, y el El canal en vivo MediaMTX bucles de la escalera kamo14. El nombre de la ruta en vivo/kamo13 es Sin cambios.
· kamo-internal
Windows que no encaen en el muelle paradas en filas detrás de él
Una ventana de herramientas que no se ajusta a la primera fila ahora se para en una fila BEHIND it, una tira de título superior por fila: su barra de título de 42px y 10px de espectáculo corporal arriba la fila delante, como las pestañas de una pila de carpetas. Esto sustituye a la cascada, que colocó cada ventana sobre la fila y enterró a la mayoría de ellas. Las filas son el orden de ventana trazado por el primer atuendo (herramientaDockPlacement, DiseñoDockStack): una ventana entra en la fila delantera con espacio para ella, así que La primera fila nunca se deja medio vacía mientras que una ventana que encaja esperando detrás. Cada fila comparte una altura. Cuando la tira trasera pasaría la parte superior margen, cada ventana da paso juntos, y la altura vuelve como el filas vacías. La fila, el ascensor y la altura de la tira están escritos en cada uno ventana en el mismo relevo que dockX (dockRows), y nunca se perseveran. Quien está al frente es un reordenador (toolDockTiers): - Un clic en una franja intercambia lugares con la ventana delantera que más utilizó el miembro Hace poco. La regencia se sigue únicamente a los gestos de los miembros (dockMemberUse), porque el contador z también sube para los aumentos entrantes. - Una ventana que el miembro abre, restaura de su cabeza hechizo, vuelve a poner de la parte de la vista, muelles o aumentos de una notificación se sientan delante, comerciando con la ventana delantera usó LEAST recientemente. Ventanas levantadas por mensajes entrantes ir a donde haya habitación, así que nunca toman el lugar de la en uso. - Una caída en el muelle mantiene el lugar donde fue abandonado; el menos recientemente Las ventanas delanteras usadas retroceden para hacer espacio. - Un cierre de ventana delantera o minimizado se sustituye por la ventana de pie más cerca de ella, y nada más se mueve. - Una ventana más ancha que se adelantan las ventanas delanteras menos utilizadas hacia atrás hasta que que quede encaja. En pantalla (ToolWindowShell, ToolDock): - Una ventana detrás se corta a su tira, que también es su área de golpe. Es su el cuerpo es inerte, por lo que no toma ningún enfoque ni pulsación de teclado y no pinta barra de desplazamiento. Pinta debajo de cada ventana delantera y nunca se le dice que está enfocado. - El título de la tira es un botón (adelantar, teclado accesible), espectáculos el conteo sin leer, y se atenúe con cada fila más atrás. - Sus botones de cerca, minimizan, maximizan y flotanen actúan en él donde está. Un lastre que comienza en una tira no es también un clic, y tampoco es un doble clic. - Adelante, la ventana se cae y se despliega en la ranura mientras el comercio uno se pliegue y se levante detrás. Ambos corren en la curva de 340ms del muelle, luego a la sombra flor y un barrido ligero marcan la llegada. Hovering una tira lo levanta y descubre un poco más de ella. Una ventana nacida detrás se asoma por detrás la hilera delantera; uno que nace al frente se levanta del borde inferior, opaco. - El movimiento reducido mantiene las filas y el sombreado y deja caer todo movimiento. - Las costuras de redimensión son solo de primera fila. La costura de altura se detiene donde la parte trasera strip cumple con el margen superior, y anuncia ese techo. Encontrado en el camino, y arreglado: el muelle renderizado ventanas en orden de la tienda, por lo que cualquier reordenar (incluyendo el arrastrero, antes de este cambio) hizo Reactar la ventana de movimiento elementos alrededor del documento. Un elemento movido pierde el estado DOM: un log desplazado a 300 regresó a 0, un elemento mediático de juego se detiene, y la transición llevar una ventana a su nueva ranura se deja caer. ToolDock ahora renderiza ventanas en orden de creación, que es seguro porque cada ventana se fija en su propia nivel pintado. Verificado en el verdadero Chrome con todo el muelle en los cuerpos de ventanas de rastro: 64 los controles medidos. Cubrin filas, clip y hit-testing, cuerpos inertes y barras de desplazamiento, enfoque, flotar, ambas direcciones de swap, teclado, botones de tira, de altura de toma, arrastre de una tira, movimiento reducido, maximizar y restaurar, aport de re-flow, una gota más allá de la primera fila, el techo de costura y preservado posiciones de desplazamiento, además de screencasts en tiempo real de cada transición. Las nuevas pruebas de unidad y proveedor cubren el diseño, reordenamiento, apilamiento, concha y muelle.
· kamo-marketing
Siete conjuntos de enlaces que coinciden con el nav, y las carreras van al sitio de carreras
El pie de página ahora enumera características, Servicios, Precios, Compañía, Recursos, Soluciones y Legal, en ese orden. Ese es el cinco de los mejores nav. categorías más los dos nidos bajo Recursos, y cada conjunto tiene la los enlaces de nav bajo las etiquetas del navegador. Las etiquetas provienen de la "nav". namespace, que se traduce en cada lugar, por lo que esto no añade copia. Las traducciones del pie eran la clave idéntica para la llave de todos modos. Dos enlaces sólo aquí abajo: Vea la película bajo las características, y la galleta Botón de configuración bajo Legal. El producto era el viejo rumbo y se ha ido. Precios y soluciones consiguen juegos propios, y Legal ya no se envuelve sola en una segunda fila. Carreras profesionales es https://careers.kamocrm.com/ en todas partes aparece: el nav's Menú de la empresa (escritorio y móvil), el pie de página, la tarjeta de página de la empresa y el mapa del sitio. La URL vive en app/lib/careers-site.ts. /careers is now a redirecciones permanentes allí, como /vs, por lo que resultados de búsqueda, marcadores y Los enlaces externos también llegan a los roles abiertos. La página de marketing que sustituye Dijo que no hubo aperturas mientras el sitio de carreras enumera una. La página, su componente de cliente, diseño y imagen OG se eliminan. La ruta está fuera de la página-espectáculo de Sitemap (SITEMAP-EXCLUDED, con la razón), fuera de la página-view contra (UNCOUNTED-STATIC-ROUTES) y fuera de las páginas de la cacería, porque a el escenario no puede esconderse en una página que redirija fuera del sitio. La caza elige páginas por índice modulo la lista, por lo que las páginas de hoy en escena se reorganizan una vez en desplegarse, lo mismo que un rollover de día. El enlace no se vuelve ahosted per arrendatario de la forma en que se registra./login. los enlaces son. Sólo www.kamocrm.com sirve hoy en día a este sitio. Cinco de los ocho inquilinos dominios que he comprobado no tienen carreras. DNS en absoluto, así que carreras. ser un eslabón muerto en ellos. Disminución: el pie de página utiliza el ancho completo en lugar de la columna de 1280px, y la fila de la marca (logo y eslogan, iconos sociales y teléfono) se encuentra por encima de la conjuntos. Los juegos son 2 columnas en un teléfono, 3 de sm, 4 de md y una fila de 7 de xl. Las direcciones y etiquetas pueden romperse dentro de una palabra. Una traducida palabra puede ser más ancha que una columna de 149px (de "Dienstleistungen", "Anwendungsentwicklung"), y sin un eslabón enlaza en línea crece a su palabra más larga y empuja más allá de la columna. Verificado contra la página de ejecución, no contra la fuente. On /en/ sobre los siete Los encabezados se ponen en orden, y cada enlace se resuelve en su ruta /en excepto Carreras, que es https://careers.kamocrm.com/. Real clicks en Carreras en el desplegable de la empresa de escritorio, el menú móvil y el pie de página cada navegando a https://careers.kamocrm.com/. /en/cares and /de/cares, responder 308 a y /carrera pasa por /en/carrera. Medí cada columna en 390, 768, 1024, 1280, 1440, 1920 y 2560px en en, en 390, 768 y 1280 en de, ru y fr, y a los 768 y 1280 en ta: ningún elemento desborda su columna y no hay desplazamiento de página horizontal. check-i18n-keys fue probado por mutación contra el nuevo pie de página (una llave de nave falso falla). npm prueba, check-chat, tsc y La construcción de la carrera (con sus guardias pre y posteriores a la construcción) están limpios.
· kamo-internal
Campañas de dip en /marketing/email. desencadenantes, un constructor visual, personas y rendimiento
/marketing/email obtiene un interruptor de Transmisores / Drips (?view=drips). El ipps ve lista cada goteo como un tarjeta con su desencadenante, su secuencia y cuenta en vivo, KPI y pestañas de estado, búsqueda y clasificación, y comienza un nuevo goteo en blanco o de diez recetas (bienvenidos nuevos leads, saludos de cumpleaños, conocer a su nuevo agente, afirmó introducción de plomo, crianza de estatus, re-enganche a los no-abridores, seguimiento de enlaces clic, miembro del equipo y miembro a bordo, y más). /marketing/email/got es el constructor: - Disparador: una nueva pista (por mano, importada, integraciones; mercados, vendedores, productos), un estatus o cambio de subestómago de/a, una reasignación, un crédito o reclamación gratuita para todos, cumpleaños y aniversarios, un miembro del equipo o cuenta miembro creado, un correo electrónico de campaña enviado / abierto / enlaceba clic, sin compromiso con una campaña después de los días N, terminando otro goteo, o gente añadida a mano. - Correos electrónicos en un lienzo: añadir, duplicado, arrastrar a reordenar, una espera antes de cada uno (minutos a semanas, de la por correo electrónico antes), una ventana de envío por correo electrónico o para el goteo (días, horas, el contacto o el el tiempo de la organización), y una condición (sólo si el correo electrónico anterior estaba o no se abrió o hizo clic, De lo contrario, omita o deja el goteo). - Configuración: De y Reply-To exactamente como una campaña (los recolectores compartidos), la plantilla de firmas, que puede únase de nuevo (una vez, después de salir con un enfriamiento, o reinicio), y cuando la gente se vaya (un cambio de estado, una reasignación, un clic). - Una tira de preparación, Guardar (Ctrl/Cmd-S), Activar con una ráfaza, Pausa, Archivo, Duplicado, Borrar; sin salvar Las ediciones están custodiadas y el cambio de un colega llega en vivo. - Gente: quién está en el goteo, dónde están y cuando va su siguiente correo electrónico, la línea de tiempo de cada persona, añadir gente a mano, saca a alguien. Rendimiento: unido / en curso / terminado / a la izquierda, un embudo de correo electrónico, y actividad en vivo. Un nuevo goteo, en blanco o de una receta, no se crea hasta su primera salvación, como con una nueva campaña, por lo que cada El email se almacena con la plantilla y el pie de cumplimiento. La plantilla y el pie de página del editor de la campaña contexto se trasladó al usoCampaignEmailTemplate, compartido con el constructor (cuerpos y peticiones guardados compararse idéntico antes y después). CountUp ahora escribe un primer objetivo de 0 en lugar de un guión. EmailService sirve /api/email/gotes y marcos de "goteo" en el tema de las campañas; el inglés está en el diccionario.
· kamo-marketing
Cada página muestra cuántas veces se ha visto
Un mostrador de vistas ahora se sienta al pie de cada página, en la fila inferior del pie de página al lado de Sitemap y Volver arriba: un ojo cuyo iris es el hexágono del sitio, y la figura en los tameles de odómetro en los propios dígitos del lector (Bengali's, árabe, Agrupación de Hindi). La primera vez que la píldora está en pantalla en la que los carretes giran lugar de la izquierda, y cuando esta visita fue la que acaba de contar la última El carrete se da la vuelta a uno cuando un número 1 se levanta. Hover o enfoque de teclado abre un tarjeta con la figura y lo que mide; un toque lo abre en contacto; un clic Gira los carretes otra vez. El movimiento reducido obtiene la figura y la tarjeta, y Nada que viaje. Los costos de la página no cargan nada: - Nada de una vista se lee mientras una página se hace. Todas las rutas siguen prerendered (check-estático-rutas: 247, centinales intactos); el HTML lleva un marcador de posición de tamaño, por lo que el swap no mueve la fila. - El conde es un POST a través de la cola ociosa compartida, después de la página ha cargado, y cuenta y responde en la misma petición. Un lector que se va antes de que la ranura ociosa todavía cuenta: pagehide y navegación in-site enviar un Baelle para una vista no enviada. - Los carretes, su movimiento y su hoja de estilo son un pedazo separado, buscados Sólo cuando el pie de página se acerca a 800px de la pantalla. - "Ninguna figura" responde 200 con vistas nulas, nunca 404 o 503, por lo que un KBService reiniciar no puede poner un error de consola en cada página. Donde una vista cuenta ************* un artículo de base de conocimiento cuenta con el artículo, por guido, por lo que la figura es parte de los datos del artículo en KBService y lo sigue a través de renombre y movimientos; cada otra página cuenta en su camino sin el lugar, así /en/precios y /fr/prisaje compartido uno figura. Un sendero sólo cuenta si este sitio le serviría: la ruta existe y su babosa nombra a un verdadero competidor, término glosario, servicio, entrada de blog, publicado artículo (en su camino canónico) o entrada de cambio. Arrastres, descamadores de enlace, Las auditorías y el webdriver se muestran la cifra sin añadir a ella, y la misma navegador que envía la misma página dos veces dentro de cinco segundos es una vista. Cada contador parte de una cifra trazada entre 312.384 y 1.200.384 cuando fila se crea, colocada por la prioridad del mapa del sitio de la página por lo que la página de inicio comienza alto y una entrada de cambio bajo. Las prioridades en línea del mapa del sitio se trasladaron SITEMAP-PRIORITY para que ambos lean una lista; kb-sections.ts reemplaza las dos copias de la verificación de las KB-SECCIONES el contador habría hecho tres. La fila inferior del pie de página apila la marca maquetada bajo la línea de derechos de autor: con el contador añadido, los tres uno al lado ya no caben en 1440px. check-page-views.ts (preconstruir y probar) falla la construcción cuando una ruta dinámica es no en routes.ts, cuando un diseño o el Footer detiene el montaje del mostrador, o cuando cualquier cosa menos su manejador de ruta importa el solucionador. Probado por borrado a la entrada de ruta, el Footer monta e inventando una entrada rancio: cada uno falla. Necesita KBService 167981e (los puntos finales /internales/páginas) y el las teclas de diccionario.pageViews* (5909948c); hasta que KBService esté en vivo el La píldora simplemente no aparece.
· KBService
Cuenta las vistas de la página del sitio de marketing, en el artículo o en la página
KBService ahora responde a los espectáculos de venta de kamo-marketing de la opinión de en cada página. Dos puntos finales, ambos "vistas": ná con la vista acaba de contar incluido: Mensaje **************** .. . . . . . . . . . . . . . . . . . . . POST /internal/page-views/pages .path, importancia, count. Un artículo de base de conocimiento cuenta con el propio artículo (KB-ARTICLE-VIEWS, por uid), por lo que su conde lo sigue a través de los nombres y se mueve en /kb; el guido debe nombre a un artículo publicado y público, por la misma norma artículo público endpoints usa. Todas las otras páginas cuentan en su camino debajo del prefijo local (MARKETING-PAGE-VIEWS). Cada escritura es una tracción nativa con la lectura total En la misma transacción, volvió a ser juzgado en un conflicto de Yugabyte. En /internal, no /api/kb/public: APIService reenvía todo /api/kb/** de api.kamocrm.com y la cadena de seguridad de este servicio lo permite todo, así que a Contando el punto final habría un bucle de rizos público lejos de cualquier figura. El nuevo InternalAuthFilter requiere X-Internal-Auth (mlos-internal-auth, ahora montado opcionalmente) en todo el prefijo/internal, decidido por la ruta de servlet decodificada, y responde a 503 en lugar de abrirse cuando falta el secreto. El El manejador de rutas del sitio de marketing es el único que llama y toma cada decisión sobre lo que cuenta: páginas reales solamente, los rastros mostraron la figura sin añadir a él, una repetición de un navegador dentro de cinco segundos contado una vez. La figura de partida de un contador se dibuja una vez, cuando se crea su fila, entre 312.384 y 1.200.384. El que llama pasa una importancia de 0 a 1 (la página es Sitemap prioridad) y PageViewSeed coloca el sorteo en una banda a su alrededor, por lo que el Página de inicio comienza alta y una entrada de cambio baja; los extremos aterrizan exactamente en el rango termina sin sujetar. La semilla se almacena aparte de la contada vistas, así que el tráfico real permanece legible. Las filas aparecen a petición primera; count=false crea una sin contar, para rastrojos y para semilla. create.page.views.sql es el DDL, aplicado a mano a la base de datos en vivo antes este empuje y coincidir lo que Hibernate genera para la biblioteca compartida entidades (comprobadas en los puntos 6.2 y 6.5). El ConfigMap gana interna.auth.secret, y también lo hace la copia de repo. 23 nuevas pruebas: la gama de semillas y bandas, caminos canónicos y guidos, que declarar una vista corre, y los endpoints a través del filtro real (sin secreto, secreto equivocado, desconcertado secreto, mal camino, artículo desconocido). Eliminar el filtro Comproje prefijo e invierte la bandera del conteo cada uno de ellos enrojeciéndolos rojos.
· kamo-shared-library
Converos de visión de página para el sitio de marketing
Dos mesas detrás de la vista count kamo-marketing ahora se muestra al pie de cada página, escrita por los endpoints /internal/page-views de KBService. KbArticleView (KB-ARTICLE-VIEWS) cuenta las opiniones de un artículo de base de conocimientos sobre el ARTICULO, enclavado por su uid, por lo que el conteo es parte del artículo y sigue cuando se renombra o se muda en /kb. Es una tabla propia en lugar de una columna en KB-ARTICLES: la fila del artículo se guarda entera por JPA, así que un contador en se leería cuando un editor abrió el artículo y se le escribiría cuando salvó, desechando todas las vistas en el medio. Las cascadas de las llaves extranjeras en el base de datos, porque KbArticle no mapea esta fila y un Hibernate borrado de un artículo de lo contrario fracasaría en ello. MarketingPageView (MARKETING-PAGE-VIEWS) cuenta cada página en su camino debajo del prefijo locale, así /en/precio y /fr/precio compartido comparten un conteo. Ambos se mantienen SEED-COUNT, la figura de partida con la que se crea una fila, aparte de VIEW-COUNT, las vistas realmente contadas; la página muestra su suma, y real El tráfico se mantiene legible de la mesa. Los repositorios exponen sólo las tres declaraciones que una opinión necesita: un nativo upsert que cuenta, uno que se siembra sin contar, y el total, leer después escribir en la misma transacción. Sin guardar(): un contador cargado, incrementado y guardado pierde opiniones concurrentes. Checked offline: una fábrica de sesión se construye sobre las once entidades KB más estos en Hiberna Hiberna 6.2.13 (KBService, y el otro Bota 3.1 servicios) y 6.5.3 (Boot 3.3), y el guión de esquema que escribe coincide con el DDL aplicado por mano, incluyendo EN CASCADE DELETE. ddl-auto no es ninguna en todas partes excepto inicializador, por lo que ningún otro servicio toca las mesas.
· kamo-internal
El Logo del estilo de vida, un cuarto logotipo por marca y la marca de agua de fondo predeterminada
Behavior & Labeling gana una ranura de Lifestyle Logo junto al logotipo completo, el simple logotipo y el icono de la pestaña, tanto en la empresa como en las filas de software (marca blanca). Se necesita obras de arte y vectores de píxeles por igual: un SVG o un raster se mantiene exactamente como elegido, un EPS/AI/PDF se convierte en el camino (sin navegador puede dibujar uno), y un raster ofrece "Convert to vector", que abre la imagen compartidaToSVGConverter sólo cuando el el miembro pregunta. Al igual que el icono de la pestaña, cada ranura tiene un interruptor (una subida lo enciende, lado del servidor también) y un Image caption que dice lo que una superficie de estilo de vida realmente extraerá, de la forma no guardada. El logotipo del estilo de vida predetermina el logotipo completo cuando no está listo. Para cada marca, resolveLogoVariant en tema/brand.ts es la cadena: el logotipo de estilo de vida del software cuando está en uso, de lo contrario el software completo logotipo cuando Anula la compañía, el de la empresa logotipo de estilo de vida cuando está en uso, de lo contrario la compañía logotipo completo. El estilo de vidaLogo.ts establece la misma cadena que los subtítulos; una prueba corre a través de los 32 estados de forma. Antecedentes Watermark ofrece el logo de la vida primero, y es el valor predeterminado: valores nulos y desconocidos resuelven a LIFESTYLE, que dibuja todo el logo hasta que existe un logotipo de estilo de vida, por lo que no cambia la marca de agua de org hasta que suba uno. Cada lugar que pinta la marca de agua (BackgroundWatermark, Backdrop, el error y páginas no-cubiertas) ahora pasa por resoluciónWatermarkVariant / marca de aguaLogoFile. - /network/create: un grupo de logotipo de estilo de vida con la misma ingesta, cargado después de la existencia de la org como type=lifestyle; el recolector de marca de agua ofrece estilo de vida primero y la forma predeterminada a él. - Asistente de configuración: Logos consigue empresa y tragamonedas de estilo de vida de marca blanca (mostrando la viva cuando está en uso), Los fondos ofrecen la marca de agua Lifestyle, y orgDetails resuelve el defecto de la misma manera. - El esquema de la ruta orge dice bgWatermark como una cuerda lisa. Es .parse()s, así que el viejo ["NONE","FULL""SIMPLE"] enum habría lanzado en todo el registro de org para una fila de LIFESTYLE; Organización.fromJSON resuelve valores desconocidos en su lugar. Los cuatro campos de estilo de vida montan el récord de org a través de OrgContext, y DynamicMetaLoader mantiene ************* de config.json. Necesita library compartida de kamo f22a867d y los tipos de carga del servicio de seguridad (presionado primero), y el las claves del diccionario (empuje primero, en cada lugar).
· SecurityService
Logo de estilo de vida suben, las teclas config.json y la marca de agua LIFESTYLE
El logotipo del estilo de vida es un cuarto logotipo por marca (compasión y marca blanca), la versión decorativa de la la marca de agua de fondo ahora se extrae por defecto. Su retroceso es el logotipo completo. - upload-logo toma tipo=lifestyle y type=lifestyle-software. El archivo mantiene su extensión real (Las obras de arte fotográfica son bienvenidas, trazar un raster es la elección del miembro en el tiempo de carga) **************** la columna ext lo graba, y la carga enciende el logo, en el contrato de los iconos de la pestaña. Un raster también se refleja bajo el nombre de .svg como un stand-in, como el completo Logotipos, así que una superficie que aún no ha leído la extensión todavía muestra la propia obra de arte de la org. - config.json nombres logoLifestyleExt / logoLifestyleSoftwareExt mientras que ese logotipo está en uso (Subido Y encendido); ausente significa que el logotipo completo se encuentra. - La carga útil de creación mantiene bgWatermark LIFESTYLE en lugar de dejarlo caer a null. - ******************* añade las cuatro columnas nulas. Aplicado a mano en la vida clúster en 2026-09-16, antes de que se impulsara el cambio de entidad de la biblioteca compartida de kamo.
· kamo-shared-library
Columnas de logotipo de estilo de vida, y LIFESTYLE como la marca de agua por defecto
El logotipo del estilo de vida es una cuarta pieza de la obra de arte de marca por marca, junto al logotipo completo, el simple logotipo y el icono de la pestaña: la versión decorativa que la marca de agua de fondo saca por defecto. Es con forma exactamente como el par de iconos de la pestaña: logolifestyle.ext (y su gemelo de software) está escrito sólo por El endpoint de carga de SecurityService desde el archivo que almacenaba, y se dobla como el marcador "uno existe"; logolifestyle.enabled es el interruptor a su lado. PUT /org/-id puede parchear los dos interruptores, nunca el extensiones. bg.watermark ahora documenta LIFESTYLE, al que cada cliente resuelve nulo. Es el logotipo completo para. siempre y cuando un org no tenga ningún logotipo de estilo de vida en uso, así que nada que nadie vea cambia hasta que uno sea subido. Las cuatro columnas provienen de ********************** aplicado a mano en el racimos en vivo antes de este empuje: cualquier servicio Java construido después de que los SELECT los en cada org leído.
· EmailService
Campañas de gota
Un goteo es una secuencia automatizada de correos electrónicos en los que una persona entra cuando algo sucede: una pista llega (por mano, importada, o de una integración), una pista cambios en el estado o subestado, se reasigna o se reclama una ventaja con un crédito, a El cumpleaños o aniversario de la pista viene, un miembro del equipo o cuenta de miembro es creado, un correo electrónico de campaña es enviado, abierto, clic o que no responde, alguien termina otro goteo, o un miembro los añade a mano. Cada correo electrónico tiene su propio esperar, enviar ventana (en el huso o el huso horario del contacto) y acondicionar cómo lo hizo el correo electrónico anterior. Enviando. Un correo electrónico de goteo hace cola en una campaña de edición oculta por (paso, ciclo) a través de **************** por lo que sale exactamente como la campaña correo: opt-out y controles de elegibilidad, los anfitriones del liberador, calentamiento y envío ventana, DKIM, seguimiento, darse de baja, rebotes y la caja de salida escenificada. Las ediciones son Dejada fuera de la lista de campañas, la instantánea, el widget casero y el progreso marcos de compromiso, y los endpoints de campaña responden 404 por uno. Motor (goteo/DripEngine): cada 5s en su propio hilo bajo arrendamiento email-gotp-engine, drena email-drip-tris (extiende primero, luego matriculaciones), barridos cumpleaños y aniversarios una vez por día local, y mueve a cada persona debida en: espera cuenta de cuando el correo electrónico anterior era en realidad enviado, un rebote o opt-out termina la carrera, una persona se lee de nuevo antes de cada correo electrónico (símbitos de fusión: nombre, agente, mercado y el resto), y una carrera terminada deja que arranquen goteras encadenadas. El reingreso es una vez más, después de terminar (con un enfriamiento) o reinicio; las reglas de salida sacan a la gente en un cambio de estado, a reasignación o un clic en un enlace de goteo. API: /api/email/gotipes (lista, opciones, CRUD, activar, pausa, archivo, unarchivo, duplicado, personas, matrícula manual, remoción, cronogramas, actividad), VIEW-BULK-EMAIL para leer y MANAGE-BULK-EMAIL para cambiar. En vivo: tipo "goteo" Marcos sobre el tema de las campañas, se unen por segundo. Los envíos de campaña, los primeros abiertos y los clics de enlace (ahora con la URL) se entregan a DripTriggerRecorder, de la biblioteca compartida de kamo. Las mesas y las columnas de edición fueron aplicado a mano ************* antes de este commit.
· SecurityService
Un plomo importado se registra como importado
LeadImportController creó cada fila con la creación de dos agujeros, por lo que un La historia de la protagonista dijo que la fuente API sin que nadie actuara, exactamente igual que uno enviado. a través de la API de admisión de proveedores. Nada podía decir una importación de una integración, y las campañas de goteo que comienzan en "llega una nueva pista" ofrecen la opción entre pistas añadidas a mano, importadas o de integraciones. Las filas se crean ahora con IMPORT fuente. Construido contra la biblioteca compartida de kamo b5b56d6d, cuya historia de liderazgo también entrega nuevas pistas, cambios de estado, reasignaciones, reclamaciones de crédito y nuevas cuentas de miembros al motor de goteo.
· kamo-internal
Reply-To del editor de la campaña es una opción . NoRespuesta, E-mail o personal personal, NoRespuesta por defecto
El texto libre Responder a través de la CampañaRespuestaToPicker, tres opciones que cada uno dice donde las respuestas aterrizan: - NoReply (por defecto): NoResponder a la campaña De dominio, por ejemplo. NoRerrely-hello.kamocrm.com, "que no recibe correos" - Correo electrónico de los miembros: la edición de los miembros, mostramos por dirección. Una campaña cuyas respuestas ya van a un compañero de equipo se mantiene Mostrando al compañero de equipo hasta que alguien vuelva a elegir la opción. Un miembro sin correo electrónico en su perfil no puede elegirlo. - Personalizada: una casilla marcada tal como está mecanografiada, la forma en que EmailService lo comprueba en el ahorro. La lógica es ************* leer una campaña (una de antes de la elección es Personalizar cuando tiene un dirección, NoRespuesta cuando no), elija, muestre la dirección y construya los campos de salvación (respuesta, respuestaToMode, respuesta aMemberId). Una dirección personalizada inacabada devuelve Ahorra y aparece en la lista de verificación de envío. Los espectáculos previos el Reply-A el destinatario se obtendrá.
· kamo-shared-library
Campaña de diva se desencadena, registrada donde las pistas y los miembros cambian
Las campañas de diva comienzan cuando algo sucede en el CRM, por lo que los lugares que cambiar pistas y los miembros ahora entregan esos eventos al motor de goteo de EmailService: - PrincipalHistoryService: una pista creada (con cómo llegó: a mano, importada, o de una integración o forma), un estatus o cambio de subestómago con ambos bandos, y una reasignación de un miembro del equipo a otro. - ************* una pista de grupo reclamada por gastar un crédito (pagado o gratis para todos), que no registra ningún historial de plomo propio. - MemberService: creación de una cuenta de miembro o miembro del equipo. El espejo de la plataforma fila no es un nuevo miembro del proveedor org y no comienza nada. DripTriggerRecorder los escribe a ************* que el drenajes de motores. Sólo escribe para un org cuyo ACTIVE gotea escucha de ese tipo (disparate o regla de salida, leído a lo sumo cada 30s), entrega después de la causa transacción se compromete, y escribe en su propio hilo y conexión, por lo que una pista Escribir nunca puede fallar o retroceder debido a un goteo. Una pista creada Vacío (una prueba plomo o un duplicado) no es alguien a quien bienvenido. EmailCampaignEntity maps drip.id, drip.step.id y drip.cycle: un correo electrónico por goteo envía a través de una campaña de edición oculta por (paso, ciclo), por lo que mantiene cada enviar garantía tiene una campaña. Las columnas y tablas se aplicaron a mano antes de este commit (emailservice ****************
· kamo-marketing
Abierto mensualmente, y vende los términos de 1 y 3 años como bloqueo en la tarifa actual
La mayoría de los compradores vienen a comparar lo que pagarían sin compromiso, así que HOME-TERM es ahora mensual. /precio, la tira plan de la página principal, /calculadora y el marcado del producto todavía abierto en el mismo término juntos. Los términos más largos son lo que el carril vende a partir de ahí: una tarifa inferior por asiento, encerrada en Precio de hoy a término. - La ceja del carril dice "Lock in today rate for 1 o 3 years", y a frase bajo el carril dice lo que hace el término seleccionado: mensualmente no compromiso; anual y 3 años mantienen el precio actual durante 12 meses o 3 años, incluso si nuestros precios suben. Los tres billetes comparten una celda de cuadrícula, así que elegir un término nunca mueve las cartas a continuación, en ningún idioma (medido en en, de y ja). Ambas líneas están equilibradas, por lo que un teléfono nunca se queda uno una palabra. - Las líneas de carta y calculadora conducen con "Rate bloqueado durante meses N". - En la línea guardada mensualmente la carta deja caer "sobre el término", que en un... El mes de mes sólo repitió la cifra mensual a su lado. - La tira de la página de inicio subtítulos de su precio "por asiento en un plazo de un año de meses", que en mensual se leía como un plazo de 0.083 años; ahora dice facturación mensuales, con la cerraja de 1 y 3 años a su lado. - La descripción de la búsqueda de /precios denomina el precio de tres años como encierro, y la página de la oferta vencida apunta a la misma cosa. Correcciones de cheque-product clavaron el impago de tres años (49,32.83). Ahora pasa alfileres. mensuales (69, 46,23), por lo que un cambio silencioso de impago aún falla la construcción. La copia está en kamo-translación-diccionario, escrito a mano en total 20 traducidos locales. El mismo empuje restaura 340 valores la sincronización de hoy en quiebra, que había fallado la copiadora de esta repo para cada construcción desde entonces.
· EmailService
Las respuestas de una campaña van a NoReply, el e-mail del miembro, o una dirección personalizada.
La respuesta del editor se convierte en tres opciones (CampaignReplyTo), mantenidas en la columna de respuesta existente. No DDL. - NO-REPLY (columna vacía, la predeterminada): Responder-A: NoResponder el dominio de From, delescrito por NoReplySenderService como cualquier otra dirección de NoRespuesta. El destinatario ve antes de escribir que nadie lo lee, y postfix-k3m1inbound rechaza lo que se envía allí. - MIEMBROS (miembro: .id): el e-mail del miembro que lo eligió, buscó cuando cada mensaje está compuesto (CampaignRespuesta a los miembros, mantenidos cinco minutos), por lo que se sigue una dirección cambiada. Cae un miembro sin correo electrónico volver a NoReply en lugar de nombrar una dirección que nadie recibe. - CLIOM (dirección): comprobado en el ahorro, desnudo y con un dominio salpiado; cualquier otra cosa es un decir 400 por qué. Los ahorros llevan respuestaParaMode y contesta aMemberId. Las respuestas pueden ir al miembro ahorrando, o quedarse con el miembro ya elegido cuando un compañero de equipo salva, pero nunca a otro miembro elegido por id. Un editor de antes de la elección envía sólo una dirección: uno es CLIENTE, ninguno es NO-REPLY. El modelo leído de la campaña añade respuestaParaMode y contesta a la ida y vuelta, y respuestaPara convertirse en la dirección que el editor muestra (la dirección personalizada o el correo electrónico del miembro).
· kamo-internal
Outbound E-Mail Hosts muestra los relevos masivos a medida que los servidores receptores los ven
Una tarjeta de "relés de granel" por encima de la plataforma alberga: el relevo compartido de todos los dominios de envío de organizaciones se va a través (contact.kamocrm.com, 47.181.8.86) y el propio de la organización de la plataforma (hello.kamocrm.com, 47.181.8.87). - Hechos: de dónde sale el correo de cada relé, donde EmailService lo alcanza en el clúster, y para los compartidos relegue si su inicio de sesión está configurado y cuántos dominios verificados envían a través de él. - Comprendes, cada derecho, diferente, falta o no contestado: la dirección (A) del nombre (A), su política de remitentes (SPF), donde van los rebotes (MX, que para el relevo compartido debe volver a su propia dirección), la dirección es inversa DNS (PTR) y la clave de firma del relevo de la plataforma (DKIM). Un disco que no está bien muestra lo que debería estar al lado lo que DNS tiene. - DNS inverso dice que está establecido por el proveedor de internet que es el dueño de la dirección, así que nadie la busca en el DNS anfitrión. Una mirada que no obtuvo respuesta es "No podrías comprobar", nunca "equivocada". - Lea de GET ************* cuando se abra la pestaña y en "Comprobar ahora". Nunca lo es. encuestada, una re-cheque fallida mantiene lo que está en la pantalla, y sin MANAGE-OUTBOUND-EMAIL-HOSTS no hace nada.
· KlusterServices
Las rebotes para los dominios de envío de organizaciones llegan a EmailService a través de postfix-k3m1-inbound
Una campaña enviada a través del relevo compartido tiene su parte de envío de la organización como su sobre remitente, y ese dominio es un CNAME para contact.kamocrm.com, cuyo MX es 47.181.8.86 . esta pod. Así que un receptora de servidor que aceptó un mensaje y no pudo entregarlo después de todo escribe su informe de entrega Aquí, y hasta ahora se le negó. - Los dominios de envío provienen de EmailService (relay-senders?format=domains: VERIFIED y FAILING), leer en empezar y cada minuto. Sólo los nombres de huésticos simples llegan a una mesa, y un trazo sin respuesta mantiene la última lista. - Cada dominio toma el remitente nulo solamente, es decir, rebota y servidores comprobando que la dirección existe. Cualquiera. De lo contrario, "Esta dirección envía correos electrónicos pero no la recibe". - Lo que se lleva va a una tubería de "bounces" (el comando de carrete de postfijo principal, con su propia bobina) y un rebotes-mail sidecar, el postfix principal secuelas.mail.py con INCLUDE-RAW, lo publica a ******************* - pila.loans, mail.stack.loans y contacto.kamocrm.com funcionan exactamente como antes, y nada aquí envía a Internet. Probado en una vaina alpina desechable con el mismo guión: null sender 250, una persona 550, postmaster y abuso. 250, otros y otros dominios similares 554, un DSN lleno de su token y la cola vacía, un cambio de lista aplicado en un minuto, y un trago sin respuesta manteniendo la última lista.
· EmailService
Las rebotes para enviar dominios de orgánenenen, los envíos de prueba están firmados, y el DNS de los relevos se lee
Rebota Async. El remitente de sobres de una campaña es su From en el dominio de envío de la organización, cuyo MX (a través del CNAME para contact.kamocrm.com) es la propia dirección del relé compartido. postfix-k3m1inbound tomará informes de entrega allí y publicarlos en POST ************* la forma de la entrada de queja: - DeliveryStatusReport lee un informe RFC 3464 real (mensaje/delivery-status) y los tokens en el mensaje devuelto. Nunca se adivina un rebote en prosa. - BounceMailService registra un fallo permanente (Acción: fallido, 5.x.x) como BOUNCED en la fila receptor Nombres siteros, a través de la ruta de entrega-evento los relés ya utilizan. Un retraso, una auto-rechazo o un informe sin cambios si silgráficos, y un informe de la queja se entrega a la admisión de quejas. - relay-senders?format=domains enumera los dominios de envío de VERIFIED y FAILING los informes aceptados entrante. Los envíos de pruebas de Configuración y Email. Envío están firmados con la clave del dominio From, exactamente como campaña mail is (DkimSigning, compartido con CampaignRecipientSender), por lo que una prueba a través del relevo compartido muestra lo que a campaña lo hará. El DNS de los relevos. GET ******************* (MANAGE-OUTBOUND-EMAIL-HOSTS) lee, para cada relevo, su nombre's A record y SPF, su MX (para el relevo compartido, de vuelta a su propia dirección), el Revertir DNS de su dirección, y la tecla DKIM del relevo de la plataforma. El DNS resolver gana búsquedas PTR.
· KlusterServices
Postmaster y abuse.contact.kamocrm.com llegar a KamoCRM - el nombre del relevo compartido recibe sus cheques
contacto.kamocrm.com es el nombre del relé compartido (47.181.8.86 PTR, MX contact.kamocrm.com), y su MX es 47.181.8.86 - k3m1, donde postfix-k3m1-inbound respuestas. Proveedores de Mailbox autorizan a quien ejecuta una IP a través de postmaster-/abuso de su dominio PTR, por lo que los que ahora aterrizan: postmaster en el buzón de correos de correos, abuse y fbl. en abuse.hello.kamocrm.com, que el postfix principal entrega a la queja de EmailService admisión con una copia para el director postal. Reinicio de postfix-k3m1 enlaza aprobado por Sage.
· kamo-internal
Bulk Email obtiene Domain Setup y sub-tabs, /marketing/email explica lo que falta, las campañas obtienen un De picker
Configuración de los ajustes. Correo electrónico de la granel Email es ahora cuatro sub-tabs en ?sub=: Configuración de dominios. La entrega. El miembro aterriza en Domain Setup hasta que se verifique un dominio de envío y en envío después. Hasta entonces los otros sub-tabs muestran una cerradura y mantenerse enfocable; abrir uno explica lo que para, lo lejos que ha llegado el mejor dominio, y enlaza de nuevo. Opt Out y Deliverability mantienen su derecha (MANAGE-EMAIL-OPT-OUTS o el propietario) y muévete sin cambios; el viejo ?tab=opt-out y ?tab=-enlaces de entrega redirigir a su sub-tab, y la carta de entrada y aterrizaje del menú sigue. Cada sub-tab pone sus propias palabras en el carril de ayuda. Domain Setup está construido para alguien que nunca ha editado DNS: un héroe con los tres pasos y el uno en el que están (o "Bulk email está listo para enviar"), una tarjeta por dominio con puntos de disco en vivo y "Checked hace 8 segundos - comprobar automáticamente", y un flujo en línea adicional-domain (el dominio org prellenado y ordenado en el desenfoque con el cambio explicado, un solo clic de enviar nombres, un adelanto en vivo, y una mirada debobrida que dice por qué un nombre no se puede usar antes de continuar). Configuración de un dominio (?dominio=) muestra los pasos del proveedor DNS detectado, cada registro en palabras simples con botones de copia y su estado en vivo ("vemos X, debería ser Y", la solución para cada código de insinuación), Copia todo como instrucciones, la alternativa no-CNAME detrás de una revelación, Compruebe ahora, Remove (se negó por adelantado mientras está en uso, con la razón del servidor mostrada si todavía se niega), y un reducido-consciente de movimiento el momento de éxito que lleva a "Elige tu dirección". Todo lee GET ********** a través del proxy existente y se queda en vivo sobre ************* sin encuesta, re-leer silencioso, escribe adoptar el Todo el estado, y una lectura fallida o rechazada es un error o nota de acceso, nunca una lista vacía. /marketing/email: sin campañas y sin dominio verificado el estado vacío es un explicativo (por qué, tres pasos, "Acopla mi dominio", o quién puede terminarlo sin MANAGE-EMAIL-SETTINGS); una campaña lista obtiene un banner compacto que absorbe la línea de no-anfitrión, y un dominio FAILING se nombra en rojo con un enlace a su configuración. Nada muestra mientras se carga o en una lectura fallida. La bandera de los bloqueadores de envíos links NO-SENDING-DOMAIN y FROM-DOMAIN-NOT-VERIFIED a Domain Setup. El editor de la campaña From es un picker: el remitente predeterminado, o una dirección en un dominio verificado (parte local, dominio, nombre), guardado a partir deEmail/deName; un guardar de un dominio no verificado se advierte con un vínculo con su configuración. AjustesMenuTabCoverage aprende &sub= y comprueba que existe una sub-tab vinculada.
· EmailService
El correo de campaña se firma como, enviado y enruta por su dominio de envío verificado
Una campaña puede nombrar su propio Desde un dominio verificado; de lo contrario se va como el remitente a granel de la org. debe estar en un dominio verificado (saveSender rechaza cualquier otra cosa). CampañaDesde elegir el relevo por ese dominio, porque SPF se decide por la dirección una hoja de relé de: el dominio verificado de un org solamente a través del relé compartido de org (47.181.8.86), hello.kamocrm.com de KamoCRM sólo a través del relé de plataforma (47.181.8.87), cualquier otro anfitrión para cualquiera, y un no verificado de la nada. El lanzador toma la decisión. receptor primero, luego un anfitrión listo que su campaña puede usar; una campaña sin que nadie espere mientras el org's irse otras campañas. Mail como dominio verificado de una org está firmado con DKIM después de su último saveChanges, con la sesión indemne de convirtiéndolo en 8 bits en el camino. Nuevos bloqueadores de envío NO.SENDING-DOMAIN y FROM-DOMAIN-NOT-VERIFIED. Los informes de entrega cuentan con el calentamiento del relevo que el relevo de la campaña lo envió. La campaña de envío de KamoCRM no se ve afectada: Noreply-hello.kamocrm.com está gestionado por la plataforma, por lo que mantiene saliendo a través de .87, y el relevo compartido se apaga en la rotación de KamoCRM.
· EmailService
Domain Setup's API, el mapa del remitente del relevo compartido, y un barrido que confirma los registros en vivo
********************** PET la pestaña (VIEW-BULK-EMAIL), Buscar Buscar el formulario de adición, POST añádase, POST .id./check, DELETE (MANAGE.BULK-EMAIL); cada escritura de respuestas con toda la pestaña y una negativa nombre su campo. ************* da postfix-orgs su dominio verificado Mapa. La vista general a granel gana dominios listos, verificados, pendientes, fallando para la puerta. SendingDomainSweep relee DNS en la cadencia (15s mientras se está configurando un dominio) bajo un contrato de arrendamiento, en un hilo de su propio: cada tarea programada aquí comparte el hilo de programación de Spring con el lanzador que envía correo de campaña cada segundo, y esperar a los servidores de nombres allí se detenía en el envío.
· EmailService
Enviar dominios. añadir uno, leer su registro DNS por registro, verificarlo, saber lo que una dirección puede hacer
Un dominio de envío (news.acme.com) se mantiene en la mancha del proveedor de granel cifrado de la org con su clave DKIM. EnviarDomainChecker lee lo que los receptores verán . SPF evaluado para la dirección del relevo compartido, nuestra clave en su selector, una política DMARC en el dominio o un padre para los registros recomendados (un CNAME a contacto.kamocrm.com, el DKIM TXT, DMARC) y la alternativa SPF TX MX, y nombra los errores habituales: un nombre de zona doble, un CNAME de Cloudflare, nombre que ya tiene registros, un CNAME en otros lugares, dos Los registros de SPF, demasiadas miradas, un corto de palabras, una política malformada o heredada, y 'tu registro es Bien, el lado de KamoCRM aún no está en vivo. SendDomainService añade (liperar una URL o dirección pegada, rechazar kamocrm.com a los inquilinos), cheques, elimina (no mientras sea el remitente por defecto o una campaña activa), y mueve el estatus: PENDING/FAILING VERIFIED en un pase; VERIFIED - FAILING sólo después de dos fracasos con seis horas de diferencia; un apagón DNS cambia Nada. Responde a la ruta de envío de . ORG.VERIFIED (con la tecla de firmas), PLATFORM-MANAGED (hello.kamocrm.com, sólo para KamoCRM) o UNVERIFIED y construye el mapa del remitente compartido de verificación dominios. Cambios publican *************

Tu universo está esperando.
Comience gratis en minutos y agregue productos cuando esté listo, sin migración ni nuevos inicios de sesión.
Gratis para siempre: no se requiere tarjeta de crédito