Introduccion
Uno de los dolores más repetidos que tienen los dueños de tiendas WooCommerce es mantener actualizado el stock sin complicarse. Muchos ya usan hojas de cálculo para gestionar sus productos, pero no saben cómo automatizar el proceso.
La mayoría de soluciones pasan por usar plugins caros, mal mantenidos o con limitaciones.
En este artículo te voy a mostrar cómo:
- Usar Google Sheets como tu fuente de stock.
- Conectar esa hoja con WooCommerce.
- Hacer que el stock se actualice automáticamente desde una hoja online, sin entrar a tu web.
Esta solución es perfecta para:
- Comerciantes que usan hojas externas.
- Tiendas que reciben stock de múltiples proveedores.
- Negocios que quieren controlar todo sin complicarse.
Índice
Introducción 1. Crear la hoja en Google Sheets 2. Activar la API de Google y obtener credenciales 3. Instalar Google API Client en tu proyecto 4. Script PHP completo y comentado4 Explicación técnica de cada parte Seguridad del script Log de resultados Programar ejecución automática Extensiones avanzadas ConclusiónRequisitos previos
- WooCommerce funcionando.
- Acceso a la raíz de tu WordPress vía FTP/SSH.
- Acceso a Google Cloud Console.
- Hoja de cálculo con columnas SKU y stock.
Composer instalado para añadir la librería de Google API.
Paso 1: Crear la hoja en Google Sheets
- Crea una hoja con el nombre que desees.
- En la fila 1, pon los encabezados: SKU y STOCK.
- A partir de la fila 2, empieza a añadir tus productos.
Ejemplo:
SKU | STOCK |
woo-001 | 10 |
woo-002 | 0 |
woo-003 | 45 |
💡 Consejo: No uses espacios ni caracteres raros en el SKU. WooCommerce se basa en coincidencias exactas.
Paso 2: Activar la API de Google y obtener credenciales
- Ve a Google Cloud Console
- Crea un proyecto o selecciona uno.
- Activa:
- Google Sheets API
- Google Drive API
- Crea una cuenta de servicio (Service Account).
- Descarga el archivo .json con las credenciales.
- Comparte la hoja de cálculo con el email de la cuenta de servicio (xxxx@project.iam.gserviceaccount.com), con permiso de lector.
Paso 3: Instalar Google API Client en tu proyecto
Desde consola, en una carpeta externa a WordPress o en /sync-scripts/, corre:
bash
CopiarEditar
composer require google/apiclient:^2.0
Esto descargará la librería necesaria para conectar con Google Sheets desde PHP.
Paso 4: Script PHP completo y comentado
Aquí tienes el código PHP. Puedes alojarlo en una carpeta externa a WordPress o dentro del mismo proyecto.
<?php
require ‘vendor/autoload.php’;
require ‘wp-load.php’; // Ajusta el path según tu estructura
// Configura acceso a Google Sheets
$client = new Google_Client();
$client->setAuthConfig(‘credenciales.json’); // Ruta a tu JSON
$client->addScope(Google_Service_Sheets::SPREADSHEETS_READONLY);
$service = new Google_Service_Sheets($client);
// ID y rango de la hoja
$spreadsheetId = ‘TU_ID_HOJA’;
$range = ‘Sheet1!A2:B’;
// Obtener datos
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
// Recorrer filas
foreach ($values as $row) {
$sku = trim($row[0] ?? »);
$stock = isset($row[1]) ? (int) $row[1] : null;
if (!$sku || $stock === null) continue;
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id) {
$product = wc_get_product($product_id);
$product->set_stock_quantity($stock);
$product->set_stock_status($stock > 0 ? ‘instock’ : ‘outofstock’);
$product->save();
echo «SKU $sku → Stock actualizado a $stock\n»;
} else {
echo «⚠️ SKU no encontrado: $sku\n»;
}
}
?>
- Autenticación con Google Cargamos el .json que permite a nuestro script leer la hoja.
- Lectura de datos Usamos la API para traer los valores de la hoja (solo lectura).
- Búsqueda por SKU WooCommerce nos permite buscar productos por SKU con wc_get_product_id_by_sku().
- Actualización del stock Si encuentra el producto, actualiza el stock y el estado (instock o outofstock).
- Feedback Se imprime por consola el resultado de cada línea.
Seguridad del script
Si vas a ejecutar esto desde navegador o vía cron:
- Protege el script con una clave secreta en la URL: ?token=abc123
- O limita la ejecución a IPs específicas.
- Usa HTTPS siempre.
- No subas credenciales.json a un repo público.
Log de resultados
Para registrar las actualizaciones:
file_put_contents('log.txt', "[".date('Y-m-d H:i:s')."] SKU $sku actualizado a $stock\n", FILE_APPEND);
Puedes también enviar un correo si lo automatizas por cron.
Programar ejecución automática
Opción 1: Cron job en servidor
*/30 * * * * /usr/bin/php /ruta/a/sync-stock.php
Esto ejecutará el script cada 30 minutos.
Opción 2: WordPress Cron (WP-Cron)
Integra el script como función en un plugin y usa wp_schedule_event() para ejecutarlo desde el entorno de WordPress.
Extensiones avanzadas
- Leer también precios desde Sheets (PRICE) y actualizar precio en Woo.
- Actualizar productos variables, usando SKUs de las variaciones.
- Sincronizar de WooCommerce → Google Sheets, para tener una copia diaria del stock actual.
- Diferenciar almacenes añadiendo columnas Stock Almacén 1, Stock Almacén 2.
Conclusión
Con esta solución automatizas algo que te consume horas: actualizar stock.
El script es flexible, extensible y no depende de plugins externos.
Ideal para tiendas que manejan inventarios en hojas, reciben actualizaciones externas o quieren mantener WooCommerce actualizado con control.
¿Quieres que te lo dejemos funcionando? ¿Te interesa extenderlo a precios o productos variables?