{"id":83250,"date":"2026-05-26T10:45:25","date_gmt":"2026-05-26T08:45:25","guid":{"rendered":"https:\/\/kinqsta.com\/es\/?p=83250&#038;preview=true&#038;preview_id=83250"},"modified":"2026-05-29T14:23:49","modified_gmt":"2026-05-29T12:23:49","slug":"automatizar-wordpress-con-salesforce-y-api-de-kinsta","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/","title":{"rendered":"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta"},"content":{"rendered":"<p>Cuando se cierra un contrato en Salesforce, el sitio web correspondiente sigue dependiendo de una serie de pasos manuales independientes para su puesta en marcha. Un <a href=\"https:\/\/kinqsta.com\/es\/blog\/tipos-de-desarrolladores\/\">desarrollador<\/a> tiene que localizar el sitio web del cliente en <a href=\"https:\/\/kinqsta.com\/es\/mykinsta\/\">MyKinsta<\/a>, crear una copia de seguridad y <a href=\"https:\/\/kinqsta.com\/es\/docs\/alojamiento-wordpress\/entorno-staging\/\">trasladar el entorno de staging a producci\u00f3n<\/a>, todo en el momento adecuado.<\/p>\n<p>Con la <a href=\"https:\/\/kinqsta.com\/es\/docs\/api-kinsta\/\">API de Kinsta<\/a>, puedes conectar estas dos partes del flujo de trabajo para que la aprobaci\u00f3n del acuerdo active autom\u00e1ticamente el lanzamiento. En lugar de depender de que alguien realice cada paso, el proceso se ejecuta en cuanto la oportunidad alcanza la fase objetivo.<\/p>\n<p>Es una configuraci\u00f3n muy sencilla: ejecuta un lote de tareas de MyKinsta cuando se actualice una <a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.object_reference.meta\/object_reference\/sforce_api_objects_opportunity.htm\">oportunidad de Salesforce<\/a> y elimina la necesidad de intervenci\u00f3n manual tras el despliegue. Mientras tanto, tu cliente disfruta de un proceso m\u00e1s r\u00e1pido desde la aprobaci\u00f3n hasta la puesta en marcha del sitio web, sin tener que esperar a que se produzcan los traspasos entre equipos.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Lo que necesitas antes de empezar<\/h2>\n<p>Para seguir este tutorial, necesitas una <a href=\"https:\/\/kinqsta.com\/es\/suscripcion\/\">cuenta de Kinsta<\/a> con un sitio de WordPress que tenga un <a href=\"https:\/\/kinqsta.com\/es\/docs\/alojamiento-wordpress\/entorno-staging\/\">entorno staging<\/a> y un entorno en producci\u00f3n, una cuenta de Salesforce con acceso a <a href=\"https:\/\/trailhead.salesforce.com\/content\/learn\/modules\/record-triggered-flows\/build-a-record-triggered-flow\" target=\"_blank\" rel=\"noopener noreferrer\">Flow Builder<\/a> y <a href=\"https:\/\/kinqsta.com\/knowledgebase\/what-is-node-js\/\">Node.js<\/a> instalado localmente para el middleware.<\/p>\n<p>Para autenticarte con la API de Kinsta, ve a <strong>Tu nombre<\/strong> &gt; <strong>Configuraci\u00f3n de la empresa<\/strong> &gt; <strong>Claves API<\/strong> en <a href=\"https:\/\/my.kinqsta.com\/?lang=es\">MyKinsta<\/a> y haz clic en <strong>Crear clave API<\/strong>.<\/p>\n<figure id=\"attachment_209233\" aria-describedby=\"caption-attachment-209233\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209233 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/api-keys-2.png\" alt=\"El panel de control de MyKinsta muestra la pantalla de claves API, que incluye dos claves API existentes, junto con un bot\u00f3n para crear una nueva.\" width=\"1200\" height=\"419\"><figcaption id=\"caption-attachment-209233\" class=\"wp-caption-text\">El panel de MyKinsta muestra la pantalla de Claves API<\/figcaption><\/figure>\n<p>Ponle un nombre a la clave, establece una fecha de caducidad y haz clic en <strong>Generar<\/strong>. La clave solo se muestra una vez, as\u00ed que c\u00f3piala antes de cerrar la ventana emergente. Gu\u00e1rdala en un archivo <code>.env<\/code> en la ra\u00edz del proyecto junto con tu <strong>ID de empresa<\/strong>, que encontrar\u00e1s en <strong>Configuraci\u00f3n de la empresa &gt; Datos de facturaci\u00f3n:<\/strong><\/p>\n<pre><code class=\"language-bash\">KINSTA_API_KEY=your_api_key_here\nKINSTA_COMPANY_ID=your_company_id_here\n<\/code><\/pre>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Una clave API tiene el mismo nivel de acceso que el rol que la ha generado. Una clave de nivel desarrollador tiene permisos m\u00e1s restringidos que una generada por el propietario o administrador de una empresa. Si una solicitud devuelve un error de permiso, esto es lo primero que hay que comprobar.<\/p>\n<\/aside>\n\n<p>Tambi\u00e9n necesitas un campo de texto personalizado en el objeto Oportunidad de Salesforce para almacenar el ID del sitio Kinsta para cada proyecto de cliente. Dir\u00edgete a <strong>Configuraci\u00f3n<\/strong> &gt; <strong>Gestor de objetos<\/strong>, y luego a <strong>Oportunidad<\/strong> &gt; <strong>Campos y relaciones<\/strong>.<\/p>\n<figure id=\"attachment_209234\" aria-describedby=\"caption-attachment-209234\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209234 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/new-fields-relationships.png\" alt=\"Las p\u00e1ginas de opciones de configuraci\u00f3n Campos y Relaciones en Salesforce.\" width=\"1200\" height=\"294\"><figcaption id=\"caption-attachment-209234\" class=\"wp-caption-text\">Las p\u00e1ginas de opciones de configuraci\u00f3n Campos y Relaciones en Salesforce.<\/figcaption><\/figure>\n<p>Aqu\u00ed, a\u00f1ade una <strong>Etiqueta de Campo<\/strong>, y Salesforce genera un <strong>Nombre de Campo<\/strong> que debes anotar. Establece la <strong>Longitud<\/strong> en <strong>255<\/strong> y guarda los cambios.<\/p>\n<p>El ID del sitio es un UUID que Kinsta asigna al crearlo. Aparece en la URL de MyKinsta cuando abres un sitio, o puedes recuperarlo una vez llamando a <code>GET \/sites<\/code> con tu clave API:<\/p>\n<pre><code class=\"language-bash\">https:\/\/my.kinqsta.com\/sites\/details\/hyut4927-d324-4044-b794-67ap0rbf20bj\/\u2026\n<\/code><\/pre>\n<p>Utiliza el ID del sitio en un campo personalizado en cada Oportunidad para activar todo el flujo de trabajo.<\/p>\n<h2>C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta<\/h2>\n<p>En Salesforce, un <a href=\"https:\/\/admin.salesforce.com\/blog\/2023\/what-is-a-record-triggered-flow\">flujo activado por registro<\/a> supervisa la fase de la oportunidad y realiza una llamada HTTP en cuanto cambia la fase.<\/p>\n<p>El middleware de Node.js recibe el ID del sitio, llama a la API de Kinsta para hacer una copia de seguridad del entorno staging, espera a que se complete esa operaci\u00f3n y, a continuaci\u00f3n, traslada el entorno de staging al de producci\u00f3n. La mayor parte del trabajo se lleva a cabo en Salesforce para garantizar que se configuren los permisos y el acceso adecuados.<\/p>\n<h3>1. Configurar una Credencial con Nombre<\/h3>\n<p>Salesforce tiene una forma eficaz de almacenar claves API. Consiste en una \u00abcredencial externa\u00bb, que contiene el secreto propiamente dicho, y una <a href=\"https:\/\/developer.salesforce.com\/docs\/platform\/named-credentials\/guide\/get-started.html\">credencial con nombre<\/a>, que define la URL del endpoint y se conecta a \u00e9l.<\/p>\n<p>Dentro de Salesforce, abre la pantalla de <strong>Configuraci\u00f3n<\/strong> desde el men\u00fa de inicio:<\/p>\n<figure id=\"attachment_209236\" aria-describedby=\"caption-attachment-209236\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209236 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/setup-icon.png\" alt=\"El icono de configuraci\u00f3n junto a otras opciones de la barra de herramientas.\" width=\"1200\" height=\"425\"><figcaption id=\"caption-attachment-209236\" class=\"wp-caption-text\">Icono de Configuraci\u00f3n junto a otras opciones de la barra de herramientas.<\/figcaption><\/figure>\n<p>Aqu\u00ed, busca <strong>Credenciales con Nombre<\/strong>, abre la pesta\u00f1a <strong>Credenciales Externas<\/strong> y haz clic en <strong>Nueva<\/strong>. Dale un nombre y una etiqueta, y establece el protocolo de autenticaci\u00f3n en <strong>Personalizado<\/strong>. Esto te permite definir una cabecera de token Bearer en lugar de utilizar un flujo OAuth gestionado.<\/p>\n<p>Despu\u00e9s de guardarlo, despl\u00e1zate a <strong>Entidades de seguridad<\/strong> y haz clic en <strong>Nuevo<\/strong>. Dale un nombre a la entidad de seguridad, como <code>KinstaKey,<\/code> e introduce la clave de la API de Kinsta como valor.<\/p>\n<figure id=\"attachment_209237\" aria-describedby=\"caption-attachment-209237\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209237 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/new-credential.png\" alt=\"Campos para un nombre, etiqueta y protocolo de autenticaci\u00f3n.\" width=\"1200\" height=\"613\"><figcaption id=\"caption-attachment-209237\" class=\"wp-caption-text\">Campos para un nombre, etiqueta y protocolo de autenticaci\u00f3n.<\/figcaption><\/figure>\n<p>Ahora, a\u00f1ade una <strong>cabecera personalizada<\/strong> con el nombre <code>Authorization<\/code> y un valor que haga referencia a la entidad de seguridad, para que cada llamada saliente incluya la clave de la API como token de portador.<\/p>\n<figure id=\"attachment_209239\" aria-describedby=\"caption-attachment-209239\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209239 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/new-named.png\" alt=\"La pantalla de Nueva Credencial con Nombre muestra los distintos campos junto con las opciones de autenticaci\u00f3n\" width=\"1200\" height=\"854\"><figcaption id=\"caption-attachment-209239\" class=\"wp-caption-text\">La pantalla de Nueva Credencial con Nombre muestra los distintos campos junto con las opciones de autenticaci\u00f3n<\/figcaption><\/figure>\n<p>Una vez guardadas las Credenciales Externas, ve a la pesta\u00f1a <strong>Credenciales con Nombre<\/strong>, haz clic en <strong>Nuevo<\/strong>, introduce la URL de tu endpoint de middleware, rellena los campos obligatorios y selecciona la <strong>Credencial Externa<\/strong> en la secci\u00f3n <b>Autenticaci\u00f3n<\/b>.<\/p>\n<h4>Establecer permisos de usuario<\/h4>\n<p>Tambi\u00e9n tienes que habilitar un <a href=\"https:\/\/help.salesforce.com\/s\/articleView?id=platform.perm_sets_overview.htm&#038;language=en_US&#038;type=5\">Conjunto de Permisos<\/a> para el Principal (la identidad de acceso) de la credencial externa, lo que le da a tu perfil de usuario las credenciales necesarias para llamar a la API de Kinsta. Para hacerlo, ve a C<strong>onfiguraci\u00f3n &gt; Conjuntos de permisos<\/strong> y haz clic en <b>Nuevo<\/b>.<\/p>\n<p>Aqu\u00ed, ponle un nombre y gu\u00e1rdalo; luego vuelve a abrir el Conjunto de Permisos (Permission Set) y haz clic para editar la pantalla de <strong>Acceso Principal de Credenciales Externas<\/strong> (External Credential Principal Access). Debes mover el principal de la Credencial Externa a la lista de habilitados:<\/p>\n<figure id=\"attachment_209240\" aria-describedby=\"caption-attachment-209240\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209240 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/edit-principal-access.png\" alt=\"La pantalla de Acceso Principal de Credenciales Externas mostrando un elemento movido de la lista de deshabilitados a la lista de habilitados.\" width=\"1200\" height=\"746\"><figcaption id=\"caption-attachment-209240\" class=\"wp-caption-text\">La pantalla de Acceso Principal de Credenciales Externas mostrando un elemento movido de la lista de deshabilitados a la lista de habilitados.<\/figcaption><\/figure>\n<p>Por \u00faltimo, guarda los cambios, vuelve al Conjunto de permisos y haz clic en <strong>Gestionar Asignaciones<\/strong> en la barra de herramientas superior:<\/p>\n<figure id=\"attachment_209241\" aria-describedby=\"caption-attachment-209241\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209241 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/manage-assignments-link.png\" alt=\"El enlace Gestionar Asignaciones en la barra de herramientas de Salesforce.\" width=\"1200\" height=\"532\"><figcaption id=\"caption-attachment-209241\" class=\"wp-caption-text\">El enlace Gestionar Asignaciones en la barra de herramientas de Salesforce.<\/figcaption><\/figure>\n<p>En esta pantalla, utiliza <strong>A\u00f1adir Asignaci\u00f3n<\/strong> para conectarte a tu perfil de usuario y habilitar el acceso a la API de Kinsta.<\/p>\n<h3>2. Crea un Flujo Activado por Registros en el objeto Oportunidad<\/h3>\n<p>A continuaci\u00f3n, abre Salesforce App Launcher, busca <strong>Flujos<\/strong> en la pantalla a la que llegues, haz clic en <strong>Nuevo<\/strong> y selecciona <strong>Flujo Activado por Registro<\/strong>.<\/p>\n<figure id=\"attachment_209242\" aria-describedby=\"caption-attachment-209242\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209242 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/record-trigger-flow.png\" alt=\"La opci\u00f3n Flujo Activado por Registro, junto con otras opciones, para crear automatizaciones.\" width=\"1200\" height=\"677\"><figcaption id=\"caption-attachment-209242\" class=\"wp-caption-text\">La opci\u00f3n Flujo Activado por Registro, junto con otras opciones, para crear automatizaciones.<\/figcaption><\/figure>\n<p>Una vez abierto el Constructor de Flujos, configura las siguientes opciones:<\/p>\n<ul>\n<li>Elige <strong>Oportunidad<\/strong> como objeto.<\/li>\n<li>Configura el activador para que se dispare cuando se actualice un registro.<\/li>\n<li>Elige <strong>Se cumplen todas las condiciones (Y)<\/strong> en el men\u00fa <strong>Requisitos de las condiciones<\/strong>.<\/li>\n<li>Dentro de los nuevos campos que se muestran, elige <strong>Etapa<\/strong> para el <strong>Campo<\/strong>, el operador <strong>Igual<\/strong> y <strong>Cerrada Ganada<\/strong> para el <strong>Valor<\/strong>.<\/li>\n<li>En <strong>Cu\u00e1ndo ejecutar el flujo para registros actualizados<\/strong>, selecciona <strong>S\u00f3lo cuando se actualice un registro para cumplir los requisitos de la condici\u00f3n<\/strong>.<\/li>\n<\/ul>\n<p>Ejecutar el flujo en funci\u00f3n de las actualizaciones de los registros evita que el despliegue se dispare m\u00e1s de una vez. Sin ello, el flujo se ejecuta en cada guardado posterior despu\u00e9s de que la etapa haya cambiado.<\/p>\n<figure id=\"attachment_209243\" aria-describedby=\"caption-attachment-209243\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209243 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/flow-builder.png\" alt=\"Pantalla de Flow Builder (Constructor de Flujos) que muestra los campos rellenados para un flujo activado por un nuevo registro.\" width=\"1200\" height=\"497\"><figcaption id=\"caption-attachment-209243\" class=\"wp-caption-text\">Pantalla de Flow Builder (Constructor de Flujos) que muestra los campos rellenados para un flujo activado por un nuevo registro.<\/figcaption><\/figure>\n<p>Por \u00faltimo, en <strong>Optimizar el Flujo Para<\/strong>, selecciona Acciones y registros relacionados y, a continuaci\u00f3n, activa el interruptor <b>A\u00f1adir Ruta As\u00edncrona<\/b>, lo que permite la llamada y muestra las dos nuevas \u00abrutas\u00bb.<\/p>\n<h3>3. Configura la ruta as\u00edncrona y a\u00f1ade una acci\u00f3n de Llamada HTTP<\/h3>\n<p>Salesforce no permite llamadas HTTP (callouts) dentro de una transacci\u00f3n de disparador (trigger) abierta. Cualquier llamada debe ir en la ruta <strong>Ejecutar As\u00edncronamente<\/strong> (Run Asynchronously). Las acciones colocadas en esta ruta se ejecutan despu\u00e9s de que se haga commits a la transacci\u00f3n desencadenante.<\/p>\n<figure id=\"attachment_209244\" aria-describedby=\"caption-attachment-209244\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209244 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/async-paths.png\" alt=\"Flow Builder muestra dos opciones: Ejecutar inmediatamente y Ejecutar de forma as\u00edncrona.\" width=\"1200\" height=\"767\"><figcaption id=\"caption-attachment-209244\" class=\"wp-caption-text\">Flow Builder muestra dos opciones: Ejecutar inmediatamente y Ejecutar de forma as\u00edncrona.<\/figcaption><\/figure>\n<p>En la ruta <strong>Ejecutar de forma as\u00edncrona<\/strong>, a\u00f1ade un elemento <strong>Acci\u00f3n<\/strong> y selecciona <strong>Crear llamada HTTP<\/strong> en la parte inferior del panel derecho.<\/p>\n<figure id=\"attachment_209245\" aria-describedby=\"caption-attachment-209245\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209245 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/async-action.png\" alt=\"El panel Buscar acciones del Flow Builder de Salesforce, que muestra diferentes formas de interactuar con el elemento Acci\u00f3n en la ruta Ejecutar as\u00edncronamente\" width=\"1200\" height=\"508\"><figcaption id=\"caption-attachment-209245\" class=\"wp-caption-text\">El panel Buscar acciones del Flow Builder de Salesforce, que muestra diferentes formas de interactuar con el elemento Acci\u00f3n en la ruta Ejecutar as\u00edncronamente<\/figcaption><\/figure>\n<p>Para la llamada (callout), as\u00edgnale un nombre y apunta la URL a su endpoint de middleware, utilizando <code>\/go-live<\/code> como el slug. Puedes usar una URL provisional (placeholder) hasta que el middleware est\u00e9 desplegado. Para el desarrollo local, ngrok expone su puerto local con una URL p\u00fablica. Adem\u00e1s, selecciona la Credencial nombrada (Named Credential) aqu\u00ed.<\/p>\n<p>Una vez que hagas clic en <strong>Siguiente<\/strong>, asigna un m\u00e9todo <code>POST<\/code> y dale una etiqueta a la llamada. Al hacer clic en Siguiente, debes ofrecer un ejemplo de solicitud y respuesta JSON. Para la solicitud, utiliza lo siguiente:<\/p>\n<pre><code class=\"language-json\">{\n  \"site_id\": \"fbab4927-e354-4044-b226-29ac0fbd20ca\"\n}\n<\/code><\/pre>\n<p>Si seleccionas <strong>Conectar con Respuesta de Muestra<\/strong> en el siguiente panel, puedes utilizar el bot\u00f3n <strong>Conectar<\/strong> para probar la conexi\u00f3n hasta este momento. Sin embargo, esto mostrar\u00e1 un error 502 hasta que escribas el middleware. Por ahora, haz clic en Usar respuesta de ejemplo y a\u00f1ade lo siguiente:<\/p>\n<pre><code class=\"language-json\">{\n\u00a0\u00a0\"message\": \"Received\"\n}\n<\/code><\/pre>\n<p>Despu\u00e9s, vuelve y con\u00e9ctate si quieres seguir probando la conexi\u00f3n.<\/p>\n<h3>4. Configurar el cuerpo de la solicitud en Flow Builder<\/h3>\n<p>Tienes que hacer algunos pasos manuales para configurar el cuerpo de la solicitud de la acci\u00f3n. El primer paso es seleccionar <strong>Nuevo Recurso<\/strong> en el men\u00fa desplegable <b>Establecer Cuerpo de la Solicitud<\/b>:<\/p>\n<figure id=\"attachment_209247\" aria-describedby=\"caption-attachment-209247\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209247 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/new-resource.png\" alt=\"Flow Builder mostrando el men\u00fa desplegable Establecer Cuerpo de la Solicitud de una Acci\u00f3n.\" width=\"1200\" height=\"515\"><figcaption id=\"caption-attachment-209247\" class=\"wp-caption-text\">Flow Builder mostrando el men\u00fa desplegable Establecer Cuerpo de la Solicitud de una Acci\u00f3n.<\/figcaption><\/figure>\n<p>Aqu\u00ed, introduce un nombre (como <code>requestBody<\/code>), gu\u00e1rdalo y, a continuaci\u00f3n, selecci\u00f3nalo como <strong>Valor <\/strong>para el cuerpo de la solicitud. A continuaci\u00f3n, a\u00f1ade un elemento <strong>Asignaci\u00f3n<\/strong> en el Flow Builder (Constructor de Flujo), dale una etiqueta y un nombre, y luego a\u00f1ade lo siguiente dentro de los men\u00fas desplegables <strong>Establecer Valores Variables<\/strong>:<\/p>\n<ul>\n<li><strong>Variable:<\/strong> <code>site_id<\/code><\/li>\n<li><strong>Operador:<\/strong> Igual a<\/li>\n<li><strong>Valor: <\/strong>Despl\u00e1zate por el submen\u00fa <strong>Oportunidad de Activaci\u00f3n<\/strong> hasta llegar al <strong>ID del sitio Kinsta<\/strong>.<\/li>\n<\/ul>\n<p>Completar esto significa que la configuraci\u00f3n de Salesforce est\u00e1 hecha. Lo siguiente es empezar a construir la aplicaci\u00f3n Node.<\/p>\n<h3>5. Construye el middleware Node.js<\/h3>\n<p>Una vez configurado el flujo, el middleware es donde se ejecutan las llamadas a la API de Kinsta. Crea un nuevo proyecto de Node.js e instala las dependencias:<\/p>\n<pre><code class=\"language-bash\">npm init -y\nnpm install express dotenv\n<\/code><\/pre>\n<p><a href=\"https:\/\/kinqsta.com\/es\/blog\/que-es-express\/\">Express.js<\/a> se encarga del enrutamiento y del an\u00e1lisis de las solicitudes. <code>dotenv<\/code> carga el archivo <code>.env<\/code> para que tu clave API est\u00e9 disponible en tiempo de ejecuci\u00f3n sin aparecer en el c\u00f3digo fuente. A continuaci\u00f3n, crea <code>app.js<\/code> en la ra\u00edz del proyecto:<\/p>\n<pre><code class=\"language-javascript\">\/\/ app.js\nconst express = require('express');\nrequire('dotenv').config();\nconst app = express();\napp.use(express.json());\n\n\nconst KINSTA_API_URL = 'https:\/\/api.kinqsta.com\/v2';\n\n\nconst headers = {\n\u00a0\u00a0'Content-Type': 'application\/json',\n\u00a0\u00a0Authorization: `Bearer ${process.env.KINSTA_API_KEY}`\n};\n\napp.post('\/go-live', async (req, res) =&gt; {\n\u00a0\u00a0const { site_id } = req.body;\n\u00a0\u00a0if (!site_id) {\n\u00a0\u00a0\u00a0\u00a0return res.status(400).json({ message: 'site_id is required' });\n\u00a0\u00a0}\n\u00a0\u00a0\/\/ Kinsta API calls added in the steps below\n\u00a0\u00a0res.status(200).json({ message: 'Received' });\n});\n\napp.listen(3000, () =&gt; console.log('Middleware running on port 3000'));<\/code><\/pre>\n<p>La constante <code>headers<\/code> se encarga de la autenticaci\u00f3n mediante token Bearer para todas las solicitudes a la API de Kinsta en la aplicaci\u00f3n. Ten en cuenta que el ID de la empresa, cuando es necesario para endpoints como <code>GET \/sites<\/code>, se pasa como par\u00e1metro de consulta (no en la cabecera Authorization). La llamada <code>require(\u201cdotenv\u201d).config()<\/code> al principio garantiza que la clave se cargue desde <code>.env<\/code> antes de que se ejecute cualquier otra cosa.<\/p>\n<p>Antes de <a href=\"https:\/\/kinqsta.com\/es\/docs\/alojamiento-wordpress\/copias-de-seguridad-wordpress\/\">crear una copia de seguridad<\/a>, el middleware necesita los identificadores de entorno tanto para la puesta en marcha como para la ejecuci\u00f3n. A\u00f1ade una funci\u00f3n <code>getEnvironments<\/code> debajo de la constante <code>headers<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const getEnvironments = async (siteId) =&gt; {\n\u00a0\u00a0const resp = await fetch(\n\u00a0\u00a0\u00a0\u00a0`${KINSTA_API_URL}\/sites\/${siteId}\/environments`,\n\u00a0\u00a0\u00a0\u00a0{ method: 'GET', headers }\n\u00a0\u00a0);\n\n\u00a0\u00a0const data = await resp.json();\n\u00a0\u00a0return data.site.environments;\n};<\/code><\/pre>\n<p>Esto llama a <code>GET \/sites\/{siteId}\/environments<\/code> y devuelve el array completo de entornos.<\/p>\n<h3>6. Crea una copia de seguridad manual del entorno staging<\/h3>\n<p><a href=\"https:\/\/kinqsta.com\/es\/docs\/alojamiento-wordpress\/envios-entre-entornos-wordpress\/\">Pasar un entorno<\/a> a producci\u00f3n sobrescribe el sitio en producci\u00f3n. Hacer primero una copia de seguridad garantiza que haya un punto de restauraci\u00f3n si la implementaci\u00f3n genera un conflicto que no se detectara durante las pruebas en staging.<\/p>\n<p>Para ello, a\u00f1ade una funci\u00f3n <code>createBackup<\/code> debajo de <code>getEnvironments<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const createBackup = async (envId) =&gt; {\n\u00a0\u00a0const resp = await fetch(\n\u00a0\u00a0\u00a0\u00a0`${KINSTA_API_URL}\/sites\/environments\/${envId}\/manual-backups`,\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0method: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0headers,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body: JSON.stringify({ tag: 'pre-launch-backup' })\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0);\n\n\u00a0\u00a0const data = await resp.json();\n\u00a0\u00a0return data;\n};<\/code><\/pre>\n<p>Kinsta procesa la copia de seguridad de forma as\u00edncrona y devuelve <code>202 Aceptado<\/code> con un <code>operation_id<\/code> en lugar de un resultado completado:<\/p>\n<pre><code class=\"language-bash\">{\n\u00a0\u00a0\"operation_id\": \"backups:add-manual-54fb80af-576c-4fdc-ba4f-b596c83f15a1\",\n\u00a0\u00a0\"message\": \"Adding a manual backup to environment in progress\",\n\u00a0\u00a0\"status\": 202\n}<\/code><\/pre>\n<p>Para pausar la ejecuci\u00f3n hasta que se complete la copia de seguridad antes de que se ejecute el env\u00edo (push), a\u00f1ade una funci\u00f3n <code>pollOperation<\/code> debajo de <code>createBackup<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const pollOperation = async (operationId, intervalMs = 5000, maxAttempts = 12) =&gt; {\n\u00a0\u00a0for (let attempt = 0; attempt &lt; maxAttempts; attempt++) {\n\u00a0\u00a0\u00a0\u00a0await new Promise(resolve =&gt; setTimeout(resolve, intervalMs));\n\u00a0\u00a0\u00a0\u00a0const resp = await fetch(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0`${KINSTA_API_URL}\/operations\/${operationId}`,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ method: 'GET', headers }\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0const data = await resp.json();\n\u00a0\u00a0\u00a0\u00a0if (data.status === 200) return data;\n\u00a0\u00a0\u00a0\u00a0if (data.status &gt;= 400) throw new Error(`Operation failed: ${data.message}`);\n\u00a0\u00a0}\n\u00a0\u00a0throw new Error('Operation timed out');\n};<\/code><\/pre>\n<p>El bucle comprueba cada cinco segundos, lo que supone hasta un minuto de tiempo de procesamiento. Un <code>200<\/code> en el endpoint de operaciones significa que la copia de seguridad ha finalizado y que se puede continuar con el env\u00edo.<\/p>\n<h3>7. Enviar el entorno staging a producci\u00f3n y monitorizar su finalizaci\u00f3n<\/h3>\n<p>Con la copia de seguridad confirmada, a\u00f1ade una funci\u00f3n <code>pushToProduction<\/code> debajo de <code>pollOperation<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const pushToProduction = async (siteId, stagingEnvId, liveEnvId) =&gt; {\n\u00a0\u00a0const resp = await fetch(\n\u00a0\u00a0\u00a0\u00a0`${KINSTA_API_URL}\/sites\/${siteId}\/environments`,\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0method: 'PUT',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0headers,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body: JSON.stringify({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0source_env_id: stagingEnvId,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0target_env_id: liveEnvId,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0push_db: true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0push_files: true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run_search_and_replace: true\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0);\n\u00a0\u00a0const data = await resp.json();\n\u00a0\u00a0return data;\n};<\/code><\/pre>\n<p>Los par\u00e1metros <code>source_env_id<\/code> y <code>target_env_id<\/code> identifican a d\u00f3nde env\u00eda (push) cada entorno. La bandera (flag) <code>run_search_and_replace<\/code> actualiza las referencias de dominio codificadas en la base de datos tras el env\u00edo. Sin ella, cualquier referencia de dominio en la base de datos persiste en el sitio en producci\u00f3n una vez finalizado el env\u00edo.<\/p>\n<p>El env\u00edo (push) tambi\u00e9n devuelve <code>202 Accepted<\/code> junto con un <code>operation_id<\/code>. Al pasar ese valor a <code>pollOperation<\/code>, se confirma que se ha completado. Por \u00faltimo, actualiza el controlador de la ruta para que llame a todas las funciones en secuencia:<\/p>\n<pre><code class=\"language-javascript\">app.post('\/go-live', async (req, res) =&gt; {\n\u00a0\u00a0const { site_id } = req.body;\n\u00a0\u00a0if (!site_id) {\n\u00a0\u00a0\u00a0\u00a0return res.status(400).json({ message: 'site_id is required' });\n\u00a0\u00a0}\n\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0const environments = await getEnvironments(site_id);\n\u00a0\u00a0\u00a0\u00a0const stagingEnv = environments.find(env =&gt; env.name === 'staging');\n\u00a0\u00a0\u00a0\u00a0const liveEnv = environments.find(env =&gt; env.name === 'live');\n\u00a0\u00a0\u00a0\u00a0const backup = await createBackup(stagingEnv.id);\n\u00a0\u00a0\u00a0\u00a0await pollOperation(backup.operation_id);\n\u00a0\u00a0\u00a0\u00a0const push = await pushToProduction(site_id, stagingEnv.id, liveEnv.id);\n\u00a0\u00a0\u00a0\u00a0await pollOperation(push.operation_id);\n\u00a0\u00a0\u00a0\u00a0console.log(`Go-live complete for site ${site_id}`);\n\u00a0\u00a0\u00a0\u00a0res.status(200).json({ message: 'Go-live complete' });\n\u00a0\u00a0} catch (err) {\n\u00a0\u00a0\u00a0\u00a0console.error(err);\n\u00a0\u00a0\u00a0\u00a0res.status(500).json({ message: 'Go-live failed', error: err.message });\n\u00a0\u00a0}\n});<\/code><\/pre>\n<p>Una vez guardados los cambios, actualiza la Credencial Nombrada (Named Credential) con la URL real del middleware si es necesario, y luego <strong>Activa<\/strong> el flujo (flow). A continuaci\u00f3n, ejec\u00fatalo con <code>node app.js<\/code> y mueve una Oportunidad a la etapa de destino en Salesforce.<\/p>\n<figure id=\"attachment_209248\" aria-describedby=\"caption-attachment-209248\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-209248 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2026\/04\/mykinsta-push.png\" alt=\"El panel de control de MyKinsta muestra c\u00f3mo se est\u00e1 publicando un sitio de staging.\" width=\"1200\" height=\"489\"><figcaption id=\"caption-attachment-209248\" class=\"wp-caption-text\">El panel de control de MyKinsta muestra c\u00f3mo se est\u00e1 publicando un sitio de staging.<\/figcaption><\/figure>\n<p>El sitio se pondr\u00eda en marcha sin necesidad de iniciar sesi\u00f3n en MyKinsta. Tambi\u00e9n podr\u00edas tener en cuenta que, con <a href=\"https:\/\/www.salesforce.com\/news\/stories\/salesforce-headless-360-announcement\/\">Headless 360<\/a> de Salesforce, podr\u00edas gestionar gran parte de esto fuera de la interfaz gr\u00e1fica de usuario, a trav\u00e9s de la l\u00ednea de comandos o como MCP.<\/p>\n<h2>Automatizar el flujo de trabajo de despliegue de tu agencia con Salesforce y Kinsta<\/h2>\n<p>Puedes cerrar el bucle entre la API de Kinsta y Salesforce a trav\u00e9s de una aplicaci\u00f3n Node middleware. Una vez que cambias la etapa de una Oportunidad en Salesforce, MyKinsta hace autom\u00e1ticamente una copia de seguridad, la env\u00eda a producci\u00f3n y la confirma sin ning\u00fan paso manual.<\/p>\n<p>Cuando el middleware est\u00e1 listo para producci\u00f3n, <a href=\"https:\/\/sevalla.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sevalla<\/a> es una plataforma de despliegue dise\u00f1ada exactamente para este tipo de servicio Node.js. Env\u00edas el proyecto a un proveedor Git, conectas el repositorio, a\u00f1ades las variables de entorno y actualizas la URL de llamada HTTP de Salesforce a la direcci\u00f3n del middleware activo.<\/p>\n<p>Para las agencias que se dedican a la automatizaci\u00f3n de sitios web para su portfolio de clientes, el <a href=\"https:\/\/kinqsta.com\/es\/programa-socios-agencia\/\">Programa para S<\/a><a href=\"https:\/\/kinqsta.com\/es\/programa-socios-agencia\/\">ocios de A<\/a><a href=\"https:\/\/kinqsta.com\/es\/programa-socios-agencia\/\">gencias<\/a> de Kinsta ofrece la colaboraci\u00f3n en materia de infraestructura y el soporte t\u00e9cnico especializado que hacen que este tipo de trabajo sea sostenible a gran escala.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando se cierra un contrato en Salesforce, el sitio web correspondiente sigue dependiendo de una serie de pasos manuales independientes para su puesta en marcha. Un &#8230;<\/p>\n","protected":false},"author":287,"featured_media":83251,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1270],"class_list":["post-83250","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Publicaci\u00f3n en WordPress con Salesforce y la API de Kinsta<\/title>\n<meta name=\"description\" content=\"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta\" \/>\n<meta property=\"og:description\" content=\"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-26T08:45:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-29T12:23:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta\",\"datePublished\":\"2026-05-26T08:45:25+00:00\",\"dateModified\":\"2026-05-29T12:23:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\"},\"wordCount\":2588,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png\",\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\",\"name\":\"Publicaci\u00f3n en WordPress con Salesforce y la API de Kinsta\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png\",\"datePublished\":\"2026-05-26T08:45:25+00:00\",\"dateModified\":\"2026-05-29T12:23:49+00:00\",\"description\":\"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinqsta.com\/es\/secciones\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/es\/#website\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Publicaci\u00f3n en WordPress con Salesforce y la API de Kinsta","description":"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.","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:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta","og_description":"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.","og_url":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2026-05-26T08:45:25+00:00","article_modified_time":"2026-05-29T12:23:49+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.","twitter_image":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api-1024x512.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Joel Olawanle","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta","datePublished":"2026-05-26T08:45:25+00:00","dateModified":"2026-05-29T12:23:49+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/"},"wordCount":2588,"publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png","inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/","url":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/","name":"Publicaci\u00f3n en WordPress con Salesforce y la API de Kinsta","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png","datePublished":"2026-05-26T08:45:25+00:00","dateModified":"2026-05-29T12:23:49+00:00","description":"Automatiza WordPress desde Salesforce: usa la API de Kinsta para hacer copias en staging y publicar en producci\u00f3n.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#primaryimage","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2026\/05\/how-to-automate-wordpress-go-live-from-salesforce-using-the-kinsta-api.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/es\/blog\/automatizar-wordpress-con-salesforce-y-api-de-kinsta\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinqsta.com\/es\/secciones\/api\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo automatizar la publicaci\u00f3n de WordPress desde Salesforce usando la API de Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/es\/#website","url":"https:\/\/kinqsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinqsta.com\/es\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/83250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/comments?post=83250"}],"version-history":[{"count":8,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/83250\/revisions"}],"predecessor-version":[{"id":83292,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/83250\/revisions\/83292"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/83250\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/83250\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/83250\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/83250\/translations\/es"},{"href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/83250\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media\/83251"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media?parent=83250"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/tags?post=83250"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/topic?post=83250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}