Cómo integrar WooCommerce con SendGrid: SMTP, API y eventos webhooks
Conecta WooCommerce con SendGrid paso a paso: API Key, SMTP, autenticación de dominio, eventos webhooks, errores comunes y configuración de SPF, DKIM y DMARC.
SendGrid (Twilio SendGrid) es uno de los proveedores transaccionales más usados del mundo. Su fuerte no es el marketing automation visual (ahí Klaviyo, Mailchimp y Brevo le pasan por delante) sino la fiabilidad y velocidad para enviar transaccional a gran escala. Para WooCommerce es una elección sólida cuando lo que importa es que la confirmación de pedido, el password reset o la factura lleguen siempre, sin retrasos. Esta guía cubre la configuración real: API Key, SMTP, autenticación de dominio, webhooks de eventos y cómo blindar la entregabilidad.
Para qué sirve la integración WooCommerce ↔ SendGrid
Casos de uso típicos:
- SMTP transaccional para WooCommerce: confirmación de pedido, factura, password reset, registro de cuenta.
- API HTTP para enviar emails con plantillas dinámicas (Twilio Templates).
- Webhooks de eventos (delivered, bounced, opened, clicked) para tracking propio.
- Marketing campaigns desde el panel SendGrid (función adicional, menos potente que Klaviyo).
A diferencia de Brevo, SendGrid se centra mucho más en el lado transaccional y en el control técnico. Es la elección razonable si tu prioridad es entregabilidad sobre marketing visual.
Requisitos previos
- WooCommerce 6.0+ y WordPress 6.0+.
- PHP 7.4+.
- Cuenta SendGrid activa (Free, Essentials, Pro o Premier).
- API Key con permisos de Mail Send y Email Activity.
- Dominio de envío con acceso al DNS para añadir CNAMEs de Domain Authentication.
- Configurar SPF, firma DKIM y política DMARC preparados.
Domain Authentication en SendGrid
Antes de cualquier integración, autentica el dominio. Sin esto, los emails salen con remitente “via sendgrid.net” y la entregabilidad cae.
- SendGrid → Settings → Sender Authentication → Authenticate Your Domain.
- Selecciona tu DNS provider (Cloudflare, Route 53, GoDaddy, etc.).
- Indica el dominio raíz:
tutienda.com. - Activa “Use a custom return path” → introduce subdominio:
em1234.tutienda.com. - SendGrid genera CNAMEs:
em1234.tutienda.com CNAME u1234.wl.sendgrid.net
s1._domainkey.tutienda.com CNAME s1.domainkey.u1234.wl.sendgrid.net
s2._domainkey.tutienda.com CNAME s2.domainkey.u1234.wl.sendgrid.net
- Publica los CNAMEs.
- Verifica desde el panel.
Esto autentica DKIM y MAIL FROM. Combinado con tu SPF principal, deja DMARC alineado.
Vía A: SMTP con plugin WP Mail SMTP
Es el camino más fácil para WooCommerce básico.
- Instala “WP Mail SMTP by WPForms”.
- Configuración → Mailer → SendGrid.
- Pega la API Key.
- From email:
[email protected](debe ser sender verificado o estar en dominio autenticado). - From name: “Tu Tienda”.
- Force From: activa.
- Envía test desde la pestaña Email Test.
WP Mail SMTP también tiene logs propios; útil para auditoría.
Configuración SMTP manual
Si prefieres SMTP nativo (sin API), en cualquier plugin SMTP usa:
Servidor: smtp.sendgrid.net
Puerto: 587 (STARTTLS) o 465 (SSL)
Usuario: apikey (literalmente la palabra "apikey")
Password: SG.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Vía B: API HTTP con plantillas dinámicas
Para tiendas que quieren plantillas pulidas y trackable, la API es preferible.
- SendGrid → Email API → Dynamic Templates → Create Template.
- Diseña con el editor visual o pega HTML.
- Define variables:
{{order_number}},{{customer_first_name}},{{items}}. - Anota el Template ID (
d-xxxxxx).
Llamada desde WooCommerce:
add_action( 'woocommerce_order_status_processing', 'enviar_confirmacion_sendgrid', 10, 1 );
function enviar_confirmacion_sendgrid( $order_id ) {
$order = wc_get_order( $order_id );
$items = [];
foreach ( $order->get_items() as $item ) {
$items[] = [
'name' => $item->get_name(),
'qty' => $item->get_quantity(),
'total' => wc_price( $item->get_total() ),
];
}
$body = wp_json_encode( [
'from' => [ 'email' => '[email protected]', 'name' => 'Tu Tienda' ],
'personalizations' => [ [
'to' => [ [ 'email' => $order->get_billing_email() ] ],
'dynamic_template_data' => [
'order_number' => $order->get_order_number(),
'customer_first_name' => $order->get_billing_first_name(),
'items' => $items,
'total' => wc_price( $order->get_total() ),
],
] ],
'template_id' => 'd-xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
] );
wp_remote_post( 'https://api.sendgrid.com/v3/mail/send', [
'headers' => [
'Authorization' => 'Bearer ' . SENDGRID_API_KEY,
'Content-Type' => 'application/json',
],
'body' => $body,
] );
}
Esto reemplaza el email nativo de WooCommerce con una plantilla personalizada gestionada en SendGrid.
Eventos webhooks: tracking propio
SendGrid puede notificar a tu servidor de cada evento (entregado, bounced, abierto, clicado).
- SendGrid → Settings → Mail Settings → Event Webhook.
- URL:
https://tutienda.com/wp-json/sendgrid/v1/events. - Selecciona eventos: Processed, Delivered, Bounce, Dropped, Open, Click, Unsubscribe.
Endpoint en WP:
add_action( 'rest_api_init', function () {
register_rest_route( 'sendgrid/v1', '/events', [
'methods' => 'POST',
'callback' => 'procesar_evento_sendgrid',
'permission_callback' => '__return_true', // valida con firma
] );
} );
function procesar_evento_sendgrid( $request ) {
$events = $request->get_json_params();
foreach ( $events as $e ) {
$email = $e['email'];
$type = $e['event'];
// gestiona bounces, complaints, etc.
if ( in_array( $type, [ 'bounce', 'dropped' ], true ) && $e['type'] === 'bounce' ) {
// marca al usuario para no enviar
}
}
return new WP_REST_Response( [ 'ok' => true ], 200 );
}
Activa la firma del webhook (Signed Event Webhook) y valida la firma en el endpoint para evitar spoof.
Configuración mínima recomendada
Sender verification
SendGrid exige verificar cada From, salvo que esté en dominio autenticado. Recomendado:
- Autentica el dominio (CNAMEs).
- Usa subdominios para diferentes flujos:
[email protected],[email protected].
Suppression lists
SendGrid mantiene varias listas de supresión:
- Bounces.
- Spam reports.
- Unsubscribes globales.
- Group unsubscribes (si usas grupos).
Revisa periódicamente y ajusta. No reenvíes a contactos en bounces permanentes.
IP dedicada
A partir de Pro plan, se puede asignar IP dedicada. Solo merece la pena con > 1M emails/mes y plan de warming propio.
Errores comunes y soluciones
”Los emails llegan a spam”
Causas:
- Dominio no autenticado: emails salen con
via sendgrid.net. Solución: completar Domain Authentication. - SPF no incluye
include:sendgrid.net. Añade. - DMARC en
quarantineorejectsin alinear DKIM/SPF: revisa que DKIM pasa con header.i =@tutienda.com.
”API devuelve 401 Unauthorized”
API Key revocada o sin permisos. Genera otra con scopes Mail Send y Suppressions Read.
”API devuelve 403 Forbidden”
El sender no está verificado o no está en dominio autenticado. Verifica.
”Webhook no recibe eventos”
- URL no accesible públicamente: revisa firewall.
- Tu endpoint devuelve 5xx: SendGrid reintenta y luego desactiva. Asegúrate de que devuelve 200 incluso si la lógica interna falla.
- Validación de firma rechaza: verifica con la public key correcta.
”Bounces altos en la primera campaña”
Si reactivas una lista vieja, suele ser limpieza pendiente. Pasa la lista por verificación o haz warming progresivo. Revisa bounces SMTP para gestionar bien.
”WooCommerce sigue usando el SMTP antiguo”
Si tienes varios plugins SMTP, el último activado gana. Quita los redundantes. Comprueba en wp-config.php que no hay constantes SMTP forzadas.
Verificación: ¿todo funciona?
- Test SMTP/API. Manda un email de prueba. SendGrid → Activity Feed: debes ver
deliveredsegundos después. - Compra de prueba. Pedido con tu email. Recibes confirmación con el From correcto y plantilla esperada.
- Cabeceras. En el email recibido:
Authentication-Results: mx.google.com;
dkim=pass [email protected] header.s=s1
spf=pass smtp.mailfrom=em1234.tutienda.com
dmarc=pass header.from=tutienda.com
Si SPF da softfail, revisa que el return path está autenticado.
Implicaciones de entregabilidad
SendGrid es muy estricto con bounces y complaints. Una bounce rate sostenida > 5 % o complaint > 0.1 % puede llevar a suspensión de la cuenta.
Recomendaciones:
- Subdominio dedicado para SendGrid (
em1.tutienda.com). - Política DMARC en
p=nonedurante 2-4 semanas. Verifica que SPF y DKIM pasan en reportes RUA. Despuésquarantineoreject. - Activa List-Unsubscribe one-click. Útil incluso en transaccional con confirmaciones de pedido (RFC 8058).
- Para campañas masivas, warming progresivo desde IP nueva.
- Monitoriza bounces SMTP y revisa evitar spam en Gmail.
- Si vienes de Amazon SES y migras a SendGrid, calienta el nuevo emisor durante mínimo 2 semanas.
SendGrid vs alternativas
- SendGrid vs Postmark. Postmark más rápido en placement de transaccional, SendGrid más completo y barato en volumen alto.
- SendGrid vs Brevo. Brevo más amigable para usuarios no técnicos y con marketing decente; SendGrid mejor en volumen y API pura.
- SendGrid vs Amazon SES. SES más barato, SendGrid más completo y con mejor UI. SES requiere más cuidado técnico.
Recursos relacionados
Si quieres profundizar, prueba estas herramientas gratuitas: Domain Health, mail tester, validador SPF y validador DMARC.
¿Necesitas que alguien lleve tu canal de email entero? Abalola Mail es la agencia de email marketing para ecommerce de Abalola para ecommerce: estrategia, producción y operación del stack sobre Klaviyo, Mailchimp o Brevo.