{"id":2215,"date":"2026-05-27T10:54:14","date_gmt":"2026-05-27T08:54:14","guid":{"rendered":"https:\/\/webdev.playmoove.com\/contatti\/"},"modified":"2026-07-21T18:05:37","modified_gmt":"2026-07-21T16:05:37","slug":"contatti","status":"publish","type":"page","link":"https:\/\/playmoove.com\/it\/contatti\/","title":{"rendered":"Contatti"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2215\" class=\"elementor elementor-2215 elementor-306\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d45fc4 e-con-full animated-slow pm-cta-morph-section pm-home-cta e-flex elementor-invisible e-con e-parent\" data-id=\"1d45fc4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ac52055 e-con-full e-flex e-con e-child\" data-id=\"ac52055\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa4dfef animated-slow elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"aa4dfef\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:750}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Contattaci<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f98077 animated-slow pm-auto-contact-heading-002 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"9f98077\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Parliamo del vostro progetto.<br \/>Descriveteci le vostre esigenze.<br \/><span>Costruiamo insieme la soluzione giusta.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46979fe animated-slow pm-auto-contact-heading-003 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"46979fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Il nostro ufficio<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba219a4 elementor-widget elementor-widget-text-editor\" data-id=\"ba219a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l.<br\/><br\/>Via S. Tommaso D\u2019Aquino, 20<br\/>09134 Cagliari, Italy<\/p><p><strong>Richieste commerciali<\/strong><br\/><a href=\"mailto:sales@playmoove.com\">sales@playmoove.com<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5d111b2 e-con-full e-flex e-con e-child\" data-id=\"5d111b2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f8359a0 elementor-widget elementor-widget-html\" data-id=\"f8359a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"pm-contact-form-section\">\r\n  <form\r\n    class=\"pm-contact-form\"\r\n    id=\"pmContactForm\"\r\n    action=\"\/wp-admin\/admin-post.php\"\r\n    method=\"post\"\r\n    novalidate\r\n  >\r\n    <input\r\n      type=\"hidden\"\r\n      name=\"action\"\r\n      value=\"pm_contact_form_submit\"\r\n    >\r\n\r\n    <input\r\n      type=\"hidden\"\r\n      name=\"recaptcha_token\"\r\n      id=\"pmRecaptchaToken\"\r\n      value=\"\"\r\n    >\r\n\r\n    <!-- Honeypot anti-spam -->\r\n    <div class=\"pm-hp\" aria-hidden=\"true\">\r\n      <label for=\"pmWebsite\">\r\n        Lascia questo campo vuoto\r\n      <\/label>\r\n\r\n      <input\r\n        type=\"text\"\r\n        id=\"pmWebsite\"\r\n        name=\"website\"\r\n        value=\"\"\r\n        tabindex=\"-1\"\r\n        autocomplete=\"new-password\"\r\n      >\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title\">\r\n      Le tue informazioni\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <input\r\n        type=\"text\"\r\n        name=\"name\"\r\n        placeholder=\"Nome\"\r\n        required\r\n      >\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <input\r\n        type=\"email\"\r\n        name=\"email\"\r\n        placeholder=\"Email\"\r\n        required\r\n      >\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <input\r\n        type=\"text\"\r\n        name=\"organization\"\r\n        placeholder=\"Organizzazione\"\r\n        required\r\n      >\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"role\" required>\r\n        <option value=\"\" disabled selected>\r\n          Ruolo\r\n        <\/option>\r\n\r\n        <option value=\"mobility_manager\">\r\n          Mobility Manager\r\n        <\/option>\r\n\r\n        <option value=\"it_director\">\r\n          Direttore IT\r\n        <\/option>\r\n\r\n        <option value=\"operations_director\">\r\n          Direttore operativo\r\n        <\/option>\r\n\r\n        <option value=\"procurement_officer\">\r\n          Responsabile acquisti\r\n        <\/option>\r\n\r\n        <option value=\"ceo_founder\">\r\n          CEO \/ Fondatore\r\n        <\/option>\r\n\r\n        <option value=\"other\">\r\n          Altro\r\n        <\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title pm-form-section-title--spaced\">\r\n      La tua operativit\u00e0\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"organization_type\" required>\r\n        <option value=\"\" disabled selected>\r\n          Tipo di organizzazione\r\n        <\/option>\r\n\r\n        <option value=\"city_municipality\">\r\n          Citt\u00e0 \/ Comune\r\n        <\/option>\r\n\r\n        <option value=\"university_campus\">\r\n          Universit\u00e0 \/ Campus\r\n        <\/option>\r\n\r\n        <option value=\"corporation_enterprise\">\r\n          Azienda \/ Impresa\r\n        <\/option>\r\n\r\n        <option value=\"mobility_operator\">\r\n          Operatore di mobilit\u00e0 (car sharing, noleggio, ecc.)\r\n        <\/option>\r\n\r\n        <option value=\"transportation_authority\">\r\n          Autorit\u00e0 di trasporto\r\n        <\/option>\r\n\r\n        <option value=\"other\">\r\n          Altro\r\n        <\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"current_stage\" required>\r\n        <option value=\"\" disabled selected>\r\n          Fase attuale\r\n        <\/option>\r\n\r\n        <option value=\"planning_research\">\r\n          Pianificazione \/ Ricerca\r\n        <\/option>\r\n\r\n        <option value=\"pilot_poc\">\r\n          Pilota \/ Proof of Concept\r\n        <\/option>\r\n\r\n        <option value=\"active_operations_scaling\">\r\n          Operazioni attive (in espansione)\r\n        <\/option>\r\n\r\n        <option value=\"replacing_current_platform\">\r\n          Sostituzione della piattaforma attuale\r\n        <\/option>\r\n\r\n        <option value=\"exploring_options\">\r\n          Esplorazione delle opzioni\r\n        <\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title pm-form-section-title--requirements\">\r\n      <span>\r\n        Le tue esigenze\r\n      <\/span>\r\n\r\n      <small>\r\n        Limite di caratteri:\r\n        <span id=\"pmCharCount\">500<\/span>\r\n      <\/small>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <textarea\r\n        name=\"requirements\"\r\n        maxlength=\"500\"\r\n        required\r\n        placeholder=\"Raccontaci le tue esigenze. Descrivi il tuo servizio di mobilit\u00e0: dimensioni della flotta, aree operative, modelli di prenotazione, requisiti di integrazione, esigenze di conformit\u00e0 o problematiche specifiche che desideri risolvere.\"\r\n      ><\/textarea>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full pm-form-field--consent\">\r\n      <label class=\"pm-form-consent\">\r\n        <input\r\n          type=\"checkbox\"\r\n          name=\"privacy_consent\"\r\n          value=\"1\"\r\n          required\r\n        >\r\n\r\n        <span>\r\n          Accetto di essere contattato in merito alla mia richiesta e dichiaro di aver letto la\r\n          <a\r\n            href=\"\/it\/dichiarazione-sulla-privacy-ue\/\"\r\n            target=\"_blank\"\r\n            rel=\"noopener\"\r\n          >\r\n            Privacy Policy\r\n          <\/a>.\r\n        <\/span>\r\n      <\/label>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-actions\">\r\n      <button\r\n        type=\"submit\"\r\n        class=\"pm-form-submit\"\r\n      >\r\n        <span>\r\n          Invia\r\n        <\/span>\r\n\r\n        <svg\r\n          viewBox=\"0 0 26 16\"\r\n          aria-hidden=\"true\"\r\n        >\r\n          <path\r\n            d=\"M17.8 1L24.5 8L17.8 15M24 8H1\"\r\n          ><\/path>\r\n        <\/svg>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div\r\n      class=\"pm-form-success-overlay\"\r\n      id=\"pmContactSuccess\"\r\n      aria-live=\"polite\"\r\n    >\r\n      <div class=\"pm-form-success-card\">\r\n        <div\r\n          class=\"pm-form-success-icon\"\r\n          aria-hidden=\"true\"\r\n        >\r\n          <svg viewBox=\"0 0 26 26\">\r\n            <path\r\n              d=\"M6.5 13.4L10.8 17.7L19.8 8.3\"\r\n            ><\/path>\r\n          <\/svg>\r\n        <\/div>\r\n\r\n        <p class=\"pm-form-success-kicker\">\r\n          Richiesta ricevuta\r\n        <\/p>\r\n\r\n        <h3>\r\n          Grazie \u2014 abbiamo ricevuto la tua richiesta.\r\n        <\/h3>\r\n\r\n        <p>\r\n          Il nostro team esaminer\u00e0 le tue esigenze e ti risponder\u00e0 a breve.\r\n        <\/p>\r\n\r\n        <p>\r\n          Nel frattempo, puoi esplorare come Playmoove supporta la mobilit\u00e0 condivisa,\r\n          le operazioni di flotta e i servizi di mobilit\u00e0.\r\n        <\/p>\r\n\r\n        <div class=\"pm-form-success-actions\">\r\n          <a\r\n            href=\"https:\/\/playmoove.com\/it\/soluzioni\/\"\r\n            class=\"pm-form-success-link\"\r\n          >\r\n            Esplora le soluzioni\r\n          <\/a>\r\n\r\n          <a\r\n            href=\"https:\/\/playmoove.com\/it\/piattaforma\/\"\r\n            class=\"pm-form-success-link pm-form-success-link--secondary\"\r\n          >\r\n            Visualizza la piattaforma\r\n          <\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div\r\n      class=\"pm-form-message pm-form-message--error\"\r\n      id=\"pmContactError\"\r\n      aria-live=\"polite\"\r\n    >\r\n      Qualcosa \u00e8 andato storto. Riprova.\r\n    <\/div>\r\n  <\/form>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1154514 elementor-widget elementor-widget-html\" data-id=\"1154514\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  const form = document.querySelector(\"#pmContactForm\");\r\n\r\n  if (!form) {\r\n    return;\r\n  }\r\n\r\n  \/*\r\n   * reCAPTCHA v3\r\n   *\r\n   * Inserire qui la site key pubblica.\r\n   * La secret key deve rimanere esclusivamente nel PHP.\r\n   *\/\r\n\r\n  const recaptchaSiteKey =\r\n    \"6Lf5uV0tAAAAACTNjxSOOJb0vdpOP0f56aPXZg38\";\r\n\r\n  const recaptchaAction =\r\n    \"contact_form\";\r\n\r\n  \/*\r\n   * HubSpot\r\n   *\/\r\n\r\n  const portalId =\r\n    \"144798352\";\r\n\r\n  const hubspotFormId =\r\n    \"25384daf-9ac3-466d-b0ae-bf503762c5c5\";\r\n\r\n  const hubspotEndpoint =\r\n    `https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/${portalId}\/${hubspotFormId}`;\r\n\r\n  \/*\r\n   * WordPress endpoint\r\n   *\/\r\n\r\n  const wordpressEndpoint =\r\n    form.getAttribute(\"action\") ||\r\n    \"\/wp-admin\/admin-post.php\";\r\n\r\n  \/*\r\n   * Form elements\r\n   *\/\r\n\r\n  const textarea =\r\n    form.querySelector(\r\n      'textarea[name=\"requirements\"]'\r\n    );\r\n\r\n  const counter =\r\n    form.querySelector(\"#pmCharCount\");\r\n\r\n  const selects =\r\n    form.querySelectorAll(\"select\");\r\n\r\n  const successOverlay =\r\n    form.querySelector(\"#pmContactSuccess\");\r\n\r\n  const errorMessage =\r\n    form.querySelector(\"#pmContactError\");\r\n\r\n  const submitButton =\r\n    form.querySelector(\".pm-form-submit\");\r\n\r\n  const submitLabel =\r\n    submitButton\r\n      ? submitButton.querySelector(\"span\")\r\n      : null;\r\n\r\n  const recaptchaTokenField =\r\n    form.querySelector(\"#pmRecaptchaToken\");\r\n\r\n  \/*\r\n   * reCAPTCHA script loader\r\n   *\/\r\n\r\n  function loadRecaptchaScript() {\r\n    return new Promise(function (resolve, reject) {\r\n      if (\r\n        typeof window.grecaptcha !== \"undefined\"\r\n      ) {\r\n        resolve();\r\n        return;\r\n      }\r\n\r\n      const existingScript =\r\n        document.querySelector(\r\n          'script[data-pm-recaptcha=\"true\"]'\r\n        );\r\n\r\n      if (existingScript) {\r\n        existingScript.addEventListener(\r\n          \"load\",\r\n          function () {\r\n            resolve();\r\n          },\r\n          {\r\n            once: true\r\n          }\r\n        );\r\n\r\n        existingScript.addEventListener(\r\n          \"error\",\r\n          function () {\r\n            reject(\r\n              new Error(\r\n                \"reCAPTCHA script failed to load\"\r\n              )\r\n            );\r\n          },\r\n          {\r\n            once: true\r\n          }\r\n        );\r\n\r\n        return;\r\n      }\r\n\r\n      const script =\r\n        document.createElement(\"script\");\r\n\r\n      script.src =\r\n        `https:\/\/www.google.com\/recaptcha\/api.js?render=${encodeURIComponent(\r\n          recaptchaSiteKey\r\n        )}`;\r\n\r\n      script.async = true;\r\n      script.defer = true;\r\n\r\n      script.setAttribute(\r\n        \"data-pm-recaptcha\",\r\n        \"true\"\r\n      );\r\n\r\n      script.addEventListener(\r\n        \"load\",\r\n        function () {\r\n          resolve();\r\n        },\r\n        {\r\n          once: true\r\n        }\r\n      );\r\n\r\n      script.addEventListener(\r\n        \"error\",\r\n        function () {\r\n          reject(\r\n            new Error(\r\n              \"reCAPTCHA script failed to load\"\r\n            )\r\n          );\r\n        },\r\n        {\r\n          once: true\r\n        }\r\n      );\r\n\r\n      document.head.appendChild(script);\r\n    });\r\n  }\r\n\r\n  \/*\r\n   * Generate fresh reCAPTCHA token\r\n   *\/\r\n\r\n  async function getRecaptchaToken() {\r\n    if (\r\n      !recaptchaSiteKey ||\r\n      recaptchaSiteKey ===\r\n        \"INSERISCI_QUI_LA_SITE_KEY\"\r\n    ) {\r\n      throw new Error(\r\n        \"reCAPTCHA site key is not configured\"\r\n      );\r\n    }\r\n\r\n    await loadRecaptchaScript();\r\n\r\n    if (\r\n      typeof window.grecaptcha === \"undefined\"\r\n    ) {\r\n      throw new Error(\r\n        \"reCAPTCHA is not available\"\r\n      );\r\n    }\r\n\r\n    return new Promise(function (\r\n      resolve,\r\n      reject\r\n    ) {\r\n      window.grecaptcha.ready(function () {\r\n        window.grecaptcha\r\n          .execute(\r\n            recaptchaSiteKey,\r\n            {\r\n              action: recaptchaAction\r\n            }\r\n          )\r\n          .then(function (token) {\r\n            if (!token) {\r\n              reject(\r\n                new Error(\r\n                  \"Empty reCAPTCHA token\"\r\n                )\r\n              );\r\n\r\n              return;\r\n            }\r\n\r\n            resolve(token);\r\n          })\r\n          .catch(function (error) {\r\n            reject(error);\r\n          });\r\n      });\r\n    });\r\n  }\r\n\r\n  \/*\r\n   * Character counter\r\n   *\/\r\n\r\n  function updateCounter() {\r\n    if (!textarea || !counter) {\r\n      return;\r\n    }\r\n\r\n    const max = 500;\r\n    const current = textarea.value.length;\r\n\r\n    const remaining = Math.max(\r\n      max - current,\r\n      0\r\n    );\r\n\r\n    counter.textContent = remaining;\r\n  }\r\n\r\n  \/*\r\n   * Messages\r\n   *\/\r\n\r\n  function hideMessages() {\r\n    form.classList.remove(\r\n      \"is-success\",\r\n      \"is-error\"\r\n    );\r\n\r\n    if (successOverlay) {\r\n      successOverlay.style.display = \"none\";\r\n    }\r\n\r\n    if (errorMessage) {\r\n      errorMessage.style.display = \"none\";\r\n    }\r\n  }\r\n\r\n  function showSuccess() {\r\n    hideMessages();\r\n\r\n    form.classList.add(\"is-success\");\r\n\r\n    if (successOverlay) {\r\n      successOverlay.style.display = \"flex\";\r\n    }\r\n  }\r\n\r\n  function showError(text) {\r\n    hideMessages();\r\n\r\n    form.classList.add(\"is-error\");\r\n\r\n    if (errorMessage) {\r\n      errorMessage.textContent =\r\n        text ||\r\n        \"Qualcosa \u00e8 andato storto. Riprova.\";\r\n\r\n      errorMessage.style.display = \"block\";\r\n    }\r\n  }\r\n\r\n  \/*\r\n   * Loading state\r\n   *\/\r\n\r\n  function setLoading(isLoading) {\r\n    if (!submitButton) {\r\n      return;\r\n    }\r\n\r\n    submitButton.disabled = isLoading;\r\n\r\n    submitButton.classList.toggle(\r\n      \"is-loading\",\r\n      isLoading\r\n    );\r\n\r\n    if (submitLabel) {\r\n      submitLabel.textContent =\r\n        isLoading\r\n          ? \"Invio in corso...\"\r\n          : \"Invia\";\r\n    }\r\n  }\r\n\r\n  \/*\r\n   * Validation\r\n   *\/\r\n\r\n  function markInvalidFields() {\r\n    const fields =\r\n      form.querySelectorAll(\r\n        \"input, select, textarea\"\r\n      );\r\n\r\n    fields.forEach(function (field) {\r\n      field.classList.toggle(\r\n        \"pm-field-error\",\r\n        !field.checkValidity()\r\n      );\r\n    });\r\n  }\r\n\r\n  function clearInvalidState(field) {\r\n    if (!field) {\r\n      return;\r\n    }\r\n\r\n    field.classList.remove(\r\n      \"pm-field-error\"\r\n    );\r\n  }\r\n\r\n  \/*\r\n   * WordPress submission\r\n   *\/\r\n\r\n  async function sendToWordPress(formData) {\r\n    const response =\r\n      await fetch(\r\n        wordpressEndpoint,\r\n        {\r\n          method: \"POST\",\r\n          body: formData,\r\n          credentials: \"same-origin\",\r\n          redirect: \"follow\"\r\n        }\r\n      );\r\n\r\n    if (!response.ok) {\r\n      throw new Error(\r\n        \"WordPress submission failed\"\r\n      );\r\n    }\r\n\r\n    \/*\r\n     * Il PHP risponde tramite redirect verso:\r\n     *\r\n     * ?pm_contact=success\r\n     * ?pm_contact=error\r\n     * ?pm_contact=recaptcha\r\n     *\/\r\n\r\n    const finalUrl =\r\n      new URL(response.url);\r\n\r\n    const status =\r\n      finalUrl.searchParams.get(\r\n        \"pm_contact\"\r\n      );\r\n\r\n    if (status === \"recaptcha\") {\r\n      throw new Error(\r\n        \"RECAPTCHA_REJECTED\"\r\n      );\r\n    }\r\n\r\n    if (status !== \"success\") {\r\n      throw new Error(\r\n        \"WordPress mail failed\"\r\n      );\r\n    }\r\n  }\r\n\r\n  \/*\r\n   * HubSpot submission\r\n   *\/\r\n\r\n  async function sendToHubSpot(formData) {\r\n    const payload = {\r\n      fields: [\r\n        {\r\n          name: \"firstname\",\r\n          value:\r\n            formData.get(\"name\") ||\r\n            \"\"\r\n        },\r\n        {\r\n          name: \"email\",\r\n          value:\r\n            formData.get(\"email\") ||\r\n            \"\"\r\n        },\r\n        {\r\n          name: \"company\",\r\n          value:\r\n            formData.get(\r\n              \"organization\"\r\n            ) || \"\"\r\n        },\r\n        {\r\n          name: \"role\",\r\n          value:\r\n            formData.get(\"role\") ||\r\n            \"\"\r\n        },\r\n        {\r\n          name: \"organization_type\",\r\n          value:\r\n            formData.get(\r\n              \"organization_type\"\r\n            ) || \"\"\r\n        },\r\n        {\r\n          name: \"current_stage\",\r\n          value:\r\n            formData.get(\r\n              \"current_stage\"\r\n            ) || \"\"\r\n        },\r\n        {\r\n          name: \"requirements\",\r\n          value:\r\n            formData.get(\r\n              \"requirements\"\r\n            ) || \"\"\r\n        }\r\n      ],\r\n      context: {\r\n        pageUri:\r\n          window.location.href,\r\n\r\n        pageName:\r\n          document.title\r\n      }\r\n    };\r\n\r\n    const response =\r\n      await fetch(\r\n        hubspotEndpoint,\r\n        {\r\n          method: \"POST\",\r\n          headers: {\r\n            \"Content-Type\":\r\n              \"application\/json\"\r\n          },\r\n          body:\r\n            JSON.stringify(payload)\r\n        }\r\n      );\r\n\r\n    if (!response.ok) {\r\n      const errorData =\r\n        await response\r\n          .json()\r\n          .catch(function () {\r\n            return null;\r\n          });\r\n\r\n      console.error(\r\n        \"HubSpot error:\",\r\n        errorData\r\n      );\r\n\r\n      throw new Error(\r\n        \"HubSpot submission failed\"\r\n      );\r\n    }\r\n  }\r\n\r\n  \/*\r\n   * Textarea setup\r\n   *\/\r\n\r\n  if (textarea) {\r\n    textarea.setAttribute(\r\n      \"maxlength\",\r\n      \"500\"\r\n    );\r\n\r\n    textarea.addEventListener(\r\n      \"input\",\r\n      updateCounter\r\n    );\r\n\r\n    updateCounter();\r\n  }\r\n\r\n  \/*\r\n   * Select setup\r\n   *\/\r\n\r\n  selects.forEach(function (select) {\r\n    select.addEventListener(\r\n      \"change\",\r\n      function () {\r\n        select.classList.add(\r\n          \"pm-touched\"\r\n        );\r\n      }\r\n    );\r\n\r\n    select.addEventListener(\r\n      \"blur\",\r\n      function () {\r\n        select.classList.add(\r\n          \"pm-touched\"\r\n        );\r\n      }\r\n    );\r\n  });\r\n\r\n  \/*\r\n   * Clear validation errors\r\n   *\/\r\n\r\n  form.addEventListener(\r\n    \"input\",\r\n    function (event) {\r\n      if (\r\n        event.target.matches(\r\n          \"input, select, textarea\"\r\n        )\r\n      ) {\r\n        clearInvalidState(\r\n          event.target\r\n        );\r\n      }\r\n    }\r\n  );\r\n\r\n  form.addEventListener(\r\n    \"change\",\r\n    function (event) {\r\n      if (\r\n        event.target.matches(\r\n          \"input, select, textarea\"\r\n        )\r\n      ) {\r\n        clearInvalidState(\r\n          event.target\r\n        );\r\n      }\r\n    }\r\n  );\r\n\r\n  \/*\r\n   * Form submission\r\n   *\/\r\n\r\n  form.addEventListener(\r\n    \"submit\",\r\n    async function (event) {\r\n      event.preventDefault();\r\n\r\n      hideMessages();\r\n\r\n      \/*\r\n       * Browser validation\r\n       *\/\r\n\r\n      if (!form.checkValidity()) {\r\n        markInvalidFields();\r\n\r\n        showError(\r\n          \"Compila tutti i campi obbligatori prima di inviare.\"\r\n        );\r\n\r\n        return;\r\n      }\r\n\r\n      \/*\r\n       * Honeypot\r\n       *\/\r\n\r\n      const initialFormData =\r\n        new FormData(form);\r\n\r\n      if (\r\n        initialFormData.get(\"website\")\r\n      ) {\r\n        showSuccess();\r\n        return;\r\n      }\r\n\r\n      setLoading(true);\r\n\r\n      try {\r\n        \/*\r\n         * Genera il token immediatamente\r\n         * prima dell'invio a WordPress.\r\n         *\/\r\n\r\n        const recaptchaToken =\r\n          await getRecaptchaToken();\r\n\r\n        if (!recaptchaTokenField) {\r\n          throw new Error(\r\n            \"reCAPTCHA token field is missing\"\r\n          );\r\n        }\r\n\r\n        recaptchaTokenField.value =\r\n          recaptchaToken;\r\n\r\n        \/*\r\n         * Ricrea FormData dopo avere\r\n         * inserito il token.\r\n         *\/\r\n\r\n        const formData =\r\n          new FormData(form);\r\n\r\n        \/*\r\n         * Prima WordPress:\r\n         *\r\n         * - verifica reCAPTCHA;\r\n         * - valida i dati;\r\n         * - invia la mail tramite wp_mail;\r\n         * - restituisce il redirect di stato.\r\n         *\/\r\n\r\n        await sendToWordPress(\r\n          formData\r\n        );\r\n\r\n        \/*\r\n         * Poi HubSpot:\r\n         *\r\n         * salva il contatto e la submission\r\n         * solo dopo la verifica server-side.\r\n         *\/\r\n\r\n        await sendToHubSpot(\r\n          formData\r\n        );\r\n\r\n        \/*\r\n         * Reset form\r\n         *\/\r\n\r\n        form.reset();\r\n\r\n        recaptchaTokenField.value = \"\";\r\n\r\n        updateCounter();\r\n\r\n        selects.forEach(function (select) {\r\n          select.classList.remove(\r\n            \"pm-touched\"\r\n          );\r\n        });\r\n\r\n        showSuccess();\r\n\r\n        form.scrollIntoView({\r\n          behavior: \"smooth\",\r\n          block: \"center\"\r\n        });\r\n      } catch (error) {\r\n        console.error(\r\n          \"Playmoove form error:\",\r\n          error\r\n        );\r\n\r\n        if (\r\n          error.message ===\r\n          \"RECAPTCHA_REJECTED\"\r\n        ) {\r\n          showError(\r\n            \"Non \u00e8 stato possibile verificare l\u2019invio. Ricarica la pagina e riprova.\"\r\n          );\r\n        } else if (\r\n          error.message ===\r\n            \"reCAPTCHA script failed to load\" ||\r\n          error.message ===\r\n            \"reCAPTCHA is not available\"\r\n        ) {\r\n          showError(\r\n            \"Non \u00e8 stato possibile caricare il controllo di sicurezza. Disattiva eventuali blocchi degli script e riprova.\"\r\n          );\r\n        } else if (\r\n          error.message ===\r\n          \"reCAPTCHA site key is not configured\"\r\n        ) {\r\n          showError(\r\n            \"Il controllo di sicurezza non \u00e8 configurato correttamente.\"\r\n          );\r\n        } else {\r\n          showError(\r\n            \"Qualcosa \u00e8 andato storto. Riprova oppure contatta sales@playmoove.com.\"\r\n          );\r\n        }\r\n      } finally {\r\n        \/*\r\n         * Il token \u00e8 monouso.\r\n         * Lo svuotiamo anche in caso di errore.\r\n         *\/\r\n\r\n        if (recaptchaTokenField) {\r\n          recaptchaTokenField.value = \"\";\r\n        }\r\n\r\n        setLoading(false);\r\n      }\r\n    }\r\n  );\r\n\r\n  \/*\r\n   * Precaricamento dello script.\r\n   *\r\n   * Il token non viene generato qui:\r\n   * viene generato esclusivamente al submit.\r\n   *\/\r\n\r\n  loadRecaptchaScript().catch(\r\n    function (error) {\r\n      console.warn(\r\n        \"Playmoove reCAPTCHA preload:\",\r\n        error\r\n      );\r\n    }\r\n  );\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f18a2d elementor-widget elementor-widget-html\" data-id=\"9f18a2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>(function () {\r\n  const initializedSections = new WeakSet();\r\n\r\n  function initPmContactAnimation(scope) {\r\n    if (typeof gsap === \"undefined\") return;\r\n\r\n    gsap.registerPlugin && gsap.registerPlugin(ScrollTrigger);\r\n\r\n    const root = scope || document;\r\n    const section = root.querySelector(\".elementor-306 .pm-home-cta\");\r\n    const form = root.querySelector(\"#pmContactForm\");\r\n\r\n    if (!section || !form) return;\r\n    if (initializedSections.has(section)) return;\r\n\r\n    initializedSections.add(section);\r\n\r\n    \/*\r\n      IMPORTANT:\r\n      Nel markup attuale c'\u00e8 gi\u00e0 data-pm-contact-animated=\"true\".\r\n      Non lo usiamo pi\u00f9 come blocco, perch\u00e9 impediva all'animazione di partire.\r\n    *\/\r\n    section.removeAttribute(\"data-pm-contact-animated\");\r\n\r\n    const eyebrow = section.querySelector(\".elementor-element-aa4dfef\");\r\n    const headline = section.querySelector(\".elementor-element-9f98077\");\r\n\r\n    const formTitles = Array.from(form.querySelectorAll(\".pm-form-section-title\"));\r\n    const fields = Array.from(form.querySelectorAll(\".pm-form-field\"));\r\n    const actions = form.querySelector(\".pm-form-actions\");\r\n    const submit = form.querySelector(\".pm-form-submit\");\r\n    const inputs = Array.from(form.querySelectorAll(\"input, select, textarea\"));\r\n\r\n    const animatedEls = [\r\n      eyebrow,\r\n      headline,\r\n      form,\r\n      ...formTitles,\r\n      ...fields,\r\n      actions\r\n    ].filter(Boolean);\r\n\r\n    \/*\r\n      Neutralizza eventuali animazioni Elementor gi\u00e0 applicate.\r\n      Cos\u00ec eviti doppie animazioni \/ stati gi\u00e0 visibili \/ conflitti.\r\n    *\/\r\n    animatedEls.forEach(function (el) {\r\n      el.classList.remove(\r\n        \"animated\",\r\n        \"fadeIn\",\r\n        \"fadeInDown\",\r\n        \"fadeInUp\",\r\n        \"fadeInLeft\",\r\n        \"fadeInRight\"\r\n      );\r\n\r\n      el.style.removeProperty(\"animation\");\r\n      el.style.removeProperty(\"animation-name\");\r\n      el.style.removeProperty(\"animation-duration\");\r\n      el.style.removeProperty(\"animation-delay\");\r\n      el.style.removeProperty(\"visibility\");\r\n      el.style.removeProperty(\"opacity\");\r\n      el.style.removeProperty(\"transform\");\r\n      el.style.removeProperty(\"filter\");\r\n    });\r\n\r\n    gsap.set(section, {\r\n      \"--pm-contact-glow-x\": \"18%\",\r\n      \"--pm-contact-glow-y\": \"20%\",\r\n      \"--pm-contact-glow-opacity\": 0.72\r\n    });\r\n\r\n    gsap.set([eyebrow, headline].filter(Boolean), {\r\n      autoAlpha: 0,\r\n      y: 38,\r\n      filter: \"blur(14px)\"\r\n    });\r\n\r\n    gsap.set(form, {\r\n      autoAlpha: 0,\r\n      y: 48,\r\n      scale: 0.985,\r\n      filter: \"blur(16px)\"\r\n    });\r\n\r\n    gsap.set(formTitles, {\r\n      autoAlpha: 0,\r\n      y: 16\r\n    });\r\n\r\n    gsap.set(fields, {\r\n      autoAlpha: 0,\r\n      y: 22\r\n    });\r\n\r\n    if (actions) {\r\n      gsap.set(actions, {\r\n        autoAlpha: 0,\r\n        y: 18,\r\n        scale: 0.98\r\n      });\r\n    }\r\n\r\n    const tl = gsap.timeline({\r\n      scrollTrigger: {\r\n        trigger: section,\r\n        start: \"top 72%\",\r\n        once: true\r\n      },\r\n      defaults: {\r\n        ease: \"power3.out\"\r\n      }\r\n    });\r\n\r\n    tl.to(section, {\r\n      \"--pm-contact-glow-x\": \"72%\",\r\n      \"--pm-contact-glow-y\": \"34%\",\r\n      duration: 1.4,\r\n      ease: \"power2.out\"\r\n    });\r\n\r\n    if (eyebrow) {\r\n      tl.to(eyebrow, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        filter: \"blur(0px)\",\r\n        duration: 0.75\r\n      }, 0.08);\r\n    }\r\n\r\n    if (headline) {\r\n      tl.to(headline, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        filter: \"blur(0px)\",\r\n        duration: 0.95\r\n      }, 0.18);\r\n    }\r\n\r\n    tl.to(form, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      scale: 1,\r\n      filter: \"blur(0px)\",\r\n      duration: 0.9\r\n    }, 0.34);\r\n\r\n    tl.to(formTitles, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      duration: 0.5,\r\n      stagger: 0.08\r\n    }, 0.62);\r\n\r\n    tl.to(fields, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      duration: 0.52,\r\n      stagger: {\r\n        each: 0.045,\r\n        from: \"start\"\r\n      }\r\n    }, 0.7);\r\n\r\n    if (actions) {\r\n      tl.to(actions, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        scale: 1,\r\n        duration: 0.55\r\n      }, \"-=0.18\");\r\n    }\r\n\r\n    \/*\r\n      Glow molto leggero continuo sul background.\r\n      Non usa setInterval.\r\n    *\/\r\n    gsap.to(section, {\r\n      \"--pm-contact-glow-x\": \"38%\",\r\n      \"--pm-contact-glow-y\": \"68%\",\r\n      duration: 8,\r\n      repeat: -1,\r\n      yoyo: true,\r\n      ease: \"sine.inOut\"\r\n    });\r\n\r\n    inputs.forEach(function (input) {\r\n      input.addEventListener(\"focus\", function () {\r\n        gsap.to(input, {\r\n          scale: 1.01,\r\n          duration: 0.22,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n\r\n      input.addEventListener(\"blur\", function () {\r\n        gsap.to(input, {\r\n          scale: 1,\r\n          duration: 0.22,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n    });\r\n\r\n    if (submit) {\r\n      const arrow = submit.querySelector(\"svg\");\r\n\r\n      submit.addEventListener(\"mouseenter\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1.025,\r\n          duration: 0.24,\r\n          ease: \"power2.out\"\r\n        });\r\n\r\n        if (arrow) {\r\n          gsap.to(arrow, {\r\n            x: 4,\r\n            duration: 0.24,\r\n            ease: \"power2.out\"\r\n          });\r\n        }\r\n      });\r\n\r\n      submit.addEventListener(\"mouseleave\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1,\r\n          duration: 0.24,\r\n          ease: \"power2.out\"\r\n        });\r\n\r\n        if (arrow) {\r\n          gsap.to(arrow, {\r\n            x: 0,\r\n            duration: 0.24,\r\n            ease: \"power2.out\"\r\n          });\r\n        }\r\n      });\r\n\r\n      submit.addEventListener(\"mousedown\", function () {\r\n        gsap.to(submit, {\r\n          scale: 0.985,\r\n          duration: 0.12,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n\r\n      submit.addEventListener(\"mouseup\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1.025,\r\n          duration: 0.16,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n    }\r\n\r\n    ScrollTrigger && ScrollTrigger.refresh();\r\n  }\r\n\r\n  function boot() {\r\n    initPmContactAnimation(document);\r\n  }\r\n\r\n  window.addEventListener(\"load\", boot);\r\n\r\n  document.addEventListener(\"DOMContentLoaded\", function () {\r\n    window.setTimeout(boot, 80);\r\n  });\r\n\r\n  if (window.jQuery) {\r\n    jQuery(window).on(\"elementor\/frontend\/init\", function () {\r\n      window.setTimeout(boot, 120);\r\n    });\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\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>Contattaci Parliamo del vostro progetto.Descriveteci le vostre esigenze.Costruiamo insieme la soluzione giusta. Il nostro ufficio Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l. Via S. Tommaso D\u2019Aquino, 2009134 Cagliari, Italy Richieste commercialisales@playmoove.com Lascia questo campo vuoto Le tue informazioni Ruolo Mobility Manager Direttore IT Direttore operativo Responsabile acquisti CEO \/ Fondatore Altro La tua operativit\u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2215","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>Contatti Playmoove | Piattaforma per la Mobilit\u00e0<\/title>\n<meta name=\"description\" content=\"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/playmoove.com\/it\/contatti\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contatti Playmoove | Piattaforma per la Mobilit\u00e0\" \/>\n<meta property=\"og:description\" content=\"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/playmoove.com\/it\/contatti\/\" \/>\n<meta property=\"og:site_name\" content=\"playmoove.com\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-21T16:05:37+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\",\"name\":\"Contatti Playmoove | Piattaforma per la Mobilit\u00e0\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#website\"},\"datePublished\":\"2026-05-27T08:54:14+00:00\",\"dateModified\":\"2026-07-21T16:05:37+00:00\",\"description\":\"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contatti\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\",\"name\":\"Playmoove\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/playmoove.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#organization\",\"name\":\"Playmoove\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/playmoove.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PLAYMOOVE_White_LOGO.svg\",\"contentUrl\":\"https:\\\/\\\/playmoove.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PLAYMOOVE_White_LOGO.svg\",\"width\":800,\"height\":115,\"caption\":\"Playmoove\"},\"image\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/it.linkedin.com\\\/organization-guest\\\/company\\\/playmoove\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Contatti Playmoove | Piattaforma per la Mobilit\u00e0","description":"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.","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:\/\/playmoove.com\/it\/contatti\/","og_locale":"it_IT","og_type":"article","og_title":"Contatti Playmoove | Piattaforma per la Mobilit\u00e0","og_description":"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.","og_url":"https:\/\/playmoove.com\/it\/contatti\/","og_site_name":"playmoove.com","article_modified_time":"2026-07-21T16:05:37+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/playmoove.com\/it\/contatti\/","url":"https:\/\/playmoove.com\/it\/contatti\/","name":"Contatti Playmoove | Piattaforma per la Mobilit\u00e0","isPartOf":{"@id":"https:\/\/playmoove.com\/it\/#website"},"datePublished":"2026-05-27T08:54:14+00:00","dateModified":"2026-07-21T16:05:37+00:00","description":"Raccontaci il tuo progetto di mobilit\u00e0, i requisiti operativi e le integrazioni. Contatta Playmoove per definire la configurazione adatta.","breadcrumb":{"@id":"https:\/\/playmoove.com\/it\/contatti\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/playmoove.com\/it\/contatti\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/playmoove.com\/it\/contatti\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/playmoove.com\/it\/"},{"@type":"ListItem","position":2,"name":"Contatti"}]},{"@type":"WebSite","@id":"https:\/\/playmoove.com\/it\/#website","url":"https:\/\/playmoove.com\/it\/","name":"Playmoove","description":"","publisher":{"@id":"https:\/\/playmoove.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/playmoove.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/playmoove.com\/it\/#organization","name":"Playmoove","url":"https:\/\/playmoove.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/playmoove.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/playmoove.com\/wp-content\/uploads\/2026\/04\/PLAYMOOVE_White_LOGO.svg","contentUrl":"https:\/\/playmoove.com\/wp-content\/uploads\/2026\/04\/PLAYMOOVE_White_LOGO.svg","width":800,"height":115,"caption":"Playmoove"},"image":{"@id":"https:\/\/playmoove.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/it.linkedin.com\/organization-guest\/company\/playmoove"]}]}},"_links":{"self":[{"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/comments?post=2215"}],"version-history":[{"count":13,"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215\/revisions"}],"predecessor-version":[{"id":3440,"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215\/revisions\/3440"}],"wp:attachment":[{"href":"https:\/\/playmoove.com\/it\/wp-json\/wp\/v2\/media?parent=2215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}