Formularios web
Tabla de contenidos¶
- Introducción
- Tabla de parámetros
- Ejemplo
- Petición (POST)
- Respuesta
- Formulario de suscripción a newsletter
Introducción¶
Este artículo describe el endpoint web-form, que permite registrar un contacto en Fideltour desde cualquier formulario instalado en la web del cliente.
- Endpoint:
POST https://app.hoteldatahub.io/api/v1/contacts/web-form/ - Swagger:
https://app.hoteldatahub.io/swagger/#/contacts/contacts_web_form
El contacto se identifica de forma única por su email: si ya existe un contacto con ese email se actualiza, y si no existe se crea.
Tabla de parámetros¶
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
hotel_chain |
String | Sí | Código de la cadena hotelera, facilitado por Fideltour. |
api_user |
String | Sí (*) | Username del api user, facilitado por Fideltour. Obligatorio salvo que se envíe company_id. |
company_id |
Integer | No (*) | Identificador de la empresa. Alternativa a api_user: se debe enviar uno de los dos. |
email |
String | Sí | Email del contacto. Campo único, usado como identificador del contacto. |
source |
Integer | No | Origen del contacto: • 6 = Formulario newsletter (por defecto)• 7 = Formulario de contactoSi se envía un valor distinto, se usa 6 (formulario newsletter). |
name |
String | No | Nombre del contacto. |
surname |
String | No | Apellidos del contacto. |
language |
String | No | Idioma del contacto. Debe estar en formato ISO 639-1. |
country |
String | No | País del contacto. Debe estar en formato ISO 3166-1 alpha-2. |
phone1 |
String | No | Teléfono del contacto. |
birthday |
Date YYYY-MM-DD |
No | Fecha de nacimiento. |
address |
String | No | Dirección. |
post_code |
String | No | Código postal. |
province |
String | No | Nombre de la provincia. |
town |
String | No | Nombre de la ciudad o población. |
zone |
String | No | Nombre de la zona. |
identification_document_type |
Integer | No | Tipo de documento de identidad: • 0 = Otros• 1 = DNI• 2 = NIE• 3 = Pasaporte |
identification_number |
String | No | Número de documento de identidad. |
gender |
Integer | No | Género: • 0 = No especificado (por defecto)• 1 = Hombre• 2 = Mujer• 3 = No binario• 4 = Género fluido• 5 = Prefiere no decirlo |
custom_tags |
Array de String | No | Nombres de las etiquetas que se desean vincular con el contacto. |
business_name |
String | No | Nombre de la empresa. |
work_place |
String | No | Cargo empresarial. |
business_address |
String | No | Dirección de la empresa. |
fiscal_address |
String | No | Dirección fiscal. |
accept_terms |
Boolean | No | Indica si el contacto acepta términos y condiciones. • true = Acepta• false = No acepta (por defecto) |
accept_commercial_communications |
Boolean | No | Indica si el contacto acepta comunicaciones comerciales. • true = Acepta• false = No acepta (por defecto) |
accept_personalized_commercial_communications |
Boolean | No | Indica si el contacto acepta comunicaciones comerciales personalizadas. • true = Acepta• false = No acepta (por defecto) |
ip |
String | No | IP desde la que se aceptan los checkboxes legales. |
(*) Es obligatorio enviar
api_userocompany_id. Elhotel_chaindebe coincidir con elapi_user(o con elcompany_id) indicado.Nota: los valores booleanos
trueyfalsetambién se pueden enviar como enteros1y0.
Ejemplo¶
A continuación se muestra un ejemplo de petición y respuesta correcta.
Petición (POST)¶
En el siguiente ejemplo se muestra una petición para dar de alta al contacto pablo@hdh.com.
- Protocolo: HTTP/1.1
- Método: POST
- Host/Endpoint:
https://app.hoteldatahub.io/api/v1/contacts/web-form/ - Headers:
Content-type: application/json
{
"hotel_chain": "6NOK",
"api_user": "hoteldatahub_fideltour_web_form",
"email": "pablo@hdh.com",
"birthday": "1976-04-18",
"phone1": "651442233",
"gender": 2,
"address": "Calle los olivos",
"province": "Madrid",
"town": "Madrid",
"zone": "Sol",
"post_code": "28013",
"language": "es",
"country": "ES",
"name": "Pablo",
"surname": "Mir",
"identification_document_type": 1,
"identification_number": "01234567Z",
"source": 6,
"custom_tags": ["Cliente VIP", "Turista"],
"accept_terms": true,
"accept_commercial_communications": true,
"accept_personalized_commercial_communications": false
}
Respuesta¶
En caso de una respuesta 200 o 201, el JSON que se recibe tiene la siguiente estructura.
{
"id": 9999999,
"business_name": null,
"work_place": "Madrid",
"business_address": null,
"fiscal_address": "Calle de las soluciones industriales 25",
"language": "ES",
"country": "ES",
"created_at": "2022-01-01T12:12:12.654321",
"level_name": "",
"loyalty_card_number": null,
"name": "Pablo",
"surname": "Mir",
"email": "pablo@hdh.com",
"email_status": 0,
"phone1": "651442233",
"gender": 2,
"identification_document_type": 1,
"identification_number": "01234567Z",
"birthday": "1976-04-18",
"address": "Calle los olivos",
"post_code": "07006",
"source": 1,
"notes": "Muy exigente",
"photo": null,
"subscribed": false,
"unsubscribe_reason": null,
"date_subscribed": "2022-01-01T12:12:12.654321",
"modification_date_subscribed": null,
"is_active": true,
"points": 0,
"value": 0,
"review": null,
"total_bookings": 0,
"level_points": 0,
"loyalty_custom_tag_timestamp": null,
"is_profile_completed": false,
"last_level_review": null,
"kicked_out_loyalty": null,
"province": 1,
"town": 2,
"zone": 3,
"level": null,
"custom_tags": [4, 5],
"hotels": []
}
Nota: en la respuesta, los campos
province,town,zoneycustom_tagsse devuelven como identificadores numéricos de Fideltour, no como los nombres enviados en la petición.
Formulario de suscripción a newsletter¶
A continuación se muestra el código HTML y JavaScript necesario para generar un ejemplo de formulario de suscripción a newsletter integrado con Fideltour.
<form id="fideltour-newsletter-form" method="POST">
<input type="hidden" name="hotel_chain" value="SOLICITAR A FIDELTOUR">
<input type="hidden" name="api_user" value="SOLICITAR A FIDELTOUR">
<div>
<label for="name">Nombre</label>
<input id="name" type="text" name="name">
</div>
<div>
<label for="surname">Apellidos</label>
<input id="surname" type="text" name="surname">
</div>
<div>
<label for="email">Email</label>
<input id="email" type="text" name="email" required>
</div>
<div>
<input id="accept" type="checkbox" name="accept_commercial_communications" required>
<label for="accept">
Acepto suscribirme a la newsletter para recibir comunicaciones comerciales
</label>
</div>
<button type="submit">Enviar</button>
</form>
<script type="text/javascript">
const endpoint = "https://app.hoteldatahub.io/api/v1/contacts/web-form/";
const form = document.getElementById("fideltour-newsletter-form");
form.addEventListener("submit", function (e) {
e.preventDefault();
const xhr = new XMLHttpRequest();
xhr.open("POST", endpoint, true);
xhr.setRequestHeader("Content-type", "application/json");
const formData = new FormData(form);
const data = {};
formData.forEach((value, key) => {
if (value) {
if (value === "on") value = true;
data[key] = value;
}
});
xhr.send(JSON.stringify(data));
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// La solicitud se completó exitosamente
console.log("Respuesta recibida:", xhr.responseText);
} else {
// Hubo un problema con la solicitud
console.error("Error en la solicitud:", xhr.statusText);
}
}
};
});
</script>