laravel-fmd-adops maintained by agenciafmd
Laravel - F&MD Adops Webhook
- Envia as conversões para o Webhook da F&MD Adops
Instalação
sail composer require agenciafmd/laravel-fmd-adops:dev-master
Configuração
Primeiro, vamos solicitar a url do Webhook ao time de Adops.
Colocamos esta url no nosso .env
FMD_ADOPS_WEBHOOK=https://adops.fmd.digital/api/webhooks/generic/xxxxxxx
FMD_ADOPS_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Uso
Envie os campos no formato de array para o SendConversionsToFmdAdopsWebhook.
Para que o processo funcione pelos jobs, é preciso passar os valores dos cookies conforme mostrado abaixo.
use Agenciafmd\FmdAdops\Jobs\SendConversionsToFmdAdopsWebhook;
use Illuminate\Support\Facades\Cookie;
$data['email'] = 'irineu@fmd.ag';
$data['nome'] = 'Irineu Junior';
SendConversionsToFmdAdopsWebhook::dispatch($data + [
'identificador' => 'seja-um-parceiro',
'utm_campaign' => Cookie::get('utm_campaign', ''),
'utm_content' => Cookie::get('utm_content', ''),
'utm_medium' => Cookie::get('utm_medium', ''),
'utm_source' => Cookie::get('utm_source', ''),
'utm_term' => Cookie::get('utm_term', ''),
'gclid_' => Cookie::get('gclid', ''),
'cid' => Cookie::get('cid', ''),
])
->delay(5)
->onQueue('low');
Note que no nosso exemplo, enviamos o job para a fila low.
Certifique-se de estar rodando no seu queue:work esteja semelhante ao abaixo.
php artisan queue:work --tries=3 --delay=5 --timeout=60 --queue=high,default,low
Uso em página HTML (JavaScript)
Caso precise enviar a conversão direto de uma página HTML, sem passar pelo Laravel, existe uma versão em JavaScript com o mesmo contrato do job, disponível em js/fmd-adops.js.
Inclua o script na página e informe a URL do Webhook e o secret na hora de enviar.
<script src="js/fmd-adops.js"></script>
<form id="form-conversao">
<label>Email <input type="email" name="email" required /></label><br />
<label>Nome <input type="text" name="nome" required /></label><br />
<button type="submit">Enviar</button>
</form>
<script src="js/fmd-adops.js"></script>
<script>
const FMD_ADOPS_WEBHOOK = 'https://adops.fmd.digital/api/webhooks/generic/xxxxxxx';
const FMD_ADOPS_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
document.getElementById('form-conversao').addEventListener('submit', async function (event) {
event.preventDefault();
const formData = new FormData(event.target);
const data = {
email: formData.get('email'),
nome: formData.get('nome'),
identificador: 'seja-um-parceiro',
...FmdAdops.collectUtmCookies(),
};
try {
await FmdAdops.send(data, {
webhook: FMD_ADOPS_WEBHOOK,
secret: FMD_ADOPS_SECRET,
delay: 5000,
onError: (error) => {
alert('Não foi possível enviar sua conversão. Tente novamente mais tarde.');
},
});
alert('Conversão enviada com sucesso!');
} catch (error) {
// já tratado em onError; aqui só evita o "Uncaught (in promise)"
}
});
</script>
Note que, assim como no job, o envio tenta novamente em caso de falha (5 tentativas, com 60 segundos de intervalo).
Atenção: aqui o secret fica visível no código-fonte da página, já que a assinatura é feita no navegador. Use esse método apenas quando essa exposição for aceitável para o seu caso — caso contrário, prefira o job PHP mostrado acima.