{"id":1511,"date":"2026-08-10T14:52:33","date_gmt":"2026-08-10T14:52:33","guid":{"rendered":"https:\/\/villasrivero.com\/?page_id=1511"},"modified":"2026-08-18T20:36:27","modified_gmt":"2026-08-18T20:36:27","slug":"dashboard-alaram","status":"publish","type":"page","link":"http:\/\/villasrivero.com\/en\/dashboard-alaram\/","title":{"rendered":"Dashboard Alaram"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1511\" class=\"elementor elementor-1511\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ebe9d5 e-flex e-con-boxed e-con e-parent\" data-id=\"3ebe9d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5467c03 elementor-widget elementor-widget-html\" data-id=\"5467c03\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Alaram Holidays Home \u00b7 Informe de gesti\u00f3n<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.1\/dist\/chart.umd.min.js\"><\/script>\n<style>\n:root {\n --navy:#242B59; --sea:#4ABCC5; --sand:#D1B38C; --bg:#F7F6F3; --white:#fff;\n --line:#E4E1DA; --text:#171717; --muted:#6D6962; --green:#24785F; --red:#AD5E4B;\n --greenbg:#EAF5F1; --redbg:#FAEEEA; --soft:#F3F1EC; --bluebg:#EAF7F8;\n}\n*{box-sizing:border-box}\nbody{margin:0;background:var(--bg);font-family:Arial,Helvetica,sans-serif;color:var(--text);line-height:1.5}\n.wrap{max-width:1160px;margin:0 auto;padding:0 28px}\nheader{background:linear-gradient(135deg,#242B59,#30386C);color:#fff;padding:36px 0 32px;border-bottom:4px solid var(--sand)}\n.head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}\n.brand{font-family:Georgia,serif;font-style:italic;font-size:31px} .brand span{color:var(--sea)}\n.kicker{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#C2C7DC;margin-top:18px}\nh1{font-family:Georgia,serif;font-size:36px;font-weight:400;margin:5px 0 0}\n.meta{font-size:12px;color:#C7CBDE;line-height:1.7;text-align:right} .meta b{color:#fff}\nnav{background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(8px)}\n.nav{display:flex;overflow:auto;gap:2px}\n.nav button{border:0;background:none;padding:15px 16px;font-size:12px;color:var(--muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent}\n.nav button.on{color:var(--navy);font-weight:700;border-bottom-color:var(--sea)}\nmain{padding:36px 0 58px} .pane{display:none} .pane.on{display:block}\nsection{margin-bottom:48px}\n.eyebrow{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#967A58;font-weight:700;margin-bottom:7px}\nh2{font-family:Georgia,serif;font-size:29px;font-weight:400;color:var(--navy);margin:0 0 7px}\n.lead{font-size:14px;color:#5D5953;max-width:850px;margin:0 0 22px}\n.hero{background:linear-gradient(135deg,#242B59,#333C74);border-radius:10px;color:#fff;padding:30px;box-shadow:0 14px 32px rgba(36,43,89,.13)}\n.hero-title{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#C9CDDF;margin-bottom:18px}\n.hero-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:19px}\n.hlabel{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;color:#C2C7DA}\n.hvalue{font-family:Georgia,serif;font-size:39px;line-height:1.05;color:var(--sea);margin-top:6px}\n.hdesc{font-size:11px;color:#CDD1E1;margin-top:7px} .hdesc strong{color:#F2D5B0}\n.hero-note{margin-top:20px;background:#1C224A;padding:13px 15px;border-radius:6px;font-size:12px;color:#DDE0EC} .hero-note strong{color:#fff}\n.lesson{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:18px}\n.lesson-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:20px;position:relative}\n.lesson-card .tag{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}\n.lesson-card .big{font-family:Georgia,serif;font-size:32px;color:var(--navy);margin:6px 0}\n.lesson-card .change{font-size:12px;font-weight:700}\n.lesson-card.important{background:var(--greenbg);border-color:#CFE7DF}\n.lesson-card.important .big{color:var(--green)}\n.message{margin-top:14px;background:#fff;border-left:4px solid var(--sea);border-radius:0 8px 8px 0;padding:18px 20px}\n.message .headline{font-family:Georgia,serif;color:var(--navy);font-size:23px;display:block;margin-bottom:5px}\n.message p{margin:0;font-size:13px;color:#504C46}\n.explain-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:17px}\n.card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:21px;box-shadow:0 2px 10px rgba(0,0,0,.025)}\n.card h3{font-family:Georgia,serif;font-size:20px;font-weight:400;color:var(--navy);margin:0 0 5px}\n.card p{font-size:13px;color:#504C46;margin:7px 0}\n.simple-def{background:var(--soft);border-radius:7px;padding:14px;margin-top:11px}\n.simple-def b{color:var(--navy)} .simple-def span{font-size:12px;color:#5C574F}\n.jan-card{background:linear-gradient(135deg,#F3F9F8,#FFFFFF);border:1px solid #D5EAE5;border-radius:10px;padding:24px;margin-top:18px}\n.jan-top{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-start}\n.jan-title{font-family:Georgia,serif;color:var(--navy);font-size:23px}\n.badge{background:#E8F3EF;color:var(--green);font-size:10px;font-weight:700;padding:5px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.7px}\n.jan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}\n.jk{background:#fff;border:1px solid var(--line);border-radius:7px;padding:14px}\n.jk .l{font-size:9px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted)} .jk .v{font-family:Georgia,serif;font-size:24px;color:var(--navy);margin-top:3px}\n.jk .s{font-size:10.5px;color:var(--muted);margin-top:3px}\n.chartbox{height:320px}\n.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.month{background:#fff;border:1px solid var(--line);border-radius:9px;padding:17px;min-height:240px}\n.month.closed{border-top:4px solid var(--sea)} .month.live{border-top:4px solid var(--sand)} .month.future{border-top:4px solid #B9B3A8} .month.before{background:#F0EEEA;color:#888}\n.mname{font-family:Georgia,serif;font-size:21px;color:var(--navy)} .before .mname{color:#777}\n.status{font-size:9px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted);font-weight:700;margin-top:2px}\n.compare{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}\n.box{background:#F7F6F3;border-radius:6px;padding:10px}\n.box .yr{font-size:9px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}\n.box .val{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-top:2px}\n.result{font-size:11px;margin-top:10px;padding:7px 9px;border-radius:5px}\n.good{background:var(--greenbg);color:var(--green);font-weight:700}\n.bad{background:var(--redbg);color:var(--red);font-weight:700}\n.neutral{background:#F4F1EA;color:#625D55}\n.metric-pair{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}\n.micro{border:1px solid var(--line);border-radius:6px;padding:8px;background:#FCFBF9}\n.micro .l{font-size:8.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}\n.micro .v{font-family:Georgia,serif;font-size:17px;color:var(--navy)}\n.micro .sub{font-size:9px;color:var(--muted)}\n.apt-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}\n.apt{background:#fff;border:1px solid var(--line);border-radius:9px;padding:19px}\n.apt-name{font-family:Georgia,serif;font-size:19px;color:var(--navy);margin-bottom:12px}\n.apt-cols{display:grid;grid-template-columns:1fr 1fr;gap:9px}\n.aptbox{background:#F7F6F3;border-radius:6px;text-align:center;padding:11px}\n.aptbox .yr{font-size:9px;text-transform:uppercase;color:var(--muted)} .aptbox .val{font-family:Georgia,serif;font-size:22px;color:var(--navy)}\n.apt-change{font-size:12px;font-weight:700;margin-top:10px}\n.apt-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}\n.am{border:1px solid var(--line);border-radius:6px;padding:9px}\n.am .l{font-size:8.5px;text-transform:uppercase;color:var(--muted)} .am .v{font-family:Georgia,serif;font-size:17px;color:var(--navy)}\n.channels{display:grid;grid-template-columns:.75fr 1.25fr;gap:16px}\n.donut-wrap{display:flex;align-items:center;justify-content:center}\n.donut{width:215px;height:215px;border-radius:50%;position:relative;background:conic-gradient(#242B59 0 75.1%,#4ABCC5 75.1% 95.6%,#D1B38C 95.6% 100%)}\n.donut:after{content:\"\";position:absolute;inset:43px;border-radius:50%;background:#fff}\n.dcenter{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:2}\n.dcenter b{font-family:Georgia,serif;color:var(--navy);font-size:27px} .dcenter span{font-size:10px;color:var(--muted)}\n.crow{display:grid;grid-template-columns:13px 1fr auto;gap:10px;align-items:center;background:#F8F7F4;border-radius:6px;padding:11px;margin-bottom:10px}\n.dot{width:10px;height:10px;border-radius:50%} .cname{font-weight:700;font-size:13px;color:var(--navy)} .cdetail{font-size:10.5px;color:var(--muted)} .cpct{font-family:Georgia,serif;font-size:24px;color:var(--navy)}\n.note{background:#FBF6EE;border-left:4px solid var(--sand);padding:16px 18px;border-radius:0 7px 7px 0;font-size:12.5px;color:#554F48}\n.note strong{color:var(--navy)}\nfooter{border-top:1px solid var(--line);padding:23px 0 30px;font-size:10.5px;color:var(--muted)}\n@media(max-width:900px){.hero-grid,.jan-grid{grid-template-columns:1fr 1fr}.lesson,.month-grid{grid-template-columns:1fr 1fr}.channels,.explain-row{grid-template-columns:1fr}}\n@media(max-width:620px){.wrap{padding:0 15px}h1{font-size:29px}.meta{text-align:left}.hero-grid,.jan-grid,.lesson,.month-grid,.apt-grid{grid-template-columns:1fr}}\n<\/style>\n<\/head>\n<body>\n<header><div class=\"wrap\"><div class=\"head\">\n<div><div class=\"brand\">Villas <span>Rivero<\/span><\/div><div class=\"kicker\">Informe de gesti\u00f3n para la propiedad<\/div><h1>Alaram Holidays Home<\/h1><\/div>\n<div class=\"meta\"><b>4 apartamentos<\/b><br>Gesti\u00f3n desde abril de 2026<br>Actualizado \u00b7 18\/08\/2026<\/div>\n<\/div><\/div><\/header>\n\n<nav><div class=\"wrap nav\">\n<button class=\"on\" data-pane=\"resumen\">Nuestra gesti\u00f3n<\/button>\n<button data-pane=\"meses\">Mes a mes<\/button>\n<button data-pane=\"apartamentos\">Apartamentos<\/button>\n<button data-pane=\"canales\">Reservas<\/button>\n<\/div><\/nav>\n\n<main><div class=\"wrap\">\n\n<div class=\"pane on\" id=\"resumen\">\n<section>\n<div class=\"eyebrow\">La respuesta r\u00e1pida<\/div>\n<h2>Un ADR m\u00e1s alto no significa ganar m\u00e1s dinero<\/h2>\n<p class=\"lead\">Lo importante no es solamente cu\u00e1nto cobramos cuando conseguimos una reserva. Lo importante es cu\u00e1nto produce cada noche que tenemos disponible para vender.<\/p>\n\n<div class=\"hero\">\n<div class=\"hero-title\">Abril\u2013julio \u00b7 meses cerrados \u00b7 2025 vs 2026<\/div>\n<div class=\"hero-grid\">\n<div><div class=\"hlabel\">Revenue generado<\/div><div class=\"hvalue\">+61%<\/div><div class=\"hdesc\">de <strong>7.501 \u20ac<\/strong> a <strong>12.053 \u20ac<\/strong><\/div><\/div>\n<div><div class=\"hlabel\">Revenue adicional<\/div><div class=\"hvalue\">+4.553 \u20ac<\/div><div class=\"hdesc\">m\u00e1s que en el mismo periodo anterior<\/div><\/div>\n<div><div class=\"hlabel\">Noches vendidas<\/div><div class=\"hvalue\">+71%<\/div><div class=\"hdesc\">de <strong>102<\/strong> a <strong>174 noches<\/strong><\/div><\/div>\n<div><div class=\"hlabel\">Agosto\u2013febrero<\/div><div class=\"hvalue\">26.662 \u20ac<\/div><div class=\"hdesc\">ya reservados a fecha de hoy<\/div><\/div>\n<\/div>\n<div class=\"hero-note\"><strong>La clave:<\/strong> hemos bajado el precio medio por noche, pero estamos aprovechando mucho mejor el inventario. El resultado final es m\u00e1s dinero generado.<\/div>\n<\/div>\n\n<div class=\"lesson\">\n<div class=\"lesson-card\">\n<div class=\"tag\">ADR \u00b7 precio medio vendido<\/div>\n<div class=\"big\">73,53 \u20ac \u2192 61,79 \u20ac<\/div>\n<div class=\"change\" style=\"color:var(--red)\">\u25bc 16%<\/div>\n<\/div>\n<div class=\"lesson-card important\">\n<div class=\"tag\">RevPAR \u00b7 producci\u00f3n real<\/div>\n<div class=\"big\">15,37 \u20ac \u2192 22,03 \u20ac<\/div>\n<div class=\"change\" style=\"color:var(--green)\">\u25b2 43%<\/div>\n<\/div>\n<div class=\"lesson-card\">\n<div class=\"tag\">Revenue total<\/div>\n<div class=\"big\">7.501 \u20ac \u2192 12.053 \u20ac<\/div>\n<div class=\"change\" style=\"color:var(--green)\">\u25b2 61%<\/div>\n<\/div>\n<\/div>\n\n<div class=\"message\">\n<span class=\"headline\">Menor ADR. Mayor RevPAR. Mucho m\u00e1s revenue.<\/span>\n<p>Eso es lo que queremos conseguir: no presumir de un precio alto por noche mientras el apartamento est\u00e1 vac\u00edo, sino hacer que cada unidad disponible produzca m\u00e1s dinero.<\/p>\n<\/div>\n\n<div class=\"explain-row\">\n<div class=\"card\">\n<h3>ADR: cu\u00e1nto cobramos cuando vendemos<\/h3>\n<p>Es el precio medio de las noches que s\u00ed conseguimos vender.<\/p>\n<div class=\"simple-def\"><b>Puede enga\u00f1ar.<\/b><br><span>Puedes tener un ADR muy alto y, aun as\u00ed, facturar poco si tienes demasiadas noches vac\u00edas.<\/span><\/div>\n<\/div>\n<div class=\"card\">\n<h3>RevPAR: cu\u00e1nto produce realmente la unidad<\/h3>\n<p>Tiene en cuenta todas las noches disponibles, est\u00e9n vendidas o vac\u00edas.<\/p>\n<div class=\"simple-def\"><b>Esta es la m\u00e9trica que queremos mejorar.<\/b><br><span>Combina precio y capacidad de llenar el alojamiento.<\/span><\/div>\n<\/div>\n<\/div>\n\n<div class=\"jan-card\">\n<div class=\"jan-top\">\n<div><div class=\"eyebrow\">El pr\u00f3ximo invierno ya est\u00e1 trabajando<\/div><div class=\"jan-title\">Enero 2027 vs enero 2026<\/div><\/div>\n<div class=\"badge\">Reservas ya confirmadas<\/div>\n<\/div>\n<div class=\"jan-grid\">\n<div class=\"jk\"><div class=\"l\">Revenue enero 2026<\/div><div class=\"v\">13.180 \u20ac<\/div><div class=\"s\">mes ya cerrado<\/div><\/div>\n<div class=\"jk\"><div class=\"l\">Revenue enero 2027<\/div><div class=\"v\">6.364 \u20ac<\/div><div class=\"s\">ya reservado a 18 de agosto<\/div><\/div>\n<div class=\"jk\"><div class=\"l\">ADR 2027<\/div><div class=\"v\">124,50 \u20ac<\/div><div class=\"s\">vs 124,34 \u20ac en enero 2026<\/div><\/div>\n<div class=\"jk\"><div class=\"l\">RevPAR 2027<\/div><div class=\"v\">50,20 \u20ac<\/div><div class=\"s\">47% del RevPAR final de enero 2026 ya asegurado<\/div><\/div>\n<\/div>\n<div class=\"note\" style=\"margin-top:14px\"><strong>Importante:<\/strong> enero de 2027 todav\u00eda est\u00e1 a varios meses de distancia. No se compara como un mes cerrado: mostramos cu\u00e1nto negocio ya est\u00e1 asegurado y cu\u00e1nto margen queda para seguir creciendo. <strong>Adem\u00e1s, febrero de 2027 ya suma 1.272 \u20ac y 10 noches confirmadas.<\/strong><\/div>\n<\/div>\n<\/section>\n\n<section>\n<div class=\"eyebrow\">Visual<\/div><h2>ADR y RevPAR cuentan historias diferentes<\/h2>\n<p class=\"lead\">El ADR puede bajar mientras la rentabilidad real de cada noche disponible sube.<\/p>\n<div class=\"card\"><div class=\"chartbox\"><canvas id=\"adrRevparChart\"><\/canvas><\/div><\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"meses\">\n<section>\n<div class=\"eyebrow\">Todo el a\u00f1o a la vista<\/div><h2>Revenue, ADR y RevPAR mes a mes<\/h2>\n<p class=\"lead\">Los meses cerrados se comparan directamente. Los meses futuros muestran \u00fanicamente lo que ya est\u00e1 reservado, sin tratarlos como un resultado final.<\/p>\n<div class=\"month-grid\" id=\"monthGrid\"><\/div>\n<\/section>\n\n<section>\n<div class=\"eyebrow\">Adem\u00e1s<\/div><h2>Enero de 2027 ya est\u00e1 en marcha<\/h2>\n<div class=\"jan-card\" id=\"janMonthCard\"><\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"apartamentos\">\n<section>\n<div class=\"eyebrow\">Los cuatro apartamentos<\/div><h2>C\u00f3mo ha funcionado cada unidad<\/h2>\n<p class=\"lead\">Abril\u2013julio, mismos meses cerrados. El revenue incluye todo el ingreso generado. ADR y RevPAR se calculan sobre el ingreso de alojamiento.<\/p>\n<div class=\"apt-grid\" id=\"aptGrid\"><\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"canales\">\n<section>\n<div class=\"eyebrow\">De d\u00f3nde llegan las reservas<\/div><h2>Canales de venta<\/h2>\n<p class=\"lead\">Revenue generado por las reservas registradas desde nuestra entrada, incluyendo las reservas futuras ya confirmadas.<\/p>\n<div class=\"channels\">\n<div class=\"card donut-wrap\"><div class=\"donut\"><div class=\"dcenter\"><b>38.715 \u20ac<\/b><span>revenue reservado<\/span><\/div><\/div><\/div>\n<div class=\"card\" id=\"channelList\"><\/div>\n<\/div>\n<\/section>\n<section>\n<div class=\"note\"><strong>C\u00f3mo se calculan las m\u00e9tricas:<\/strong> el Revenue refleja el ingreso total generado. El ADR mide el precio medio de las noches vendidas. El RevPAR mide el ingreso de alojamiento por cada noche disponible del inventario, tomando como base 4 apartamentos disponibles cada d\u00eda.<\/div>\n<\/section>\n<\/div>\n\n<\/div><\/main>\n\n<footer><div class=\"wrap\">Villas Rivero \u00b7 Informe de gesti\u00f3n para Alaram Holidays Home \u00b7 Datos actualizados a 18\/08\/2026<\/div><\/footer>\n\n<script>\nconst D={\"months\": [{\"name\": \"Enero\", \"days\": 31}, {\"name\": \"Febrero\", \"days\": 28}, {\"name\": \"Marzo\", \"days\": 31}, {\"name\": \"Abril\", \"days\": 30}, {\"name\": \"Mayo\", \"days\": 31}, {\"name\": \"Junio\", \"days\": 30}, {\"name\": \"Julio\", \"days\": 31}, {\"name\": \"Agosto\", \"days\": 31}, {\"name\": \"Septiembre\", \"days\": 30}, {\"name\": \"Octubre\", \"days\": 31}, {\"name\": \"Noviembre\", \"days\": 30}, {\"name\": \"Diciembre\", \"days\": 31}], \"hist2025\": {\"4\": {\"revenue\": 2064.1428571428573, \"stay\": 2064.1428571428573, \"nights\": 22}, \"5\": {\"revenue\": 2228.357142857143, \"stay\": 2228.357142857143, \"nights\": 31}, \"6\": {\"revenue\": 1071.0, \"stay\": 1071.0, \"nights\": 17}, \"7\": {\"revenue\": 2137.0, \"stay\": 2137.0, \"nights\": 32}, \"8\": {\"revenue\": 3529.0, \"stay\": 3529.0, \"nights\": 51}, \"9\": {\"revenue\": 1666.0, \"stay\": 1666.0, \"nights\": 25}, \"10\": {\"revenue\": 2180.325, \"stay\": 2180.325, \"nights\": 30}, \"11\": {\"revenue\": 7754.295, \"stay\": 7754.295, \"nights\": 71}, \"12\": {\"revenue\": 8145.647142857141, \"stay\": 8145.647142857141, \"nights\": 73}}, \"cur2026\": {\"4\": {\"revenue\": 1069.81, \"stay\": 1042.56, \"nights\": 15}, \"5\": {\"revenue\": 2889.18, \"stay\": 2701.43, \"nights\": 42}, \"6\": {\"revenue\": 3234.68, \"stay\": 2760.4, \"nights\": 57}, \"7\": {\"revenue\": 4859.72, \"stay\": 4246.5, \"nights\": 60}, \"8\": {\"revenue\": 5485.15, \"stay\": 4858.06, \"nights\": 78}, \"9\": {\"revenue\": 4826.99, \"stay\": 4461.44, \"nights\": 75}, \"10\": {\"revenue\": 622.64, \"stay\": 568.23, \"nights\": 9}, \"11\": {\"revenue\": 4830.5, \"stay\": 4680.5, \"nights\": 43}, \"12\": {\"revenue\": 3260.52, \"stay\": 3173.86, \"nights\": 27}}, \"jan2026\": {\"revenue\": 13179.99, \"stay\": 13179.99, \"nights\": 106, \"days\": 31}, \"jan2027\": {\"revenue\": 6364.43, \"stay\": 6224.9, \"nights\": 50, \"days\": 31}, \"apartments\": [{\"name\": \"Alaram Holidays Home 1\", \"rev25\": 1860.0, \"n25\": 21, \"stay25\": 1860.0, \"rev26\": 3535.34, \"n26\": 43, \"stay26\": 3070.34, \"adr25\": 88.57142857142857, \"adr26\": 71.40325581395349, \"revpar25\": 15.245901639344263, \"revpar26\": 25.16672131147541, \"rev_change\": 90.0720430107527, \"revpar_change\": 65.0720430107527}, {\"name\": \"Alaram Holidays Home 2\", \"rev25\": 3609.0, \"n25\": 56, \"stay25\": 3609.0, \"rev26\": 3229.82, \"n26\": 41, \"stay26\": 2864.82, \"adr25\": 64.44642857142857, \"adr26\": 69.87365853658537, \"revpar25\": 29.581967213114755, \"revpar26\": 23.482131147540986, \"rev_change\": -10.506511499030202, \"revpar_change\": -20.62011637572734}, {\"name\": \"Alaram Holidays Home 3\", \"rev25\": 1280.0, \"n25\": 17, \"stay25\": 1280.0, \"rev26\": 2988.85, \"n26\": 46, \"stay26\": 2693.85, \"adr25\": 75.29411764705883, \"adr26\": 58.56195652173913, \"revpar25\": 10.491803278688524, \"revpar26\": 22.080737704918032, \"rev_change\": 133.50390625, \"revpar_change\": 110.45703125}, {\"name\": \"Alaram Holidays Home 4\", \"rev25\": 877.5, \"n25\": 10, \"stay25\": 877.5, \"rev26\": 3092.82, \"n26\": 47, \"stay26\": 2762.82, \"adr25\": 87.75, \"adr26\": 58.783404255319155, \"revpar25\": 7.192622950819672, \"revpar26\": 22.646065573770493, \"rev_change\": 252.45811965811967, \"revpar_change\": 214.85128205128206}], \"channels\": [{\"name\": \"Booking\", \"revenue\": 29082.67, \"nights\": 322, \"reservations\": 38}, {\"name\": \"Airbnb\", \"revenue\": 7944.15, \"nights\": 121, \"reservations\": 19}, {\"name\": \"Directo\", \"revenue\": 1688.56, \"nights\": 23, \"reservations\": 6}], \"summary\": {\"rev25\": 7500.5, \"rev26\": 12053.39, \"rev_change\": 60.70115325644956, \"extra_rev\": 4552.889999999999, \"n25\": 102, \"n26\": 174, \"n_change\": 70.58823529411764, \"adr25\": 73.5343137254902, \"adr26\": 61.78672413793103, \"adr_change\": -15.975656795294114, \"revpar25\": 15.369877049180328, \"revpar26\": 22.030512295081966, \"revpar_change\": 43.335644290380635, \"future_rev\": 26661.989999999998}, \"feb2027\": {\"revenue\": 1271.76, \"stay\": 1247.95, \"nights\": 10, \"days\": 28}};\nconst euro=n=>new Intl.NumberFormat('es-ES',{style:'currency',currency:'EUR',maximumFractionDigits:0}).format(n);\nconst euro2=n=>new Intl.NumberFormat('es-ES',{style:'currency',currency:'EUR',minimumFractionDigits:2,maximumFractionDigits:2}).format(n);\nconst pct=n=>(n>=0?'+':'')+Math.round(n)+'%';\n\ndocument.querySelectorAll('.nav button').forEach(b=>b.onclick=()=>{\n document.querySelectorAll('.nav button').forEach(x=>x.classList.remove('on'));\n document.querySelectorAll('.pane').forEach(x=>x.classList.remove('on'));\n b.classList.add('on');\n document.getElementById(b.dataset.pane).classList.add('on');\n window.scrollTo({top:0,behavior:'smooth'});\n});\n\nconst grid=document.getElementById('monthGrid');\nfor(let m=1;m<=12;m++){\n const name=D.months[m-1].name;\n const days=D.months[m-1].days;\n const avail=4*days;\n const h=D.hist2025[String(m)] || null;\n const c=D.cur2026[String(m)] || null;\n let klass='', status='', body='';\n\n if(m<=3){\n   klass='before'; status='Antes de nuestra gesti\u00f3n';\n   body=`<div class=\"result neutral\">No existe un dato comparable de 2025 en el hist\u00f3rico facilitado.<\/div>`;\n } else {\n   const hAdr=h&&h.nights?h.stay\/h.nights:null;\n   const hRp=h?h.stay\/avail:null;\n   const cAdr=c&&c.nights?c.stay\/c.nights:null;\n   const cRp=c?c.stay\/avail:null;\n\n   if(m<=7){\n     klass='closed'; status='Mes cerrado \u00b7 comparaci\u00f3n directa';\n     const d=(c.revenue\/h.revenue-1)*100;\n     body=`<div class=\"compare\">\n       <div class=\"box\"><div class=\"yr\">2025<\/div><div class=\"val\">${euro(h.revenue)}<\/div><\/div>\n       <div class=\"box\"><div class=\"yr\">2026<\/div><div class=\"val\">${euro(c.revenue)}<\/div><\/div>\n     <\/div>\n     <div class=\"result ${d>=0?'good':'bad'}\">${d>=0?'\u25b2':'\u25bc'} ${pct(d)} de revenue<\/div>\n     <div class=\"metric-pair\">\n       <div class=\"micro\"><div class=\"l\">ADR<\/div><div class=\"v\">${euro2(cAdr)}<\/div><div class=\"sub\">2025: ${euro2(hAdr)}<\/div><\/div>\n       <div class=\"micro\"><div class=\"l\">RevPAR<\/div><div class=\"v\">${euro2(cRp)}<\/div><div class=\"sub\">2025: ${euro2(hRp)}<\/div><\/div>\n     <\/div>`;\n   } else if(m===8){\n     klass='live'; status='Mes en curso \u00b7 ya reservado';\n     const d=(c.revenue\/h.revenue-1)*100;\n     body=`<div class=\"compare\">\n       <div class=\"box\"><div class=\"yr\">2025 cerr\u00f3<\/div><div class=\"val\">${euro(h.revenue)}<\/div><\/div>\n       <div class=\"box\"><div class=\"yr\">2026 ya lleva<\/div><div class=\"val\">${euro(c.revenue)}<\/div><\/div>\n     <\/div>\n     <div class=\"result ${d>=0?'good':'neutral'}\">${d>=0?'Ya supera agosto 2025 en '+pct(d):'Mes todav\u00eda en curso'}<\/div>\n     <div class=\"metric-pair\">\n       <div class=\"micro\"><div class=\"l\">ADR actual<\/div><div class=\"v\">${euro2(cAdr)}<\/div><div class=\"sub\">sobre noches reservadas<\/div><\/div>\n       <div class=\"micro\"><div class=\"l\">RevPAR actual<\/div><div class=\"v\">${euro2(cRp)}<\/div><div class=\"sub\">todav\u00eda puede crecer<\/div><\/div>\n     <\/div>`;\n   } else {\n     klass='future'; status='Reservas ya confirmadas';\n     if(!c || c.revenue===0){\n       body=`<div class=\"compare\">\n         <div class=\"box\"><div class=\"yr\">2025 cerr\u00f3<\/div><div class=\"val\">${euro(h.revenue)}<\/div><\/div>\n         <div class=\"box\"><div class=\"yr\">2026 reservado<\/div><div class=\"val\">0 \u20ac<\/div><\/div>\n       <\/div><div class=\"result neutral\">Todav\u00eda queda tiempo para vender este mes.<\/div>`;\n     } else {\n       const progress=h.revenue?c.revenue\/h.revenue*100:0;\n       const surpassed=c.revenue>=h.revenue;\n       body=`<div class=\"compare\">\n         <div class=\"box\"><div class=\"yr\">2025 cerr\u00f3<\/div><div class=\"val\">${euro(h.revenue)}<\/div><\/div>\n         <div class=\"box\"><div class=\"yr\">2026 ya reservado<\/div><div class=\"val\">${euro(c.revenue)}<\/div><\/div>\n       <\/div>\n       <div class=\"result ${surpassed?'good':'neutral'}\">${surpassed?'Ya supera el cierre 2025':'Ya est\u00e1 reservado el '+Math.round(progress)+'% del revenue 2025'}<\/div>\n       <div class=\"metric-pair\">\n         <div class=\"micro\"><div class=\"l\">ADR reservado<\/div><div class=\"v\">${euro2(cAdr)}<\/div><div class=\"sub\">no es cierre final<\/div><\/div>\n         <div class=\"micro\"><div class=\"l\">RevPAR reservado<\/div><div class=\"v\">${euro2(cRp)}<\/div><div class=\"sub\">puede seguir subiendo<\/div><\/div>\n       <\/div>`;\n     }\n   }\n }\n grid.insertAdjacentHTML('beforeend',`<div class=\"month ${klass}\"><div class=\"mname\">${name}<\/div><div class=\"status\">${status}<\/div>${body}<\/div>`);\n}\n\nconst janAvail=4*31;\nconst j26=D.jan2026, j27=D.jan2027;\nconst janAdr26=j26.stay\/j26.nights, janAdr27=j27.stay\/j27.nights;\nconst janRp26=j26.stay\/janAvail, janRp27=j27.stay\/janAvail;\ndocument.getElementById('janMonthCard').innerHTML=`\n<div class=\"jan-top\">\n <div><div class=\"jan-title\">Enero 2027 vs enero 2026<\/div><div class=\"status\">2027 \u00b7 reservas ya confirmadas<\/div><\/div>\n <div class=\"badge\">5 meses por delante<\/div>\n<\/div>\n<div class=\"jan-grid\">\n <div class=\"jk\"><div class=\"l\">Revenue 2026<\/div><div class=\"v\">${euro(j26.revenue)}<\/div><div class=\"s\">cierre completo<\/div><\/div>\n <div class=\"jk\"><div class=\"l\">Revenue 2027<\/div><div class=\"v\">${euro(j27.revenue)}<\/div><div class=\"s\">${Math.round(j27.revenue\/j26.revenue*100)}% ya asegurado<\/div><\/div>\n <div class=\"jk\"><div class=\"l\">ADR 2027<\/div><div class=\"v\">${euro2(janAdr27)}<\/div><div class=\"s\">2026: ${euro2(janAdr26)}<\/div><\/div>\n <div class=\"jk\"><div class=\"l\">RevPAR 2027<\/div><div class=\"v\">${euro2(janRp27)}<\/div><div class=\"s\">2026 final: ${euro2(janRp26)}<\/div><\/div>\n<\/div>\n<div class=\"note\" style=\"margin-top:14px\"><strong>Febrero 2027:<\/strong> ${euro(D.feb2027.revenue)} y ${D.feb2027.nights} noches ya confirmadas.<\/div>`;\n\ndocument.getElementById('aptGrid').innerHTML=D.apartments.map(a=>`\n<div class=\"apt\">\n <div class=\"apt-name\">${a.name}<\/div>\n <div class=\"apt-cols\">\n  <div class=\"aptbox\"><div class=\"yr\">Revenue 2025<\/div><div class=\"val\">${euro(a.rev25)}<\/div><\/div>\n  <div class=\"aptbox\"><div class=\"yr\">Revenue 2026<\/div><div class=\"val\">${euro(a.rev26)}<\/div><\/div>\n <\/div>\n <div class=\"apt-change\" style=\"color:${a.rev_change>=0?'var(--green)':'var(--red)'}\">${a.rev_change>=0?'\u25b2':'\u25bc'} ${pct(a.rev_change)} de revenue<\/div>\n <div class=\"apt-metrics\">\n  <div class=\"am\"><div class=\"l\">ADR 2026<\/div><div class=\"v\">${euro2(a.adr26)}<\/div><div class=\"small\">2025: ${euro2(a.adr25)}<\/div><\/div>\n  <div class=\"am\"><div class=\"l\">RevPAR 2026<\/div><div class=\"v\">${euro2(a.revpar26)}<\/div><div class=\"small\">2025: ${euro2(a.revpar25)}<\/div><\/div>\n <\/div>\n<\/div>`).join('');\n\nconst channelTotal=D.channels.reduce((s,x)=>s+x.revenue,0);\nconst colors=['#242B59','#4ABCC5','#D1B38C'];\ndocument.getElementById('channelList').innerHTML=D.channels.map((x,i)=>`\n<div class=\"crow\">\n <span class=\"dot\" style=\"background:${colors[i]}\"><\/span>\n <div><div class=\"cname\">${x.name}<\/div><div class=\"cdetail\">${euro(x.revenue)} \u00b7 ${x.nights} noches \u00b7 ${x.reservations} reservas<\/div><\/div>\n <div class=\"cpct\">${(x.revenue\/channelTotal*100).toFixed(1)}%<\/div>\n<\/div>`).join('');\n\nChart.defaults.font.family='Arial, Helvetica, sans-serif';\nChart.defaults.color='#6D6962';\n\nnew Chart(document.getElementById('adrRevparChart'),{\n type:'bar',\n data:{\n   labels:['ADR','RevPAR'],\n   datasets:[\n     {label:'2025',data:[D.summary.adr25,D.summary.revpar25],backgroundColor:'#D1B38C',borderRadius:4},\n     {label:'2026',data:[D.summary.adr26,D.summary.revpar26],backgroundColor:'#4ABCC5',borderRadius:4}\n   ]\n },\n options:{\n   maintainAspectRatio:false,\n   plugins:{\n     legend:{position:'bottom',labels:{boxWidth:10,padding:15}},\n     tooltip:{callbacks:{label:x=>x.dataset.label+': '+euro2(x.raw)}}\n   },\n   scales:{\n     y:{grid:{color:'#EFEBE5'},ticks:{callback:v=>v+' \u20ac'}},\n     x:{grid:{display:false}}\n   }\n }\n});\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Alaram Holidays Home \u00b7 Informe de gesti\u00f3n Villas RiveroInforme de gesti\u00f3n para la propiedad Alaram Holidays Home 4 apartamentosGesti\u00f3n desde abril de 2026Actualizado \u00b7 18\/08\/2026 Nuestra gesti\u00f3n Mes a mes Apartamentos Reservas La respuesta r\u00e1pida Un ADR m\u00e1s alto no significa ganar m\u00e1s dinero Lo importante no es solamente cu\u00e1nto cobramos cuando conseguimos una reserva. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1511","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dashboard Alaram - Villas Rivero<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/villasrivero.com\/en\/dashboard-alaram\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dashboard Alaram - Villas Rivero\" \/>\n<meta property=\"og:description\" content=\"Alaram Holidays Home \u00b7 Informe de gesti\u00f3n Villas RiveroInforme de gesti\u00f3n para la propiedad Alaram Holidays Home 4 apartamentosGesti\u00f3n desde abril de 2026Actualizado \u00b7 18\/08\/2026 Nuestra gesti\u00f3n Mes a mes Apartamentos Reservas La respuesta r\u00e1pida Un ADR m\u00e1s alto no significa ganar m\u00e1s dinero Lo importante no es solamente cu\u00e1nto cobramos cuando conseguimos una reserva. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/villasrivero.com\/en\/dashboard-alaram\/\" \/>\n<meta property=\"og:site_name\" content=\"Villas Rivero\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-18T20:36:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-alaram\\\/\",\"url\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-alaram\\\/\",\"name\":\"Dashboard Alaram - Villas Rivero\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/villasrivero.com\\\/#website\"},\"datePublished\":\"2026-08-10T14:52:33+00:00\",\"dateModified\":\"2026-08-18T20:36:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-alaram\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/villasrivero.com\\\/dashboard-alaram\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-alaram\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/villasrivero.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dashboard Alaram\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/#website\",\"url\":\"https:\\\/\\\/villasrivero.com\\\/\",\"name\":\"Villas Rivero\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/villasrivero.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dashboard Alaram - Villas Rivero","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/villasrivero.com\/en\/dashboard-alaram\/","og_locale":"en_GB","og_type":"article","og_title":"Dashboard Alaram - Villas Rivero","og_description":"Alaram Holidays Home \u00b7 Informe de gesti\u00f3n Villas RiveroInforme de gesti\u00f3n para la propiedad Alaram Holidays Home 4 apartamentosGesti\u00f3n desde abril de 2026Actualizado \u00b7 18\/08\/2026 Nuestra gesti\u00f3n Mes a mes Apartamentos Reservas La respuesta r\u00e1pida Un ADR m\u00e1s alto no significa ganar m\u00e1s dinero Lo importante no es solamente cu\u00e1nto cobramos cuando conseguimos una reserva. [&hellip;]","og_url":"https:\/\/villasrivero.com\/en\/dashboard-alaram\/","og_site_name":"Villas Rivero","article_modified_time":"2026-08-18T20:36:27+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/villasrivero.com\/dashboard-alaram\/","url":"https:\/\/villasrivero.com\/dashboard-alaram\/","name":"Dashboard Alaram - Villas Rivero","isPartOf":{"@id":"https:\/\/villasrivero.com\/#website"},"datePublished":"2026-08-10T14:52:33+00:00","dateModified":"2026-08-18T20:36:27+00:00","breadcrumb":{"@id":"https:\/\/villasrivero.com\/dashboard-alaram\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/villasrivero.com\/dashboard-alaram\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/villasrivero.com\/dashboard-alaram\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/villasrivero.com\/"},{"@type":"ListItem","position":2,"name":"Dashboard Alaram"}]},{"@type":"WebSite","@id":"https:\/\/villasrivero.com\/#website","url":"https:\/\/villasrivero.com\/","name":"Villas Rivero","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/villasrivero.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"}]}},"_links":{"self":[{"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/comments?post=1511"}],"version-history":[{"count":13,"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1511\/revisions"}],"predecessor-version":[{"id":1552,"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1511\/revisions\/1552"}],"wp:attachment":[{"href":"http:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/media?parent=1511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}