Saltar a contenido

Emails transaccionales

A tener en cuenta

Para que un envío sea tratado técnicamente como transaccional es imprescindible que el remitente esté configurado con la finalidad "Envíos transaccionales".

Para los envíos de correo a un único contacto se facilitan unos métodos específicos con el fin de optimizar peticiones y facilitar la integración.

Nada nos impide enviar un email a un único contacto siguiendo los mismos pasos que si utilizásemos la interfaz web de teenvio:

  • Creamos o actualizamos el contacto
  • Creamos la creatividad o pieza
  • Lanzamos el email

Pero si utilizamos este método rápidamente nos daremos cuenta de varios problemas:

  • Latencia: Se generan 3 peticiones por cada envío a un único contacto
  • Acumulación de creatividades: Estaríamos generando una creatividad o pieza por cada envío

Para solucionar esto tenemos varias herramientas:

No generar creatividades en cada envío

Es útil hacer un trabajo de análisis en el que podamos concretar unas tipologías de comunicaciones. Por ejemplo, en el caso de una tienda online podemos tener:

  • Email de alta
  • Email de recuperación de contraseña
  • Email de compra
  • Email de envío de productos

Podemos entonces generar 4 creatividades dentro de teenvio a modo de plantillas con sus respectivos comodines, con la comodidad de poder cambiar esas plantillas en cualquier momento sin alterar nuestras integraciones.

Una vez tenemos nuestras plantillas, las utilizamos en la petición de envío agregando, si es neceario, los datos de las variables de envío

Utilizar la petición unificada para el envío

Es posible ir un paso más allá y utilizar la petición POST /bulkcampaign/ que puede unificar las peticiones de creación de pieza, creación o modificación de contacto y lanzamiendo del email, igual que se explica en el punto anterior, es muy recomendable utilizar unas plantillas creadas previamente en lugar de generar el conenido del email en cada petición, será más ágil y sencillo de mantener.

Ejemplo

export TE_TOKEN='Your token'

curl -X POST https://app.teenvio.com/v4/public/api/rest/v3/bulkcampaign/ \
-H "X-Token: $TE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '
{
    "rid" : 1,
    "name" : "transactional test from api",
    "subject" : "subject transactional email",
    "recipients" : [
        "contact1@domain.com",
        "contact2@domain.com"
    ],
    "vars" : {
        "descuento" : 20,
        "caducidad" : "noviembre"
    },
    "pid" : 26
}'
<?php

$token = 'Your token';

$url_base = 'https://app.teenvio.com/v4/public/api/rest/v3'

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_URL => $url_base.'/bulkcampaign/',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'X-Token: '.$token,
        'Content-Type: application/json'
    ),
    CURLOPT_POSTFIELDS => '
        {
            "rid" : 1,
            "name" : "transactional test from api",
            "subject" : "subject transactional email",
            "recipients" : [
                "contact1@domain.com",
                "contact2@domain.com"
            ],
            "vars" : {
                "descuento" : 20,
                "caducidad" : "noviembre"
            },
            "pid" : 26
        }
    '
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
import requests

token = 'Your token'

url_base = 'https://app.teenvio.com/v4/public/api/rest/v3'

my_headers = {
    'Accept' : 'application/json',
    'X-Token' : token,
    'Content-Type' : 'application/json'
}
post_request = {
    "rid" : 1,
    "name" : "transactional test from api",
    "subject" : "subject transactional email",
    "recipients" : [
        "contact1@domain.com",
        "contact2@domain.com"
    ],
    "vars" : {
        "descuento" : 20,
        "caducidad" : "noviembre"
    },
    "pid" : 26
}

response = requests.post(url_base+"/bulkcampaign/", json=post_request, headers=my_headers)

print(response.json())
const axios= require('axios');

const token = 'Your token';

const url_base = 'https://app.teenvio.com/v4/public/api/rest/v3';

const my_headers = {
    'Accept' : 'application/json',
    'X-Token' : token
};

const post_request = {
    "rid" : 1,
    "name" : "transactional test from api",
    "subject" : "subject transactional email",
    "recipients" : [
        "contact1@domain.com",
        "contact2@domain.com"
    ],
    "vars" : {
        "descuento" : 20,
        "caducidad" : "noviembre"
    },
    "pid" : 26
}

axios.post(url_base+'/bulkcampaign/', post_request, {headers:my_headers}).then(resp => {
    console.log(resp.data);
});

Respuesta:

{
    "action": "send_bulk_campaign",
    "time": "2022-10-26 14:39:29",
    "status": "OK",
    "response": 1334,
    "code": 0
}