> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atriby.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Problemas no script de UTMs

> Como depurar carregamento, propagação, storage, forms e iframes.

## O script não carregou

Confirme no DevTools:

* A tag `<script>` está no HTML final.
* A URL `https://app.atriby.com/scripts/utms/latest.js` retorna `200`.
* Nenhuma política de CSP da sua página bloqueia o script.
* O snippet não tem token ou atributos internos.

## UTM não propagou

Verifique se a URL de entrada tinha UTMs ou click IDs. Sem parâmetros na visita, não há o que propagar.

No console:

```js theme={null}
window.Atriby?.getState()
```

Se `firstTouch` e `lastTouch` estiverem vazios, a visita não capturou parâmetros.

## Checkout não recebeu parâmetros

Confirme:

* O link/form/iframe usa URL `http` ou `https`.
* `data-checkout-domains` permite o domínio do checkout.
* O clique aconteceu depois do script inicializar.
* O destino não sobrescreve a URL depois do clique.

## O link já tinha UTM

O comportamento esperado é link-wins: se o link já tem `utm_source`, o script não substitui esse valor.

## Browser bloqueou storage

Em contexts privados, iframes sandbox ou bloqueios de storage, o script tenta usar cookie de fallback. Verifique cookies com prefixo `_atb_utms`.

## Forms e iframes

O script atualiza `form[action]` e `iframe[src]` quando a URL é elegível. Se o seu framework troca esses atributos dinamicamente, o script observa mudanças, mas vale testar o fluxo real no navegador.

## Teste manual

Abra uma URL com UTMs:

```text theme={null}
https://sua-loja.com/oferta?utm_source=facebook&utm_medium=cpc&utm_campaign=teste
```

Depois rode:

```js theme={null}
window.Atriby.appendTo("https://checkout.sua-loja.com/pagar")
```

O retorno deve incluir os parâmetros capturados.
