<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>E-commerce | Eligeunaweb Agencia de marketing y programación web</title>
	<atom:link href="https://eligeunaweb.es/category/e-commerce/feed/" rel="self" type="application/rss+xml" />
	<link>https://eligeunaweb.es</link>
	<description>Diseño de paginas web, tiendas online, posicionamiento SEO  y redes sociales</description>
	<lastBuildDate>Mon, 28 Jul 2025 07:09:15 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://eligeunaweb.es/wp-content/uploads/2018/09/favicon.png</url>
	<title>E-commerce | Eligeunaweb Agencia de marketing y programación web</title>
	<link>https://eligeunaweb.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Integrar PrestaShop con Notion o Airtable a través de n8n</title>
		<link>https://eligeunaweb.es/integrar-prestashop-con-notion-o-airtable-a-traves-de-n8n/</link>
					<comments>https://eligeunaweb.es/integrar-prestashop-con-notion-o-airtable-a-traves-de-n8n/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 07:30:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987611031</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>PrestaShop es una de las plataformas ecommerce más flexibles, pero su backoffice no siempre permite trabajar con herramientas modernas como Notion o Airtable. Gracias a n8n puedes integrar ambos mundos y sincronizar datos como productos, stock, pedidos o métricas.</p>
<p>&nbsp;</p>
<h2>Índice</h2>
<ul>
<li><a href="#casos">Casos de uso útiles</a></li>
<li><a href="#conexion">Cómo conectar PrestaShop a n8n (API REST)</a></li>
<li><a href="#notion">Enviar datos a Notion</a></li>
<li><a href="#airtable">Enviar datos a Airtable</a></li>
<li><a href="#automatizar">Automatización y filtrado</a></li>
</ul>
<div style="height: 40px;"></div>
<h2 id="casos">Casos de uso</h2>
<ul>
<li>Crear una base de productos en Notion para revisar precios y stock</li>
<li>Volcar nuevos pedidos en Airtable para coordinación con logística</li>
<li>Generar dashboards personalizados con datos de PrestaShop</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="conexion">Conectar PrestaShop a n8n</h2>
<p>PrestaShop expone una API REST que puedes usar con n8n vía HTTP Request:</p>
<pre class="caja-codigo-blog">GET https://midominio.com/api/products
Authorization: Basic BASE64(TU_TOKEN:)</pre>
<p>Desde n8n:</p>
<ul>
<li>HTTP Request Node → Auth: HTTP Basic</li>
<li>Parse XML (porque PrestaShop devuelve XML por defecto)</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="notion">Enviar datos a Notion</h2>
<p>Requisitos:</p>
<ul>
<li>Tener una integración creada en <a href="https://www.notion.so/my-integrations">Notion Developers</a></li>
<li>Base con columnas coincidentes</li>
</ul>
<p>Desde n8n:</p>
<ol>
<li>Agregar nodo Notion → Create Page</li>
<li>Mapear datos: nombre, stock, categoría</li>
</ol>
<div style="height: 40px;"></div>
<h2 id="airtable">Enviar datos a Airtable</h2>
<p>Airtable tiene integración directa en n8n:</p>
<ul>
<li>API Key y base preconfigurada</li>
<li>Usar nodo «Airtable → Create Record»</li>
<li>Mapear columnas según la tabla: SKU, cantidad, precio</li>
</ul>
<pre class="caja-codigo-blog">{
  "fields": {
    "Nombre": "Zapato deportivo",
    "Stock": 18,
    "Precio": 39.95
  }
}</pre>
<div style="height: 40px;"></div>
<h2 id="automatizar">Automatizar y filtrar</h2>
<p>Recomendaciones:</p>
<ul>
<li>Usar Cron cada 6h o Webhook cuando haya cambios</li>
<li>Filtrar productos sin stock o más vendidos</li>
<li>Almacenar logs y fallos para revisión</li>
</ul>
<div style="height: 40px;"></div>
<h2>Conclusión</h2>
<p>Con n8n puedes extender las capacidades de PrestaShop integrando herramientas como Notion o Airtable sin escribir código. Esto permite flujos de trabajo más modernos, accesibles y automatizados.</p>
<p><strong>¿Quieres que conectemos tu ecommerce con tu entorno de trabajo digital?</strong> <a href="/contacto">Contáctanos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/integrar-prestashop-con-notion-o-airtable-a-traves-de-n8n/">Integrar PrestaShop con Notion o Airtable a través de n8n</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/integrar-prestashop-con-notion-o-airtable-a-traves-de-n8n/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo exportar logs de errores y actividad desde BigCommerce con la API</title>
		<link>https://eligeunaweb.es/como-exportar-logs-de-errores-y-actividad-desde-bigcommerce-con-la-api/</link>
					<comments>https://eligeunaweb.es/como-exportar-logs-de-errores-y-actividad-desde-bigcommerce-con-la-api/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[BigCommerce]]></category>
		<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987611026</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Cuando gestionas una tienda en BigCommerce, es vital tener control sobre errores, integraciones y eventos. Aunque BigCommerce no ofrece un sistema de logs tradicional, puedes aprovechar su API para exportar actividad clave y detectar problemas.</p>
<p>&nbsp;</p>
<h2>Índice</h2>
<ul>
<li><a href="#acceso">Acceso a la API de BigCommerce</a></li>
<li><a href="#tipos">Eventos y registros que puedes auditar</a></li>
<li><a href="#ejemplo">Ejemplo: obtener logs de pedidos con errores</a></li>
<li><a href="#exportar">Exportar actividad a CSV o Google Sheets</a></li>
<li><a href="#automatizar">Automatización con cron o n8n</a></li>
</ul>
<div style="height: 40px;"></div>
<h2 id="acceso">Acceso a la API de BigCommerce</h2>
<p>Necesitarás crear un API Account desde el panel de control:</p>
<ol>
<li>Settings → API → Create API Account</li>
<li>Permisos: Read-Only en Orders, Products, Logs</li>
<li>Guardar client_id, access_token y store_hash</li>
</ol>
<div style="height: 40px;"></div>
<h2 id="tipos">Eventos auditables</h2>
<ul>
<li>Pedidos fallidos o rechazados</li>
<li>Eventos de integración (apps, webhooks)</li>
<li>Cambios en stock o precios</li>
<li>Errores 400/500 al consumir la API</li>
</ul>
<p>Muchos de estos se pueden inferir desde endpoints como:</p>
<pre class="caja-codigo-blog">GET /v2/orders?status_id=5
GET /v3/catalog/products?include=modifiers</pre>
<div style="height: 40px;"></div>
<h2 id="ejemplo">Ejemplo de consulta con errores de pedido</h2>
<pre class="caja-codigo-blog">curl -X GET \
  'https://api.bigcommerce.com/stores/STORE_HASH/v2/orders?status_id=5' \
  -H 'X-Auth-Token: ACCESS_TOKEN' \
  -H 'Accept: application/json'</pre>
