{"id":4400,"date":"2025-08-13T08:32:20","date_gmt":"2025-08-13T06:32:20","guid":{"rendered":"https:\/\/franciscocabrera.es\/?page_id=4400"},"modified":"2025-08-20T10:34:58","modified_gmt":"2025-08-20T08:34:58","slug":"formulario-de-contacto","status":"publish","type":"page","link":"https:\/\/franciscocabrera.es\/en\/formulario-de-contacto\/","title":{"rendered":"Formulario de contacto"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"4400\" class=\"elementor elementor-4400\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8e77d9b fc-embed e-flex e-con-boxed e-con e-parent\" data-id=\"8e77d9b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29098cd elementor-widget elementor-widget-html\" data-id=\"29098cd\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"fc-card-head\">\n  <h1>Schedule a Conversation<\/h1>\n  <p>Select a date and time, then provide the key details so I can prepare for our conversation.<\/p>\n  <div class=\"fc-divider\"><\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-959e73a elementor-widget elementor-widget-wpforms\" data-id=\"959e73a\" data-element_type=\"widget\" data-widget_type=\"wpforms.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"wpforms-container\" id=\"wpforms-4362\"><form id=\"wpforms-form-4362\" class=\"wpforms-validate wpforms-form wpforms-ajax-form\" data-formid=\"4362\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/en\/wp-json\/wp\/v2\/pages\/4400\" data-token=\"78c3462dd8334f7f295095c18ef9391e\" data-token-time=\"1786044853\" data-trp-original-action=\"\/en\/wp-json\/wp\/v2\/pages\/4400\"><noscript class=\"wpforms-error-noscript\">Please enable JavaScript in your browser to complete this form.<\/noscript><div class=\"wpforms-field-container\"><div id=\"wpforms-4362-field_7-container\" class=\"wpforms-field wpforms-field-select wpforms-field-select-style-classic\" data-field-id=\"7\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_7\">What is the reason for our conversation? <\/label><select id=\"wpforms-4362-field_7\" class=\"wpforms-field-medium\" name=\"wpforms[fields][7]\"><option value=\"Compartir un Reto-Proyecto\" >Compartir un Reto-Proyecto<\/option><option value=\"Consulta sobre Servicios\" >Consulta sobre Servicios<\/option><option value=\"Propuesta de Colaboraci\u00f3n\" >Propuesta de Colaboraci\u00f3n<\/option><option value=\"Otros motivos\" >Otros motivos<\/option><\/select><\/div><div id=\"wpforms-4362-field_8-container\" class=\"wpforms-field wpforms-field-textarea\" data-field-id=\"8\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_8\">Would you like to provide any additional details to help us better prepare for the conversation?<\/label><textarea id=\"wpforms-4362-field_8\" class=\"wpforms-field-medium\" name=\"wpforms[fields][8]\" ><\/textarea><\/div><div id=\"wpforms-4362-field_6-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"6\"><label class=\"wpforms-field-label\">\u00bfCu\u00e1l es tu nombre completo? Escr\u00edbelo tal y como te gustar\u00eda que te llamemos. <span class=\"wpforms-required-label\">*<\/span><\/label><div class=\"wpforms-field-row wpforms-field-medium\"><div class=\"wpforms-field-row-block wpforms-first wpforms-one-half\"><input type=\"text\" id=\"wpforms-4362-field_6\" class=\"wpforms-field-name-first wpforms-field-required\" name=\"wpforms[fields][6][first]\" required><label for=\"wpforms-4362-field_6\" class=\"wpforms-field-sublabel after\">First<\/label><\/div><div class=\"wpforms-field-row-block wpforms-one-half\"><input type=\"text\" id=\"wpforms-4362-field_6-last\" class=\"wpforms-field-name-last wpforms-field-required\" name=\"wpforms[fields][6][last]\" required><label for=\"wpforms-4362-field_6-last\" class=\"wpforms-field-sublabel after\">Last<\/label><\/div><\/div><\/div>\t\t<div id=\"wpforms-4362-field_1-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"1\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-4362-field_1\" >\u00bf...y el en<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-4362-field_1\" class=\"wpforms-field-medium\" name=\"wpforms[fields][1]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-4362-field_2-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_2\">What company or project are you with? This helps provide context.<\/label><input type=\"text\" id=\"wpforms-4362-field_2\" class=\"wpforms-field-medium\" name=\"wpforms[fields][2]\" ><\/div><div id=\"wpforms-4362-field_3-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"3\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_3\">What is your role at the company or project?<\/label><input type=\"text\" id=\"wpforms-4362-field_3\" class=\"wpforms-field-medium\" name=\"wpforms[fields][3]\" ><\/div><div id=\"wpforms-4362-field_4-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"4\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_4\">Ind\u00edcanos tu email. Aqu\u00ed recibir\u00e1s nuestra respuesta personalizada <span class=\"wpforms-required-label\">*<\/span><\/label><input type=\"email\" id=\"wpforms-4362-field_4\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][4]\" spellcheck=\"false\" required><\/div><div id=\"wpforms-4362-field_5-container\" class=\"wpforms-field wpforms-field-number\" data-field-id=\"5\"><label class=\"wpforms-field-label\" for=\"wpforms-4362-field_5\">\u00bf...y tu tel\u00e9fono? Si tambi\u00e9n prefieres que te contactemos por esta v\u00eda.<\/label><input type=\"number\" id=\"wpforms-4362-field_5\" class=\"wpforms-field-medium\" name=\"wpforms[fields][5]\" step=\"any\" ><\/div><div id=\"wpforms-4362-field_9-container\" class=\"wpforms-field wpforms-field-text fc-startISO\" data-field-id=\"9\"><label class=\"wpforms-field-label wpforms-label-hide\" for=\"wpforms-4362-field_9\">Inicio ISO<\/label><input type=\"text\" id=\"wpforms-4362-field_9\" class=\"wpforms-field-medium\" name=\"wpforms[fields][9]\" ><\/div><div id=\"wpforms-4362-field_10-container\" class=\"wpforms-field wpforms-field-text fc-endISO\" data-field-id=\"10\"><label class=\"wpforms-field-label wpforms-label-hide\" for=\"wpforms-4362-field_10\">Fin ISO<\/label><input type=\"text\" id=\"wpforms-4362-field_10\" class=\"wpforms-field-medium\" name=\"wpforms[fields][10]\" ><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-4362-field_1-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-4362-field_1-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-4362-field_1-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-submit-container\" ><input type=\"hidden\" name=\"wpforms[id]\" value=\"4362\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/pages\/4400\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-4362\" class=\"wpforms-submit\" data-alt-text=\"Enviando...\" data-submit-text=\"Enviar\" aria-live=\"assertive\" value=\"wpforms-submit\">Enviar<\/button><img decoding=\"async\" src=\"https:\/\/franciscocabrera.es\/wp-content\/plugins\/wpforms-lite\/assets\/images\/submit-spin.svg\" class=\"wpforms-submit-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Loading\"><\/div><input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form><\/div>  <!-- .wpforms-container -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95be4dc elementor-widget elementor-widget-html\" data-id=\"95be4dc\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/flatpickr.min.css\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\"><\/script>\n\n<script>\n(function(){\n  \/\/ Debe existir la secci\u00f3n con clase fc-embed\n  const scope = document.querySelector('.fc-embed');\n  if(!scope) return;\n\n  \/\/ Tu Apps Script ya operativo:\n  const GAS_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbydO19sfpswrR_sU8LddinG8Ia8owtHkj_hqpavPoxPvABTekHRIoxxD9zfkR6pg3ve\/exec';\n\n  \/\/ Detectar el formulario WPForms activo en el scope\n  const formEl = scope.querySelector('form[id^=\"wpforms-form-\"]');\n  const FORM_ID = formEl ? (formEl.id.match(\/\\d+\/) || [])[0] : null;\n  if(!FORM_ID) return;\n\n  \/\/ Mapa de campos (ajusta si cambian IDs)\n  const F = {\n    fecha:'#wpforms-'+FORM_ID+'-field_11',\n    hora :'#wpforms-'+FORM_ID+'-field_12',\n    sISO :'#wpforms-'+FORM_ID+'-field_9',\n    eISO :'#wpforms-'+FORM_ID+'-field_10',\n    nombre:'#wpforms-'+FORM_ID+'-field_6',\n    email :'#wpforms-'+FORM_ID+'-field_4',\n    tel   :'#wpforms-'+FORM_ID+'-field_5',\n    emp   :'#wpforms-'+FORM_ID+'-field_2',\n    rol   :'#wpforms-'+FORM_ID+'-field_3',\n    mot   :'#wpforms-'+FORM_ID+'-field_7',\n    det   :'#wpforms-'+FORM_ID+'-field_8'\n  };\n  const $ = s => scope.querySelector(s);\n\n  \/\/ Ocultar campo fecha\/hora nativos y construir el picker visual\n  const fechaContainer = document.getElementById('wpforms-'+FORM_ID+'-field_11-container');\n  const horaContainer  = document.getElementById('wpforms-'+FORM_ID+'-field_12-container');\n  if(horaContainer) horaContainer.style.display='none';\n\n  const picker = document.createElement('div');\n  picker.className = 'fc-picker';\n  picker.innerHTML = '<div class=\"fc-cal\"><\/div><div class=\"fc-times\" id=\"fc-times-box\"><\/div>';\n  fechaContainer?.parentElement?.insertBefore(picker, fechaContainer);\n  if(fechaContainer) fechaContainer.style.display='none';\n\n  const calEl = picker.querySelector('.fc-cal');\n  const timesBox = picker.querySelector('#fc-times-box');\n\n  \/\/ Helpers\n  function withParams(base, params){\n    const sep = base.includes('?') ? '&' : '?';\n    const q = Object.entries(params).map(([k,v]) => encodeURIComponent(k)+'='+encodeURIComponent(v)).join('&');\n    return base + sep + q;\n  }\n  function jsonp(url, cb){\n    const id='__fc_cb_'+Date.now()+Math.random().toString(16).slice(2);\n    window[id]=function(resp){ try{ cb(resp); } finally{ delete window[id]; s.remove(); } };\n    const s=document.createElement('script');\n    s.src = withParams(url, { callback:id });\n    s.onerror=()=>cb({ok:false,error:'jsonp-error'});\n    document.head.appendChild(s);\n  }\n  function render(slots){\n    timesBox.innerHTML='';\n    if(!slots || !slots.length){\n      timesBox.innerHTML = '<div style=\"color:#64748b;\">Sin disponibilidad para ese d\u00eda. Prueba con otra fecha.<\/div>';\n      $(F.sISO).value=''; $(F.eISO).value='';\n      return;\n    }\n    slots.forEach(s=>{\n      const btn=document.createElement('button');\n      btn.type='button'; btn.className='fc-timebtn';\n      btn.innerHTML = s.label; \/\/ puedes a\u00f1adir subt\u00edtulo si quieres: + '<span class=\"fc-sub\">30 min<\/span>'\n      btn.addEventListener('click', ()=>{\n        timesBox.querySelectorAll('.fc-timebtn').forEach(b=>b.classList.remove('is-active'));\n        btn.classList.add('is-active');\n        $(F.sISO).value=s.start; $(F.eISO).value=s.end;\n      });\n      timesBox.appendChild(btn);\n    });\n  }\n  function loadFor(dateStr){\n    if(!dateStr){ timesBox.innerHTML='<div style=\"color:#64748b;\">Elige una fecha para ver horarios.<\/div>'; return; }\n    timesBox.innerHTML='<div style=\"color:#64748b;\">Buscando disponibilidad\u2026<\/div>';\n    jsonp(withParams(GAS_URL, { fn:'slots', date: dateStr }), j => render(j && j.ok ? j.slots : []));\n  }\n\n  \/\/ Flatpickr inline calendar\n  const fp = flatpickr(calEl, {\n    inline: true,\n    minDate: 'today',\n    dateFormat: 'Y-m-d',\n    defaultDate: ($(F.fecha)?.value || 'today'),\n    onReady: function(sel, str){ $(F.fecha).value = str; loadFor(str); },\n    onChange: function(sel, str){ $(F.fecha).value = str; loadFor(str); }\n  });\n\n  \/\/ Env\u00edo: asegurar que llevamos los ISO y crear evento en Calendar\n  formEl?.addEventListener('submit', ()=>{\n    const start = $(F.sISO)?.value || '', end = $(F.eISO)?.value || '';\n    if(!start || !end) return; \/\/ deja que WPForms valide\n    fetch(GAS_URL,{method:'POST',headers:{'Content-Type':'application\/json'},\n      body:JSON.stringify({\n        nombre:$(F.nombre)?.value||'', email:$(F.email)?.value||'',\n        telefono:$(F.tel)?.value||'', empresa:$(F.emp)?.value||'',\n        rol:$(F.rol)?.value||'', motivo:$(F.mot)?.value||'', detalles:$(F.det)?.value||'',\n        startISO:start, endISO:end\n      })\n    }).catch(()=>{});\n  });\n\n  \/\/ Ocultar encabezado al mostrar confirmaci\u00f3n\n  (function hideHeadOnConfirm(){\n    const head = scope.querySelector('.fc-card-head');\n    const wrap = scope.querySelector('.wpforms-container'); if(!wrap) return;\n    function check(){\n      if (wrap.querySelector('.wpforms-confirmation-container')){\n        if (head) head.style.display='none';\n        window.scrollTo({top:0,behavior:'smooth'});\n      }\n    }\n    check();\n    new MutationObserver(check).observe(wrap,{childList:true,subtree:true});\n  })();\n})();\n<\/script>\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>","protected":false},"excerpt":{"rendered":"<p>Reserva una conversaci\u00f3n Elige fecha y hora; despu\u00e9s cu\u00e9ntame lo esencial para prepararla. Por favor, activa JavaScript en tu navegador para completar este formulario.Selecciona una fecha para que tengamos una conversaci\u00f3n.Elije el bloque horario que mejor te encaje.Opci\u00f3n 3Cu\u00e9ntanos, \u00bfcu\u00e1l es el motivo por el que quieres tener una conversaci\u00f3n? Compartir un Reto-ProyectoConsulta sobre ServiciosPropuesta [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4400","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/pages\/4400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/comments?post=4400"}],"version-history":[{"count":0,"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/pages\/4400\/revisions"}],"wp:attachment":[{"href":"https:\/\/franciscocabrera.es\/en\/wp-json\/wp\/v2\/media?parent=4400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}