<p>Filtra pedidos con estado «cancelado» o «declinado» (status_id = 5, 6).</p>
<div style="height: 40px;"></div>
<h2 id="exportar">Exportar a CSV o Google Sheets</h2>
<p>Puedes usar Python o n8n para volcar los datos:</p>
<pre class="caja-codigo-blog">import csv, requests
r = requests.get('https://api...', headers={...})
with open('logs.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['id', 'status', 'total'])
    for order in r.json():
        writer.writerow([order['id'], order['status'], order['total_inc_tax']])</pre>
<p>Desde n8n puedes usar HTTP Request → Google Sheets (append).</p>
<div style="height: 40px;"></div>
<h2 id="automatizar">Automatizar y alertar</h2>
<ul>
<li>Consulta cada 10 min con cron</li>
<li>Filtra por nuevos errores</li>
<li>Envía aviso por email o Telegram</li>
<li>Archiva el JSON en Google Drive o FTP</li>
</ul>
<div style="height: 40px;"></div>
<h2>Conclusión</h2>
<p>Aunque BigCommerce no ofrece un sistema de logs directo, puedes auditar actividad y errores de forma eficaz usando su API. Esto te permite ganar control, detectar fallos y automatizar alertas clave.</p>
<p><strong>¿Quieres que conectemos tu BigCommerce a un sistema de alertas personalizado?</strong> <a href="/contacto">Hablemos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-exportar-logs-de-errores-y-actividad-desde-bigcommerce-con-la-api/">Cómo exportar logs de errores y actividad desde BigCommerce con la API</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-exportar-logs-de-errores-y-actividad-desde-bigcommerce-con-la-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo crear un webhook personalizado en WooCommerce para sincronizar inventario</title>
		<link>https://eligeunaweb.es/como-crear-un-webhook-personalizado-en-woocommerce-para-sincronizar-inventario/</link>
					<comments>https://eligeunaweb.es/como-crear-un-webhook-personalizado-en-woocommerce-para-sincronizar-inventario/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Tue, 29 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987611021</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Si vendes en múltiples canales o conectas tu tienda con ERP o almacenes externos, necesitas mantener sincronizado el stock. En este artículo aprenderás a crear un webhook personalizado en WooCommerce para enviar cambios de inventario en tiempo real.</p>
<p>&nbsp;</p>
<h2>Índice</h2>
<ul>
<li><a href="#que-es">¿Qué es un webhook y por qué usarlo?</a></li>
<li><a href="#crear">Crear un webhook en WooCommerce (interfaz)</a></li>
<li><a href="#custom">Webhook personalizado desde funciones.php</a></li>
<li><a href="#payload">Formato de datos enviado</a></li>
<li><a href="#seguridad">Seguridad y validación del webhook</a></li>
</ul>
<div style="height: 40px;"></div>
<h2 id="que-es">¿Qué es un webhook?</h2>
<p>Es una llamada automática a una URL externa que se dispara al producirse un evento. En WooCommerce, puedes usarlo para notificar a otro sistema cuando cambia el stock de un producto.</p>
<div style="height: 40px;"></div>
<h2 id="crear">Crear un webhook desde el admin</h2>
<ol>
<li>Ir a WooCommerce → Ajustes → Avanzado → Webhooks</li>
<li>Crear webhook nuevo</li>
<li>Evento: <code>product.updated</code></li>
<li>URL: <code>https://mi-servidor.com/api/stock-receiver</code></li>
</ol>
<div style="height: 40px;"></div>
<h2 id="custom">Webhook desde código personalizado</h2>
<p>Si quieres controlar exactamente qué datos se envían y cuándo:</p>
<pre class="caja-codigo-blog">add_action('woocommerce_update_product', 'notificar_stock_personalizado', 10, 1);
function notificar_stock_personalizado($product_id) {
    $product = wc_get_product($product_id);
    $data = [
        'sku' =&gt; $product-&gt;get_sku(),
        'stock' =&gt; $product-&gt;get_stock_quantity(),
        'id' =&gt; $product_id
    ];
    wp_remote_post('https://midominio.com/api/stock', [
        'method' =&gt; 'POST',
        'body' =&gt; json_encode($data),
        'headers' =&gt; ['Content-Type' =&gt; 'application/json']
    ]);
}
</pre>
<h3>Ventajas del webhook personalizado:</h3>
<ul>
<li>Envías solo los datos necesarios</li>
<li>Mayor control y trazabilidad</li>
<li>Puedes usar condiciones (sólo si cambia stock)</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="payload">Ejemplo de datos enviados</h2>
<pre class="caja-codigo-blog">{
  "sku": "ABC123",
  "stock": 12,
  "id": 305
}</pre>
<p>Tu receptor (ERP, API externa, etc.) puede usar este JSON para actualizar su inventario.</p>
<div style="height: 40px;"></div>
<h2 id="seguridad">Consejos de seguridad</h2>
<ul>
<li>Validar origen por IP o token</li>
<li>Guardar logs de envíos y errores</li>
<li>Usar HTTPS siempre</li>
<li>Reintentar si hay fallo de conexión</li>
</ul>
<div style="height: 40px;"></div>
<h2>Conclusión</h2>
<p>Un webhook bien configurado te permite mantener el inventario sincronizado en tiempo real con tu logística, almacén o software externo. Es rápido, flexible y 100% automatizable.</p>
<p><strong>¿Quieres que implementemos este sistema en tu WooCommerce?</strong> <a href="/contacto">Contáctanos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-crear-un-webhook-personalizado-en-woocommerce-para-sincronizar-inventario/">Cómo crear un webhook personalizado en WooCommerce para sincronizar inventario</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-crear-un-webhook-personalizado-en-woocommerce-para-sincronizar-inventario/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo detectar productos huérfanos sin categoría asignada en Magento</title>
		<link>https://eligeunaweb.es/como-detectar-productos-huerfanos-sin-categoria-asignada-en-magento/</link>
					<comments>https://eligeunaweb.es/como-detectar-productos-huerfanos-sin-categoria-asignada-en-magento/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Fri, 25 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610984</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_3 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>En tiendas Magento, especialmente con catálogos grandes, es común que algunos productos queden sin categoría asignada, lo que afecta a la navegación, SEO y conversiones. Este artículo te explica cómo identificarlos desde la base de datos y solucionarlo.</p>

<h2>Índice</h2>
<ul>
  <li><a href="#problema">Por qué ocurre</a></li>
  <li><a href="#consulta">Consulta SQL para identificarlos</a></li>
  <li><a href="#solucionar">Solucionar desde backend o vía SQL</a></li>
  <li><a href="#automatizar">Automatización periódica</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="problema">Por qué ocurre</h2>
<ul>
  <li>Importaciones masivas con errores</li>
  <li>Scripts que eliminan categorías pero no actualizan productos</li>
  <li>Migraciones incompletas</li>
</ul>

<div style="height:40px;"></div>

<h2 id="consulta">Consulta SQL para detectar productos sin categoría</h2>
<pre class="caja-codigo-blog">SELECT e.entity_id, e.sku, e.type_id 
FROM catalog_product_entity e
LEFT JOIN catalog_category_product cp ON e.entity_id = cp.product_id
WHERE cp.category_id IS NULL;</pre>
<p>Esta consulta devuelve productos sin categoría asignada.</p>

<div style="height:40px;"></div>

<h2 id="solucionar">Solución desde backend</h2>
<ul>
  <li>Filtra productos sin categoría desde el admin</li>
  <li>Reasigna a una categoría temporal («Sin clasificar»)</li>
</ul>

<h3>Desde SQL:</h3>
<pre class="caja-codigo-blog">INSERT INTO catalog_category_product (category_id, product_id, position)
SELECT 123 AS category_id, entity_id, 0
FROM catalog_product_entity e
LEFT JOIN catalog_category_product cp ON e.entity_id = cp.product_id
WHERE cp.category_id IS NULL;</pre>
<p>Reemplaza <code>123</code> con el ID de tu categoría temporal.</p>

<div style="height:40px;"></div>

<h2 id="automatizar">Automatización periódica</h2>
<p>Puedes programar este chequeo semanalmente con un cron y notificar vía email:</p>
<pre class="caja-codigo-blog">php bin/magento catalog:product:list --no-category</pre>
<p>O con un script personalizado que ejecute la consulta SQL.</p>

<div style="height:40px;"></div>

<h2>Conclusión</h2>
<p>Detectar y corregir productos huérfanos mejora la navegación, el SEO y evita pérdidas de ventas. Automatizar este control es clave para catálogos en crecimiento.</p>
<p><strong>¿Necesitas ayuda auditando tu catálogo Magento?</strong> <a href="/contacto">Habla con nosotros</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-detectar-productos-huerfanos-sin-categoria-asignada-en-magento/">Cómo detectar productos huérfanos sin categoría asignada en Magento</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-detectar-productos-huerfanos-sin-categoria-asignada-en-magento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo optimizar la base de datos de WooCommerce eliminando transients y datos huérfanos</title>
		<link>https://eligeunaweb.es/como-optimizar-la-base-de-datos-de-woocommerce-eliminando-transients-y-datos-huerfanos/</link>
					<comments>https://eligeunaweb.es/como-optimizar-la-base-de-datos-de-woocommerce-eliminando-transients-y-datos-huerfanos/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Mon, 21 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610965</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_4 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo optimizar la base de datos de WooCommerce eliminando transients y datos huérfanos</h1>

<p>La base de datos de WooCommerce puede volverse lenta y pesada con el tiempo, especialmente en tiendas con mucho tráfico o productos. En este artículo, te enseñamos a identificar y eliminar transients, datos huérfanos y otros registros innecesarios que afectan al rendimiento.</p>

<h2>Índice</h2>
<ul>
  <li><a href="#que-son-transients">¿Qué son los transients?</a></li>
  <li><a href="#como-identificarlos">Cómo identificarlos desde MySQL</a></li>
  <li><a href="#eliminar-datos">Eliminar datos huérfanos</a></li>
  <li><a href="#script-php">Script PHP automatizado</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y backups</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="que-son-transients">¿Qué son los transients?</h2>
<p>Los transients son variables temporales almacenadas en la tabla <code>wp_options</code> con prefijos como <code>_transient_</code> o <code>_transient_timeout_</code>. WooCommerce los usa para almacenar resultados de consultas, información de caché y otros datos temporales.</p>

<div style="height:40px;"></div>

<h2 id="como-identificarlos">Cómo identificarlos desde MySQL</h2>
<pre class="caja-codigo-blog">SELECT option_name, option_value 
FROM wp_options 
WHERE option_name LIKE '%_transient_%';</pre>
<p>Este comando muestra todos los transients almacenados. Muchos de ellos ya están expirados pero siguen ocupando espacio.</p>

<div style="height:40px;"></div>

<h2 id="eliminar-datos">Eliminar datos huérfanos</h2>
<p>WooCommerce deja registros sin uso en varias tablas tras eliminar productos, pedidos o variaciones. Algunas consultas útiles:</p>
<pre class="caja-codigo-blog">-- Transients expirados
DELETE FROM wp_options 
WHERE option_name LIKE '_transient_%' 
AND option_name NOT LIKE '_transient_timeout_%';</pre>

<pre class="caja-codigo-blog">-- Metadatos huérfanos
DELETE pm 
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;</pre>

<pre class="caja-codigo-blog">-- Termmeta huérfano
DELETE tm
FROM wp_termmeta tm
LEFT JOIN wp_terms t ON t.term_id = tm.term_id
WHERE t.term_id IS NULL;</pre>

<div style="height:40px;"></div>

<h2 id="script-php">Script PHP automatizado</h2>
<p>Este script puede programarse con cron para ejecutarse semanalmente:</p>
<pre class="caja-codigo-blog">
<?php
require_once('wp-load.php');

global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%'");
$wpdb->query("DELETE pm FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL");
$wpdb->query("DELETE tm FROM {$wpdb->termmeta} tm LEFT JOIN {$wpdb->terms} t ON t.term_id = tm.term_id WHERE t.term_id IS NULL");
echo "Limpieza completada.";
?>
</pre>

<div style="height:40px;"></div>

<h2 id="buenas-practicas">Buenas prácticas y backups</h2>
<ul>
  <li>Haz backup completo antes de ejecutar scripts SQL.</li>
  <li>Utiliza un entorno staging si tienes alto tráfico.</li>
  <li>Verifica la integridad con plugins como WP-DBManager.</li>
  <li>Evita plugins de limpieza automática agresiva sin control.</li>
</ul>

<div style="height:40px;"></div>

<h2>Conclusión</h2>
<p>Eliminar datos temporales y huérfanos mejora el rendimiento de tu tienda y reduce el uso de recursos. Esta práctica debería ser parte de tu mantenimiento mensual.</p>
<p><strong>¿Quieres que revisemos y optimicemos tu base de datos WooCommerce?</strong> <a href="/contacto">Contáctanos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-optimizar-la-base-de-datos-de-woocommerce-eliminando-transients-y-datos-huerfanos/">Cómo optimizar la base de datos de WooCommerce eliminando transients y datos huérfanos</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-optimizar-la-base-de-datos-de-woocommerce-eliminando-transients-y-datos-huerfanos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo resetear completamente el entorno de desarrollo vía SQL en Magento</title>
		<link>https://eligeunaweb.es/como-resetear-completamente-el-entorno-de-desarrollo-via-sql-en-magento/</link>
					<comments>https://eligeunaweb.es/como-resetear-completamente-el-entorno-de-desarrollo-via-sql-en-magento/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Thu, 17 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610947</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_5 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_5">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_5  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo resetear completamente el entorno de desarrollo vía SQL en Magento: Guía avanzada para desarrolladores</h1>

<p>¿Tu instalación de Magento está llena de datos de pruebas, pedidos falsos o productos ficticios? Cuando desarrollamos o hacemos pruebas en Magento, es habitual querer dejar la base de datos “limpia” sin tener que reinstalar todo.</p>

<p>En esta guía aprenderás a <strong>resetear completamente tu entorno de desarrollo vía SQL</strong> en Magento, sin tener que volver a instalar desde cero. Perfecto para desarrolladores, agencias y equipos que trabajan con entornos staging.</p>

<div style="height:40px;"></div>

<h2>Índice de contenidos</h2>

<ul>
  <li><a href="#por-que-resetear">¿Por qué resetear un entorno en Magento?</a></li>
  <li><a href="#riesgos">Riesgos de un reset mal hecho</a></li>
  <li><a href="#tablas-clave">Tablas clave a limpiar en Magento</a></li>
  <li><a href="#consultas-sql">Consultas SQL para limpiar datos</a></li>
  <li><a href="#comandos-cli">Comandos CLI útiles tras el reset</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y seguridad</a></li>
  <li><a href="#ventajas">Ventajas de mantener un entorno limpio</a></li>
  <li><a href="#conclusion">Conclusión</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="por-que-resetear">¿Por qué resetear un entorno en Magento?</h2>

<p>Resetear el entorno de desarrollo tiene grandes ventajas:</p>

<ul>
  <li>Eliminar datos falsos o pruebas.</li>
  <li>Evitar errores heredados en migraciones.</li>
  <li>Mejorar la velocidad de pruebas.</li>
  <li>Generar snapshots más pequeños para compartir con el equipo.</li>
</ul>

<p>En ecommerce grandes, mantener bases limpias es clave para evitar errores en producción.</p>

<div style="height:40px;"></div>

<h2 id="riesgos">Riesgos de un reset mal hecho</h2>

<p>Resetear sin saber puede romper relaciones entre tablas. Riesgos:</p>

<ul>
  <li>Perder usuarios y contraseñas de admin.</li>
  <li>Generar errores de integridad referencial.</li>
  <li>Romper integraciones con ERP o CRMs.</li>
</ul>

<p>¡Por eso siempre hay que hacer backups!</p>

<div style="height:40px;"></div>

<h2 id="tablas-clave">Tablas clave a limpiar en Magento</h2>

<p>Las tablas principales que almacenan datos que suelen querer limpiarse:</p>

<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">
  <tr>
    <th>Tabla</th>
    <th>Descripción</th>
  </tr>
  <tr>
    <td>sales_order</td>
    <td>Cabecera de pedidos.</td>
  </tr>
  <tr>
    <td>sales_order_item</td>
    <td>Ítems de pedidos.</td>
  </tr>
  <tr>
    <td>customer_entity</td>
    <td>Datos de clientes.</td>
  </tr>
  <tr>
    <td>quote</td>
    <td>Carritos abandonados.</td>
  </tr>
  <tr>
    <td>catalog_product_entity</td>
    <td>Productos en catálogo.</td>
  </tr>
  <tr>
    <td>review</td>
    <td>Reseñas de productos.</td>
  </tr>
</table>

<p>Hay muchas más, pero estas son las básicas.</p>

<div style="height:40px;"></div>

<h2 id="consultas-sql">Consultas SQL para limpiar datos</h2>

<p>**¡Haz siempre backup primero!**</p>

<h3>1. Borrar pedidos y relacionados</h3>

<pre class=\"caja-codigo-blog\">
TRUNCATE TABLE sales_order;
TRUNCATE TABLE sales_order_item;
TRUNCATE TABLE sales_order_grid;
TRUNCATE TABLE quote;
TRUNCATE TABLE quote_item;
TRUNCATE TABLE quote_address;
</pre>

<h3>2. Borrar clientes</h3>

<pre class=\"caja-codigo-blog\">
TRUNCATE TABLE customer_entity;
TRUNCATE TABLE customer_address_entity;
</pre>

<h3>3. Borrar productos</h3>

<pre class=\"caja-codigo-blog\">
TRUNCATE TABLE catalog_product_entity;
TRUNCATE TABLE catalog_product_relation;
TRUNCATE TABLE cataloginventory_stock_item;
</pre>

<h3>4. Borrar reseñas</h3>

<pre class=\"caja-codigo-blog\">
TRUNCATE TABLE review;
TRUNCATE TABLE review_detail;
</pre>

<p>Esto deja tu base casi como recién instalada, sin datos comerciales ni de pruebas.</p>

<div style="height:40px;"></div>

<h2 id=\"comandos-cli\">Comandos CLI útiles tras el reset</h2>

<p>Después de limpiar vía SQL, es recomendable ejecutar:</p>

<pre class=\"caja-codigo-blog\">
php bin/magento indexer:reindex
php bin/magento cache:flush
php bin/magento setup:upgrade
</pre>

<p>Así Magento regenerará índices y evitarás errores en el backend.</p>

<div style=\"height:40px;\"></div>

<h2 id=\"buenas-practicas\">Buenas prácticas y seguridad</h2>

<ul>
  <li>Nunca hagas estos TRUNCATE en producción.</li>
  <li>Haz snapshots antes de cualquier limpieza.</li>
  <li>Trabaja siempre en entornos de desarrollo o staging.</li>
  <li>Verifica integridad de datos tras el reset.</li>
</ul>

<div style=\"height:40px;\"></div>

<h2 id=\"ventajas\">Ventajas de mantener un entorno limpio</h2>

<p>Resetear tu entorno de Magento te permite:</p>

<ul>
  <li>Reducir el tamaño de la base de datos.</li>
  <li>Compartir entornos sin datos sensibles.</li>
  <li>Probar integraciones sin datos basura.</li>
  <li>Evitar errores migrados a producción.</li>
</ul>

<p>¡Un entorno limpio es clave para trabajar rápido y seguro!</p>

<div style=\"height:40px;\"></div>

<h2 id=\"conclusion\">Conclusión</h2>

<p>Resetear Magento vía SQL es una técnica potente para mantener tus entornos de desarrollo limpios y ordenados. Eso sí, requiere cuidado y conocimientos para no dañar relaciones internas.</p>

<p><strong>¿Quieres que limpiemos tu entorno Magento de forma segura?</strong> ¡<strong>Contáctanos y lo hacemos por ti!</strong></p>

<div style=\"height:40px;\"></div>

<h2>Textos para redes sociales</h2>

<h3>LinkedIn (versión no técnica)</h3>
<p>🧱 <strong>¿Tu Magento está lleno de datos de prueba?</strong><br><br>
Te explico cómo resetear tu entorno de desarrollo vía SQL para dejarlo limpio y rápido. ¡No hace falta reinstalar desde cero!<br><br>
#Magento #SQL #Ecommerce #DesarrolloWeb</p>

<div style=\"height:20px;\"></div>

<h3>LinkedIn (versión técnica)</h3>
<p><strong>TRUNCATE con cuidado 🚀</strong><br><br>
Si trabajas con Magento en entornos de desarrollo, seguro has tenido que limpiar la base. Hoy comparto:<br>
✅ Tablas clave que debes vaciar.<br>
✅ Consultas SQL paso a paso.<br>
✅ CLI commands para dejarlo todo a punto.<br><br>
¡Evita reinstalar Magento cada vez!<br><br>
#Magento #SQL #DevOps #DesarrolloWeb #Ecommerce</p>

<div style=\"height:20px;\"></div>

<h3>Facebook / Instagram publicación</h3>
<p>🧱 <strong>¡Deja tu Magento como nuevo sin reinstalarlo!</strong><br><br>
Aprende cómo resetear tu base de datos de desarrollo con SQL y ahorra horas de trabajo.<br><br>
👉 Descúbrelo paso a paso en nuestro blog.<br><br>
#Magento #SQL #Ecommerce #TiendaOnline</p>

<div style=\"height:20px;\"></div>

<h3>Carrusel Instagram / Facebook</h3>
<p><strong>Slide 1:</strong> 🧱 ¿Magento lleno de datos de pruebas?<br><br>
<strong>Slide 2:</strong> 🧹 Límpialo sin reinstalar.<br><br>
<strong>Slide 3:</strong> 💻 Usa SQL para borrar datos seguros.<br><br>
<strong>Slide 4:</strong> 🚀 Mantén tu entorno rápido y ordenado.<br><br>
<strong>Slide 5:</strong> 👉 Aprende cómo en nuestro blog técnico.</p>

<div style=\"height:40px;\"></div></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-resetear-completamente-el-entorno-de-desarrollo-via-sql-en-magento/">Cómo resetear completamente el entorno de desarrollo vía SQL en Magento</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-resetear-completamente-el-entorno-de-desarrollo-via-sql-en-magento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Crear informe de ventas por MySQL en PrestaShop</title>
		<link>https://eligeunaweb.es/crear-informe-de-ventas-por-mysql-en-prestashop/</link>
					<comments>https://eligeunaweb.es/crear-informe-de-ventas-por-mysql-en-prestashop/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Wed, 16 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Prestashop]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610937</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_6 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_6">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_6  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo crear un informe de ventas por MySQL en PrestaShop: Guía completa para ecommerce y técnicos</h1>

<p>¿Tu PrestaShop empieza a tener cada vez más pedidos y necesitas controlar tus ventas de forma más precisa? Aunque PrestaShop tiene informes, muchas veces se quedan cortos, especialmente en tiendas con alto volumen o necesidades específicas.</p>

<p>La solución es generar <strong>informes personalizados con SQL</strong>. Hoy aprenderás cómo crear un informe de ventas directo desde la base de datos de PrestaShop. ¡Ideal para ecommerce managers y técnicos!</p>

<div style="height:40px;"></div>

<h2>Índice de contenidos</h2>

<ul>
  <li><a href="#por-que-informes-sql">¿Por qué hacer informes por SQL en PrestaShop?</a></li>
  <li><a href="#tablas-clave">Tablas clave en la base de datos de PrestaShop</a></li>
  <li><a href="#consulta-basica">Consulta básica de informe de ventas</a></li>
  <li><a href="#ejemplo-practico">Ejemplo práctico paso a paso</a></li>
  <li><a href="#campos-adicionales">Campos adicionales útiles</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y seguridad</a></li>
  <li><a href="#seo-beneficios">Beneficios comerciales y estratégicos</a></li>
  <li><a href="#conclusion">Conclusión</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="por-que-informes-sql">¿Por qué hacer informes por SQL en PrestaShop?</h2>

<p>Crear informes personalizados tiene enormes ventajas:</p>

<ul>
  <li>Flexibilidad total: eliges exactamente qué datos ver.</li>
  <li>Mucho más rápido que depender del backoffice en tiendas grandes.</li>
  <li>Integración directa con Excel, BI o Google Sheets.</li>
  <li>Detectar productos estrella, zonas de venta, o hábitos de compra.</li>
</ul>

<p>¡Es clave para escalar tu ecommerce!</p>

<div style="height:40px;"></div>

<h2 id="tablas-clave">Tablas clave en la base de datos de PrestaShop</h2>

<p>Para extraer datos de ventas necesitas estas tablas:</p>

<table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <th>Tabla</th>
    <th>Descripción</th>
  </tr>
  <tr>
    <td>ps_orders</td>
    <td>Cabecera de los pedidos (fecha, total, etc.).</td>
  </tr>
  <tr>
    <td>ps_order_detail</td>
    <td>Productos comprados en cada pedido.</td>
  </tr>
  <tr>
    <td>ps_product</td>
    <td>Información básica de productos.</td>
  </tr>
  <tr>
    <td>ps_customer</td>
    <td>Datos de clientes.</td>
  </tr>
  <tr>
    <td>ps_order_state_lang</td>
    <td>Estados de pedido (para filtrar solo pagados, etc.).</td>
  </tr>
</table>

<div style="height:40px;"></div>

<h2 id="consulta-basica">Consulta básica de informe de ventas</h2>

<p>Una consulta básica para saber cuántas unidades has vendido por producto sería:</p>

<pre class="caja-codigo-blog">
SELECT od.product_id, p.reference, od.product_name, SUM(od.product_quantity) as total_vendidos
FROM ps_order_detail od
JOIN ps_product p ON od.product_id = p.id_product
JOIN ps_orders o ON od.id_order = o.id_order
WHERE o.current_state IN (2, 4) -- estados pagados o enviados, por ejemplo
GROUP BY od.product_id, od.product_name, p.reference;
</pre>

<p><strong>Explicación línea a línea:</strong></p>

<ul>
  <li><code>SUM(product_quantity)</code> → total unidades vendidas.</li>
  <li><code>JOIN</code> con ps_product para obtener referencias.</li>
  <li><code>JOIN</code> con ps_orders para filtrar estados.</li>
</ul>

<p>¡Así tendrás un informe de tus ventas por producto!</p>

<div style="height:40px;"></div>

<h2 id="ejemplo-practico">Ejemplo práctico paso a paso</h2>

<p>Imagina que quieres saber las ventas del último mes.</p>

<h3>1. Haz backup de la base de datos</h3>

<pre class="caja-codigo-blog">
mysqldump -u user -p base_de_datos > backup_ps.sql
</pre>

<h3>2. Ejecuta la consulta</h3>

<pre class="caja-codigo-blog">
SELECT od.product_id, p.reference, od.product_name, SUM(od.product_quantity) as total_vendidos
FROM ps_order_detail od
JOIN ps_product p ON od.product_id = p.id_product
JOIN ps_orders o ON od.id_order = o.id_order
WHERE o.current_state IN (2,4)
AND o.date_add BETWEEN '2024-06-01' AND '2024-06-30'
GROUP BY od.product_id, od.product_name, p.reference;
</pre>

<p>Así obtendrás ventas por producto solo en ese rango de fechas.</p>

<div style="height:40px;"></div>

<h2 id="campos-adicionales">Campos adicionales útiles</h2>

<p>Otros campos que puedes incluir:</p>

<ul>
  <li>Precio unitario (<code>od.unit_price_tax_incl</code>).</li>
  <li>Total por producto (<code>SUM(od.total_price_tax_incl)</code>).</li>
  <li>Nombre del cliente (<code>ps_customer</code>).</li>
  <li>Estado del pedido.</li>
</ul>

<p>¡Puedes construir informes a medida según tus necesidades!</p>

<div style="height:40px;"></div>

<h2 id="buenas-practicas">Buenas prácticas y seguridad</h2>

<ul>
  <li>Siempre haz backup antes de ejecutar consultas.</li>
  <li>Prueba en entornos de staging primero.</li>
  <li>Evita consultas sobre toda la base de datos en horas pico.</li>
  <li>Documenta las queries para poder replicarlas o modificarlas después.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="seo-beneficios">Beneficios comerciales y estratégicos</h2>

<p>Crear tus propios informes de ventas te permite:</p>

<ul>
  <li>Detectar productos estrella.</li>
  <li>Planificar estrategias de marketing basadas en datos reales.</li>
  <li>Evitar sobrestock o roturas de stock.</li>
  <li>Mejorar la rentabilidad de tu negocio.</li>
</ul>

<p>¡La información es poder!</p>

<div style="height:40px;"></div>

<h2 id="conclusion">Conclusión</h2>

<p>Crear informes de ventas por SQL en PrestaShop es una herramienta poderosa para cualquier ecommerce que quiera crecer. Con estas consultas, podrás analizar tus datos de forma más profunda y tomar decisiones estratégicas.</p>

<p><strong>¿Quieres que creemos tus informes a medida en PrestaShop?</strong> ¡<strong>Contáctanos y optimiza tu negocio!</strong></p>

<div style="height:40px;"></div>

<h2>Textos para redes sociales</h2>

<h3>LinkedIn (versión no técnica)</h3>
<p>🛍️ <strong>¿Controlas realmente tus ventas en PrestaShop?</strong><br><br>
Hoy te explico cómo crear un informe de ventas con SQL para conocer tus productos más vendidos y optimizar tu negocio.<br><br>
¡Tu ecommerce merece datos reales para crecer!<br><br>
#PrestaShop #SQL #Ecommerce #Datos #NegocioDigital</p>

<div style="height:20px;"></div>

<h3>LinkedIn (versión técnica)</h3>
<p><strong>SQL + PrestaShop = Potencia para ecommerce managers 🚀</strong><br><br>
✅ Cómo consultar tus ventas reales por producto.<br>
✅ Tablas clave: orders, order_detail, products.<br>
✅ Queries explicadas paso a paso.<br><br>
¡No dependas solo del backoffice para conocer tu negocio!<br><br>
#PrestaShop #SQL #BusinessIntelligence #DesarrolloWeb #Ecommerce</p>

<div style="height:20px;"></div>

<h3>Facebook / Instagram publicación</h3>
<p>🛍️ <strong>¡Crea tus propios informes de ventas en PrestaShop!</strong><br><br>
Aprende cómo generar estadísticas reales de tu tienda con SQL y toma mejores decisiones.<br><br>
👉 Descúbrelo paso a paso en nuestro blog.<br><br>
#PrestaShop #SQL #TiendaOnline #NegocioDigital</p>

<div style="height:20px;"></div>

<h3>Carrusel Instagram / Facebook</h3>
<p><strong>Slide 1:</strong> 🛍️ ¿Sabes qué productos vendes más en PrestaShop?<br><br>
<strong>Slide 2:</strong> 📊 Los informes básicos se quedan cortos.<br><br>
<strong>Slide 3:</strong> 💻 Con SQL puedes saberlo todo al detalle.<br><br>
<strong>Slide 4:</strong> 🚀 Mejora tu estrategia y tus ganancias.<br><br>
<strong>Slide 5:</strong> 👉 Aprende cómo en nuestro blog técnico.</p>

<div style="height:40px;"></div></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/crear-informe-de-ventas-por-mysql-en-prestashop/">Crear informe de ventas por MySQL en PrestaShop</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/crear-informe-de-ventas-por-mysql-en-prestashop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo detectar productos nunca vendidos en WooCommerce con SQL</title>
		<link>https://eligeunaweb.es/como-detectar-productos-nunca-vendidos-en-woocommerce-con-sql-2/</link>
					<comments>https://eligeunaweb.es/como-detectar-productos-nunca-vendidos-en-woocommerce-con-sql-2/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Mon, 14 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610925</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_7 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_7">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_7  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo detectar productos nunca vendidos en WooCommerce con SQL</h1>

<p>¿Sabías que en muchas tiendas WooCommerce existen productos que jamás han tenido ni una sola venta? Estos productos ocupan espacio en tu catálogo, ralentizan tus procesos y pueden dañar tu estrategia de marketing y SEO. En este artículo aprenderás cómo detectarlos directamente en tu base de datos usando SQL, para poder decidir si eliminarlos, promocionarlos o darles otra utilidad.</p>

<div style="height:40px;"></div>

<h2>Índice de contenidos</h2>

<ul>
  <li><a href="#por-que-detectar">¿Por qué detectar productos nunca vendidos?</a></li>
  <li><a href="#estructura-bbdd">Estructura de la base de datos en WooCommerce</a></li>
  <li><a href="#consultas-sql">Consultas SQL para detectarlos</a></li>
  <li><a href="#ejemplo-practico">Ejemplo práctico paso a paso</a></li>
  <li><a href="#acciones">¿Qué hacer con estos productos?</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y seguridad</a></li>
  <li><a href="#seo-beneficios">Impacto SEO y comercial</a></li>
  <li><a href="#conclusion">Conclusión</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="por-que-detectar">¿Por qué detectar productos nunca vendidos?</h2>

<p>Identificar estos productos es clave porque:</p>

<ul>
  <li>Te ayudan a depurar tu catálogo.</li>
  <li>Evitas cargar de datos innecesarios tu web.</li>
  <li>Detectas posibles errores en fichas de producto.</li>
  <li>Optimiza recursos de marketing hacia productos que sí convierten.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="estructura-bbdd">Estructura de la base de datos en WooCommerce</h2>

<p>Las ventas se guardan en estas tablas clave:</p>

<table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <th>Tabla</th>
    <th>Descripción</th>
  </tr>
  <tr>
    <td>wp_posts</td>
    <td>Contiene los productos (post_type = &#8216;product&#8217;).</td>
  </tr>
  <tr>
    <td>wp_woocommerce_order_items</td>
    <td>Contiene los ítems de cada pedido.</td>
  </tr>
  <tr>
    <td>wp_woocommerce_order_itemmeta</td>
    <td>Relaciona cada ítem con el product_id.</td>
  </tr>
</table>

<div style="height:40px;"></div>

<h2 id="consultas-sql">Consultas SQL para detectarlos</h2>

<p>Para saber qué productos jamás se han vendido, podemos usar esta consulta:</p>

<pre class="caja-codigo-blog">
SELECT p.ID, p.post_title
FROM wp_posts p
WHERE p.post_type = 'product'
AND p.ID NOT IN (
    SELECT meta_value
    FROM wp_woocommerce_order_itemmeta
    WHERE meta_key = '_product_id'
);
</pre>

<p>Explicación línea a línea:</p>

<ul>
  <li><code>wp_posts</code> → contiene todos los productos.</li>
  <li><code>NOT IN</code> → excluye los productos que aparecen en pedidos.</li>
  <li><code>wp_woocommerce_order_itemmeta</code> → guarda los productos comprados.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="ejemplo-practico">Ejemplo práctico paso a paso</h2>

<p>Supongamos que quieres identificar los productos huérfanos para analizarlos. Ejecuta la consulta SQL anterior en phpMyAdmin o vía consola MySQL:</p>

<pre class="caja-codigo-blog">
mysql -u tu_usuario -p tu_base_datos
</pre>

<p>Luego ejecuta la SELECT y exporta resultados a CSV para analizarlos.</p>

<div style="height:40px;"></div>

<h2 id="acciones">¿Qué hacer con estos productos?</h2>

<ul>
  <li>Analiza si tienen errores en sus fichas.</li>
  <li>Considera promocionarlos o darles mayor visibilidad.</li>
  <li>Elimínalos si son antiguos o irrelevantes.</li>
</ul>

<p>¡Esto ayudará a que tu catálogo sea más rentable!</p>

<div style="height:40px;"></div>

<h2 id="buenas-practicas">Buenas prácticas y seguridad</h2>

<ul>
  <li>Haz siempre un backup antes de modificar datos.</li>
  <li>Prueba primero en entornos de staging.</li>
  <li>Documenta cambios realizados.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="seo-beneficios">Impacto SEO y comercial</h2>

<p>Eliminar o mejorar estos productos puede:</p>

<ul>
  <li>Evitar URLs huérfanas.</li>
  <li>Mejorar la experiencia del usuario.</li>
  <li>Optimizar el crawl budget de Google.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="conclusion">Conclusión</h2>

<p>Identificar productos nunca vendidos en WooCommerce es fundamental para mantener tu catálogo sano y rentable. Con estas consultas SQL puedes encontrarlos rápidamente y tomar decisiones estratégicas.</p>

<p><strong>¿Quieres que hagamos esta auditoría por ti?</strong> ¡<strong>Contáctanos y optimiza tu WooCommerce!</strong></p>

<div style="height:40px;"></div>

<h2>Textos para redes sociales</h2>

<h3>LinkedIn (versión no técnica)</h3>
<p>🛒 <strong>¿Sabes cuántos productos de tu WooCommerce nunca se han vendido?</strong><br><br>
A veces, tenemos productos que ocupan espacio en el catálogo, consumen recursos y jamás han tenido una sola venta.<br><br>
Hoy te explico cómo detectarlos con SQL para mejorar tu tienda y tu rentabilidad.<br><br>
#WooCommerce #Ecommerce #SQL #NegocioDigital #TiendaOnline</p>

<div style="height:20px;"></div>

<h3>LinkedIn (versión técnica)</h3>
<p><strong>WooCommerce y los “productos fantasmas.”</strong><br><br>
¿Sabes detectar los productos que jamás se han vendido en tu tienda?<br><br>
Aquí comparto cómo identificarlos directamente desde la base de datos:<br>
✅ Tablas implicadas (wp_posts, order_itemmeta).<br>
✅ Query SQL explicada paso a paso.<br>
✅ Estrategias para limpiar tu catálogo.<br><br>
¡Un must para devs y ecommerce managers!<br><br>
#WooCommerce #SQL #DataCleaning #Ecommerce #DesarrolloWeb</p>

<div style="height:20px;"></div>

<h3>Facebook / Instagram publicación</h3>
<p>🛒 <strong>¡Detecta productos nunca vendidos en tu WooCommerce!</strong><br><br>
Aprende cómo identificarlos con SQL y optimiza tu tienda para vender más.<br><br>
👉 Descúbrelo paso a paso en nuestro blog.<br><br>
#WooCommerce #SQL #TiendaOnline #NegocioDigital</p>

<div style="height:20px;"></div>

<h3>Carrusel Instagram / Facebook</h3>
<p><strong>Slide 1:</strong> 🛒 ¿Tienes productos en WooCommerce que nunca se han vendido?<br><br>
<strong>Slide 2:</strong> 🤔 Ocupan espacio y ralentizan tu tienda.<br><br>
<strong>Slide 3:</strong> 💻 Encuéntralos con una simple consulta SQL.<br><br>
<strong>Slide 4:</strong> 🚀 Optimiza tu catálogo y vende mejor.<br><br>
<strong>Slide 5:</strong> 👉 Aprende cómo en nuestro blog técnico.</p>

<div style="height:40px;"></div></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-detectar-productos-nunca-vendidos-en-woocommerce-con-sql-2/">Cómo detectar productos nunca vendidos en WooCommerce con SQL</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-detectar-productos-nunca-vendidos-en-woocommerce-con-sql-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo auditar la integridad de productos, precios, stock y categorías con SQL en PrestaShop</title>
		<link>https://eligeunaweb.es/como-auditar-la-integridad-de-productos-precios-stock-y-categorias-con-sql-en-prestashop/</link>
					<comments>https://eligeunaweb.es/como-auditar-la-integridad-de-productos-precios-stock-y-categorias-con-sql-en-prestashop/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Thu, 10 Jul 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Prestashop]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610910</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_8 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_8">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_8  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_8  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo auditar la integridad de productos, precios, stock y categorías con SQL en PrestaShop: Guía completa para ecommerce y técnicos</h1>

<p>¿Tu tienda PrestaShop empieza a dar datos raros en productos, precios o stock? Es más habitual de lo que parece. Migraciones, módulos de terceros o errores en la base de datos pueden dejar registros inconsistentes.</p>

<p>En esta guía aprenderás a <strong>auditar la integridad</strong> de tu catálogo usando consultas SQL. Te mostraré cómo detectar:</p>

<ul>
  <li>Productos huérfanos sin categoría.</li>
  <li>Stock negativo o incoherente.</li>
  <li>Precios mal asignados o a cero.</li>
  <li>Problemas de duplicidad de registros.</li>
</ul>

<p>Está pensada tanto para gerentes de ecommerce que quieren entender el problema, como para técnicos que necesitan consultas listas para trabajar.</p>

<div style="height:40px;"></div>

<h2>Índice de contenidos</h2>

<ul>
  <li><a href="#por-que-auditar">¿Por qué auditar tu base de datos en PrestaShop?</a></li>
  <li><a href="#estructura-bbdd">Estructura de las tablas clave en PrestaShop</a></li>
  <li><a href="#productos-huerfanos">Detectar productos huérfanos sin categoría</a></li>
  <li><a href="#stock-negativo">Detectar stock negativo o incoherente</a></li>
  <li><a href="#precios-cero">Detectar productos con precio cero</a></li>
  <li><a href="#duplicidades">Detectar duplicidades en registros</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y seguridad</a></li>
  <li><a href="#seo-beneficios">Impacto SEO y ventajas comerciales</a></li>
  <li><a href="#conclusion">Conclusión</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="por-que-auditar">¿Por qué auditar tu base de datos en PrestaShop?</h2>

<p>Los motivos principales para hacer una auditoría SQL en PrestaShop:</p>

<ul>
  <li>Evitar errores en catálogo visible al cliente.</li>
  <li>Corregir problemas tras importaciones masivas.</li>
  <li>Mejorar rendimiento del backend.</li>
  <li>Garantizar que precios, stock y categorías estén bien enlazados.</li>
</ul>

<p>Un error como un producto sin categoría puede implicar que ese producto <strong>no se muestre en la tienda</strong> aunque esté activo.</p>

<div style="height:40px;"></div>

<h2 id="estructura-bbdd">Estructura de las tablas clave en PrestaShop</h2>

<p>Para auditar datos necesitas conocer estas tablas:</p>

<table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <th>Tabla</th>
    <th>Descripción</th>
  </tr>
  <tr>
    <td>ps_product</td>
    <td>Productos básicos (id, referencias, activo, etc.)</td>
  </tr>
  <tr>
    <td>ps_product_lang</td>
    <td>Traducciones y nombres de producto.</td>
  </tr>
  <tr>
    <td>ps_category_product</td>
    <td>Relación producto-categoría.</td>
  </tr>
  <tr>
    <td>ps_stock_available</td>
    <td>Stock de cada producto o combinación.</td>
  </tr>
  <tr>
    <td>ps_product_shop</td>
    <td>Relación producto-tienda (multi-store).</td>
  </tr>
  <tr>
    <td>ps_specific_price</td>
    <td>Precios especiales o descuentos.</td>
  </tr>
</table>

<p>Vamos a ver cómo consultar estos datos.</p>

<div style="height:40px;"></div>

<h2 id="productos-huerfanos">Detectar productos huérfanos sin categoría</h2>

<p>¿Por qué es un problema?</p>

<ul>
  <li>Un producto sin categoría no se muestra en la tienda.</li>
  <li>Afecta negativamente al SEO.</li>
</ul>

<p>Consulta SQL para encontrar productos huérfanos:</p>

<pre class="caja-codigo-blog">
SELECT p.id_product, pl.name
FROM ps_product p
LEFT JOIN ps_category_product cp ON p.id_product = cp.id_product
LEFT JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
WHERE cp.id_category IS NULL;
</pre>

<p><strong>Explicación:</strong></p>

<ul>
  <li>Busca productos que NO tienen relación en <code>ps_category_product</code>.</li>
  <li>Devuelve ID y nombre para localizarlos fácilmente.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="stock-negativo">Detectar stock negativo o incoherente</h2>

<p>PrestaShop puede tener stock negativo si hay errores en ventas o devoluciones.</p>

<p>Consulta SQL:</p>

<pre class="caja-codigo-blog">
SELECT p.id_product, pl.name, sa.quantity
FROM ps_product p
JOIN ps_stock_available sa ON p.id_product = sa.id_product
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
WHERE sa.quantity < 0;
</pre>

<p><strong>Explicación:</strong></p>

<ul>
  <li>Te devuelve todos los productos con stock negativo.</li>
  <li>Útil para corregir errores antes de rebajar stock.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="precios-cero">Detectar productos con precio cero</h2>

<p>Otro clásico: productos cuyo precio se ha quedado en cero tras importaciones masivas.</p>

<p>Consulta SQL:</p>

<pre class="caja-codigo-blog">
SELECT p.id_product, pl.name, ps.price
FROM ps_product p
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
JOIN ps_product_shop ps ON p.id_product = ps.id_product
WHERE ps.price = 0;
</pre>

<p>Revisa siempre estos productos, ¡puedes estar regalando artículos sin saberlo!</p>

<div style="height:40px;"></div>

<h2 id="duplicidades">Detectar duplicidades en registros</h2>

<p>Un problema frecuente son duplicidades en productos que pueden causar errores en módulos o en la web.</p>

<p>Consulta SQL para encontrar productos duplicados por referencia:</p>

<pre class="caja-codigo-blog">
SELECT reference, COUNT(*) as total
FROM ps_product
WHERE reference != ''
GROUP BY reference
HAVING total > 1;
</pre>

<p>Así detectas referencias repetidas que pueden confundirse en integraciones externas o ERP.</p>

<div style="height:40px;"></div>

<h2 id="buenas-practicas">Buenas prácticas y seguridad</h2>

<ul>
  <li>Haz backup antes de ejecutar cualquier consulta DELETE o UPDATE.</li>
  <li>Prueba las consultas primero en un entorno staging.</li>
  <li>Verifica IDs de idioma si trabajas en multi-idioma.</li>
  <li>Documenta cambios que apliques tras auditoría.</li>
</ul>

<p>Auditar es el primer paso antes de modificar datos.</p>

<div style="height:40px;"></div>

<h2 id="seo-beneficios">Impacto SEO y ventajas comerciales</h2>

<p>Auditar la integridad del catálogo tiene impacto directo en el SEO y en la conversión:</p>

<ul>
  <li>Mejora la indexación en buscadores.</li>
  <li>Evita páginas huérfanas.</li>
  <li>Refuerza la consistencia de categorías.</li>
  <li>Minimiza errores 404 en fichas de producto.</li>
</ul>

<p>Un catálogo limpio es clave para evitar sorpresas en campañas de Google Shopping o marketplaces.</p>

<div style="height:40px;"></div>

<h2 id="conclusion">Conclusión</h2>

<p>Auditar la base de datos de PrestaShop con SQL es esencial para evitar errores invisibles que pueden costarte ventas y posicionamiento. Las consultas que has visto hoy te permitirán revisar los puntos críticos de tu catálogo y mantener tu tienda sana y optimizada.</p>

<p><strong>¿Necesitas ayuda para auditar tu tienda PrestaShop y dejarla perfecta?</strong> ¡<strong>Contáctanos y te ayudamos!</strong></p>

<div style="height:40px;"></div></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-auditar-la-integridad-de-productos-precios-stock-y-categorias-con-sql-en-prestashop/">Cómo auditar la integridad de productos, precios, stock y categorías con SQL en PrestaShop</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-auditar-la-integridad-de-productos-precios-stock-y-categorias-con-sql-en-prestashop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exportar productos y categorías por SQL en Magento</title>
		<link>https://eligeunaweb.es/exportar-productos-y-categorias-por-sql-en-magento/</link>
					<comments>https://eligeunaweb.es/exportar-productos-y-categorias-por-sql-en-magento/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Tue, 08 Jul 2025 06:35:00 +0000</pubDate>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Recomendaciones]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610900</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_9 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_9">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_9  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_9  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Cómo exportar productos y categorías por SQL en Magento: Guía completa para ecommerce y técnicos</h1>

<p>¿Necesitas exportar tu catálogo de productos y categorías en Magento para integraciones externas, migraciones o informes personalizados? Aunque Magento ofrece herramientas de exportación, muchas veces necesitas obtener los datos directamente por SQL para más flexibilidad y velocidad, sobre todo en catálogos grandes.</p>

<p>En este artículo aprenderás paso a paso cómo:</p>

<ul>
  <li>Entender la estructura de la base de datos de Magento (productos, categorías, atributos).</li>
  <li>Generar consultas SQL para exportar productos y categorías.</li>
  <li>Preparar datos para integraciones externas (CSV, BI, otras tiendas).</li>
  <li>Evitar errores frecuentes y proteger tu base de datos.</li>
  <li>Optimizar tu tienda para SEO aprovechando estos datos.</li>
</ul>

<p>¡Vamos a ello!</p>

<div style="height:40px;"></div>

<h2>Índice de contenidos</h2>

<ul>
  <li><a href="#por-que-sql">¿Por qué exportar datos con SQL en Magento?</a></li>
  <li><a href="#estructura-bbdd">Estructura de la base de datos de Magento</a></li>
  <li><a href="#exportar-productos">Exportar productos con SQL</a></li>
  <li><a href="#exportar-categorias">Exportar categorías con SQL</a></li>
  <li><a href="#ejemplo-practico">Ejemplo práctico paso a paso</a></li>
  <li><a href="#buenas-practicas">Buenas prácticas y seguridad</a></li>
  <li><a href="#seo-beneficios">Beneficios SEO de trabajar con datos exportados</a></li>
  <li><a href="#conclusion">Conclusión</a></li>
</ul>

<div style="height:40px;"></div>

<h2 id="por-que-sql">¿Por qué exportar datos con SQL en Magento?</h2>

<p>Exportar datos directamente por SQL es útil porque:</p>

<ul>
  <li>Es más rápido que las herramientas de exportación en el backend.</li>
  <li>Permite seleccionar exactamente los datos que necesitas.</li>
  <li>Evitas bloqueos o timeouts en Magento en catálogos grandes.</li>
  <li>Facilita integraciones con sistemas externos.</li>
</ul>

<p>Eso sí, ¡requiere conocimientos técnicos y precaución!</p>

<div style="height:40px;"></div>

<h2 id="estructura-bbdd">Estructura de la base de datos de Magento</h2>

<p>Magento tiene una base de datos compleja. Los productos y categorías se distribuyen en múltiples tablas. Para trabajar con SQL necesitas conocer estas tablas clave:</p>

<table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <th>Tabla</th>
    <th>Descripción</th>
  </tr>
  <tr>
    <td>catalog_product_entity</td>
    <td>Productos (ID, SKU, tipo).</td>
  </tr>
  <tr>
    <td>catalog_category_entity</td>
    <td>Categorías (ID, árbol de jerarquía).</td>
  </tr>
  <tr>
    <td>catalog_product_entity_varchar</td>
    <td>Atributos de texto (nombre, descripción, etc.).</td>
  </tr>
  <tr>
    <td>catalog_product_entity_decimal</td>
    <td>Atributos numéricos (precio, peso, etc.).</td>
  </tr>
  <tr>
    <td>catalog_category_entity_varchar</td>
    <td>Nombres y descripciones de las categorías.</td>
  </tr>
  <tr>
    <td>catalog_category_product</td>
    <td>Relación entre productos y categorías.</td>
  </tr>
</table>

<p>Magento usa un sistema EAV (Entity-Attribute-Value). Por eso, datos como nombres y descripciones no están en la tabla principal, sino en tablas separadas por tipo de dato (varchar, decimal, etc.).</p>

<div style="height:40px;"></div>

<h2 id="exportar-productos">Exportar productos con SQL</h2>

<p>Supongamos que queremos exportar:</p>

<ul>
  <li>ID del producto</li>
  <li>SKU</li>
  <li>Nombre</li>
  <li>Precio</li>
</ul>

<p>Primero, necesitas conocer los IDs de atributos:</p>

<pre class="caja-codigo-blog">
SELECT attribute_id, attribute_code
FROM eav_attribute
WHERE entity_type_id = (
  SELECT entity_type_id
  FROM eav_entity_type
  WHERE entity_type_code = 'catalog_product'
);
</pre>

<p>Esto devuelve un listado como:</p>

<table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <th>attribute_id</th>
    <th>attribute_code</th>
  </tr>
  <tr>
    <td>73</td>
    <td>name</td>
  </tr>
  <tr>
    <td>99</td>
    <td>price</td>
  </tr>
</table>

<p>**Consulta para exportar productos con nombre y precio:**</p>

<pre class="caja-codigo-blog">
SELECT 
    e.entity_id AS product_id,
    e.sku,
    name.value AS name,
    price.value AS price
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_varchar name 
    ON name.entity_id = e.entity_id 
    AND name.attribute_id = 73
LEFT JOIN catalog_product_entity_decimal price 
    ON price.entity_id = e.entity_id 
    AND price.attribute_id = 99;
</pre>

<p>**Explicación línea a línea:**</p>

<ul>
  <li><code>e.entity_id</code>: ID del producto.</li>
  <li><code>e.sku</code>: SKU del producto.</li>
  <li>JOIN con <code>catalog_product_entity_varchar</code> para el nombre.</li>
  <li>JOIN con <code>catalog_product_entity_decimal</code> para el precio.</li>
</ul>

<p>Así puedes exportar un CSV perfectamente usable.</p>

<div style="height:40px;"></div>

<h2 id="exportar-categorias">Exportar categorías con SQL</h2>

<p>Para categorías, el procedimiento es similar. Supongamos que queremos exportar:</p>

<ul>
  <li>ID de la categoría</li>
  <li>Nombre</li>
  <li>Parent ID</li>
</ul>

<p>Consulta SQL:</p>

<pre class="caja-codigo-blog">
SELECT 
    c.entity_id AS category_id,
    v.value AS name,
    c.parent_id
FROM catalog_category_entity c
LEFT JOIN catalog_category_entity_varchar v
    ON c.entity_id = v.entity_id
    AND v.attribute_id = (
      SELECT attribute_id
      FROM eav_attribute
      WHERE attribute_code = 'name'
      AND entity_type_id = (
        SELECT entity_type_id
        FROM eav_entity_type
        WHERE entity_type_code = 'catalog_category'
      )
    );
</pre>

<p>**Explicación:**</p>

<ul>
  <li><code>catalog_category_entity</code>: tabla principal de categorías.</li>
  <li><code>catalog_category_entity_varchar</code>: contiene el nombre de la categoría.</li>
  <li><code>parent_id</code>: indica la jerarquía de la categoría.</li>
</ul>

<div style="height:40px;"></div>

<h2 id="ejemplo-practico">Ejemplo práctico paso a paso</h2>

<p>Imagina que quieres exportar todos tus productos con nombre y precio a un archivo CSV. Aquí te muestro cómo:</p>

<h3>1. Ejecuta la query SQL anterior</h3>

<p>Entra en tu consola MySQL:</p>

<pre class="caja-codigo-blog">
mysql -u user -p database_name
</pre>

<p>Ejecuta la query y exporta a fichero:</p>

<pre class="caja-codigo-blog">
SELECT 
    e.entity_id AS product_id,
    e.sku,
    name.value AS name,
    price.value AS price
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_varchar name 
    ON name.entity_id = e.entity_id 
    AND name.attribute_id = 73
LEFT JOIN catalog_product_entity_decimal price 
    ON price.entity_id = e.entity_id 
    AND price.attribute_id = 99
INTO OUTFILE '/var/lib/mysql-files/productos.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
</pre>

<p>¡Y tendrás tu CSV listo!</p>

<div style="height:40px;"></div>

<h2 id="buenas-practicas">Buenas prácticas y seguridad</h2>

<ul>
  <li>Siempre haz backup antes de ejecutar consultas complejas.</li>
  <li>Prueba las queries primero en un entorno de staging.</li>
  <li>No des permisos de escritura si solo necesitas leer datos.</li>
  <li>Verifica atributos (IDs) antes de escribir JOINs.</li>
  <li>Si vas a usar OUTFILE, verifica permisos y rutas seguras.</li>
</ul>

<p>Magento es delicado. ¡Mejor prevenir que lamentar!</p>

<div style="height:40px;"></div>

<h2 id="seo-beneficios">Beneficios SEO de trabajar con datos exportados</h2>

<p>Exportar datos es clave para:</p>

<ul>
  <li>Revisar nombres de productos y categorías para optimizar keywords.</li>
  <li>Auditar categorías vacías o duplicadas.</li>
  <li>Crear feeds más rápidos para Google Shopping o marketplaces.</li>
</ul>

<p>Una exportación bien hecha puede ayudarte a encontrar oportunidades SEO que se pierden en la interfaz de Magento.</p>

<div style="height:40px;"></div>

<h2 id="conclusion">Conclusión</h2>

<p>Exportar productos y categorías en Magento mediante SQL es una habilidad imprescindible para ecommerce grandes o agencias. Te ahorra tiempo, facilita integraciones y te permite mantener un control absoluto sobre tu catálogo.</p>

<p><strong>¿Necesitas exportar tu catálogo de Magento de forma segura y optimizada?</strong> ¡<strong>Contáctanos y te ayudamos!</strong></p>

<div style="height:40px;"></div></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/exportar-productos-y-categorias-por-sql-en-magento/">Exportar productos y categorías por SQL en Magento</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/exportar-productos-y-categorias-por-sql-en-magento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
