SteerAds
GuideOptimisationGoogle Ads

Offline conversions Google Ads: 2026

O Smart Bidding do Google Ads otimiza com base nos dados que lhe dás. Se a tua conversão real acontece off-site — em Salesforce, HubSpot ou um CRM custom — tens de a empurrar de volta. Este guia operacional detalha o fluxo GCLID completo, configuração do CRM, os dois métodos de upload (UI e API), Enhanced Conversions Leads, e os 6 erros que perdem 40% de sinal.

Matt
MattTracking & Data Lead
···12 min de leitura

B2B SaaS com upload de conversões offline: +18 a +28% de ROI mediano em Google Ads em 90 dias, a orçamento constante. Contudo, 55 a 67% das empresas B2B SaaS em França não praticam qualquer upload em 2026 — o Smart Bidding otimiza às cegas em MQLs em bruto e poluídos, longe da receita real. Fechar o loop de atribuição é o maior quick-win disponível para uma conta B2B madura.

Em 2026, ninguém deveria estar a pilotar uma conta Google Ads sem empurrar conversões offline de volta — e contudo, nas contas auditadas pelas nossas equipas, 55-67% dos anunciantes B2B SaaS em França não praticam qualquer upload offline (per source). Consequência direta: o Smart Bidding otimiza em proxies fracos (MQLs em bruto, submissões de formulário, downloads de white paper) e confunde o tráfego que enche o funil com o tráfego que efetivamente gera receita.

Este guia desmonta a metodologia completa: fluxo GCLID → CRM → Google Ads, configuração em Salesforce/HubSpot/custom, upload via UI ou API, alternativa Enhanced Conversions Leads, escolha da etapa certa (MQL vs SQL vs deal won), e os 6 erros que arruínam o upload offline. Ganho mediano observado após implementação limpa: +18 a +28% de ROI mediano na conta Google Ads. Para o contexto estratégico B2B, segue com a nossa estratégia Google Ads B2B SaaS.

O que é uma conversão offline e porque é crítica?

Uma conversão offline é uma ação de valor que acontece fora do teu site: um deal assinado por um comercial após um ciclo de 3 semanas, uma reunião presencial confirmada, um upgrade manual registado no teu back-office, uma subscrição ativada num call center. Em todos estes casos, o Google Ads não pode observar o evento de conversão — tens de a empurrar manualmente de volta para fechar o loop de atribuição.

O mecanismo é simples na teoria: cada clique num anúncio Google Ads com auto-tagging ativado recebe um GCLID (Google Click ID) único, transmitido via o parâmetro de URL ?gclid=.... Se capturares esse GCLID na tua landing, o propagares para o teu CRM, e o reenviares para o Google Ads acompanhado da conversão real (deal won, SQL qualificado, etc.), o Google Ads anexa a conversão ao clique original — e o Smart Bidding aprende com o real valor de negócio, não com um proxy.

Porque é crítico em 2026? Porque o Smart Bidding (Target CPA, Target ROAS, Max Conversion Value) tornou-se a norma, e o algoritmo é só tão bom quanto os dados que recebe. Alimentar o Smart Bidding com MQLs em bruto — sinais fracos e hiperpoluídos por tráfego de bots, visitantes curiosos, estudantes — equivale a pedir-lhe para otimizar com base em ruído. Documentação oficial de referência: Google Ads support sobre conversion imports.

Insight chave :

no nosso benchmark sectorial 2025, as empresas B2B SaaS que praticam upload offline (SQL ou deal won) ganham +18 a +28% de ROI mediano em Google Ads em 90 dias — a orçamento constante. A razão não é magia: o Smart Bidding simplesmente para de regar lixo MQL e foca-se nos cliques que geram pipeline.

Inversamente, 52-64% das empresas B2B SaaS em França não praticam qualquer upload offline em 2026 (per source) — é um dos performance gaps mais fáceis de fechar observados em auditoria. A complexidade técnica é moderada (algumas horas de setup), a dependência de fornecedor é zero, e o ganho é mensurável em 30 dias. Para o tracking online pré-requisito, vê o nosso guia de conversion tracking.

Qual é o fluxo completo GCLID → CRM → Google Ads?

O fluxo end-to-end decompõe-se em 7 passos técnicos. Cada um tem de funcionar para que os dados retornem — uma única falha quebra a cadeia inteira e muitas vezes não terás erro visível (essa é a armadilha clássica).

  1. Clique no anúncio. O utilizador clica no teu anúncio Google Ads. Se o auto-tagging estiver ativo, a Google adiciona automaticamente o parâmetro gclid ao URL de destino. Sem auto-tagging, sem GCLID, ponto final.
  2. Captura na landing. Um script JS lê window.location.search, extrai o GCLID via URLSearchParams, e armazena-o num cookie first-party (duração de 90 dias) mais localStorage para sobreviver a navegações.
  3. Injeção no formulário. Todos os teus formulários de lead (demo, contacto, trial, pricing) recebem um campo gclid hidden pré-preenchido a partir do cookie antes da submissão.
  4. Receção no CRM. O CRM (Salesforce, HubSpot, ou custom) recebe o GCLID acompanhando o resto do lead e armazena-o num campo dedicado Google_GCLID__c.
  5. Propagação Lead → Opportunity. Quando o Lead é convertido em Opportunity (Salesforce) ou o Contact é associado a um Deal (HubSpot), um workflow automático copia o GCLID para o novo objeto.
  6. Trigger de conversão. Quando a opportunity passa a Closed Won (ou à etapa que escolheres), uma exportação CSV ou uma chamada de API constrói a linha de conversão: GCLID + timestamp + valor + nome da conversão.
  7. Upload para o Google Ads. Via UI (CSV manual) ou API (automatizado). O Google Ads faz match do GCLID com o histórico de cliques, atribui a conversão, e o Smart Bidding integra o sinal no próximo ciclo de otimização (latência: 6 a 24h).
Fluxo GCLID → CRM → Google Ads em 7 passos1. Clique anúncioGCLID injetado2. LandingCaptura JS+ cookie 90d3. FormulárioHidden fieldgclid=...4. CRM LeadCampo customGCLID guardado5. Deal wonWorkflow copiaGCLID propagado6. UploadUI ou APIGoogle Ads7. Smart Bidding aprende com a conversão real+18 a +28% de ROI mediano — amostra de mais de 2.000 contasGoogle AdsSiteCRMGoogle Ads

O ponto de fricção mais frequente: passo 5 (propagação Lead → Opportunity). Em 38% das contas auditadas, o GCLID é corretamente capturado no Lead mas desaparece na conversão interna — precisas de um workflow explícito para o copiar. É a auditoria mais rápida a correr antes de qualquer outro debug.

Como configurar o CRM (Salesforce, HubSpot, custom)?

Cada CRM tem a sua ginástica própria, mas a lógica é idêntica: um campo custom, um workflow de propagação, e uma captura JS standardizada do lado do site.

Salesforce

  • Cria um campo custom Google_GCLID__c (Text 200) no objeto Lead.
  • Cria o mesmo campo no objeto Opportunity.
  • Process Builder / Flow: na conversão Lead → Opportunity, copia Lead.Google_GCLID__c para Opportunity.Google_GCLID__c.
  • Adiciona o campo ao layout da Opportunity para auditoria manual.
  • Opcional: campo na Account se houver multiopportunities por account.

HubSpot

  • Cria uma propriedade custom gclid (Single-line text) no objeto Contact.
  • Cria a mesma propriedade no objeto Deal.
  • Workflow: "When a Deal is created associated to a Contact" → copia contact.gclid para deal.gclid.
  • Exportação CSV ou usa a integração nativa HubSpot ↔ Google Ads para upload automatizado.

CRM custom (Postgres, MySQL, Airtable)

  • Migração SQL: ALTER TABLE leads ADD COLUMN gclid varchar(200);
  • Mesma adição na tabela opportunities ou deals.
  • Trigger SQL ou lógica aplicacional para propagar o GCLID na criação do deal associado.
  • Cron job diário: extrai os deals won das últimas 24h, monta o CSV ou a chamada API, envia para o Google Ads.

Captura JS no lado da landing (universal)

Este snippet funciona qualquer que seja o CRM — captura o GCLID na chegada, armazena-o, e pré-preenche os hidden fields. Duração de validade do GCLID para upload: 90 dias máximo.

// A incluir em todas as páginas (tag GTM ou script global)
(function () {
  const gclid = new URLSearchParams(window.location.search).get('gclid');
  if (gclid) {
    const expires = new Date(Date.now() + 90 * 86400000).toUTCString();
    document.cookie = `_gcl_aw=GCL.${Date.now()}.${gclid}; expires=${expires}; path=/`;
    localStorage.setItem('gclid', gclid);
  }
  // Pré-preenche todos os hidden fields name="gclid"
  const stored = localStorage.getItem('gclid');
  if (stored) {
    document.querySelectorAll('input[name="gclid"]').forEach(i => i.value = stored);
  }
})();

Para ir mais longe sobre tracking completo (GA4, Consent Mode, Enhanced Conversions online), vê o nosso guia de conversion tracking Google Ads.

Como fazer upload manualmente via UI Google Ads?

O upload via UI é o método mais simples, adequado a volumes moderados (menos de 10.000 conversões por mês) ou a fases iniciais. Caminho na interface: Tools > Conversions > Uploads > + New import. Carregas um ficheiro CSV ou Google Sheets construído de acordo com um schema rigoroso.

Schema CSV para upload GCLID

A primeira linha tem de declarar o fuso horário usado no ficheiro. A segunda linha lista as colunas.

Parameters:TimeZone=+0100
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
CjwKCAi...XYZ,SQL Qualified,2026-04-18 14:32:00+0100,1200,EUR
CjwKCAi...ABC,SQL Qualified,2026-04-18 15:47:00+0100,2400,EUR
CjwKCAi...DEF,Deal Won,2026-04-19 09:15:00+0100,18000,EUR

Regras a respeitar absolutamente:

  • Formato de timestamp: yyyy-mm-dd hh:mm:ss+zzzz com offset explícito. Sem hora local sem offset.
  • Nome da conversão: tem de corresponder exatamente a uma conversion action existente em Google Ads (case-sensitive).
  • Valor: montante em unidades (não cêntimos). 1200 = 1.200 EUR.
  • Janela de 90 dias: o timestamp da conversão tem de ser inferior a 90 dias após o clique original.
  • Uma linha por conversão: sem agregação, sem GCLID duplicado (a menos que sejam 2 conversões verdadeiramente distintas).

Após o upload, a UI mostra um relatório de validação em 10 a 60 segundos. As linhas rejeitadas são listadas com a razão: GCLID desconhecido, timestamp inválido, janela ultrapassada, nome de conversão inexistente. Corrige e reenvia apenas as linhas rejeitadas. Cadência recomendada: upload semanal segunda-feira de manhã para um ciclo Smart Bidding limpo. Na prática, upload semanal vs diário = impacto idêntico no ROI; upload mensal = -5% de eficácia devido ao lag do sinal.

Como automatizar o upload via Google Ads API?

Acima de 10.000 conversões offline por mês, ou a partir do momento em que o upload manual se torna um ponto de atrito humano (esquecimentos, atrasos, erro de CSV), automatizar via Google Ads API é a resposta certa. As bibliotecas oficiais cobrem PHP, Java, Python, Ruby, .NET, Perl. O endpoint dedicado é ConversionUploadService.uploadClickConversions. Documentação: guia oficial developers.google.com.

Arquitetura típica

  • Fonte: CRM (Salesforce, HubSpot, Postgres).
  • Job scheduler: cron Linux, GitHub Actions, Cloud Scheduler, ou qualquer orquestrador.
  • Frequência: diário às 2h (equilíbrio frescura/carga).
  • Query: extrair as opportunities closed won das últimas 24h com GCLID não vazio.
  • Auth: service account Google Ads API (OAuth2) + developer token.
  • Chamada: batch de até 2.000 conversões por request, retry exponencial em erros 429/500.
  • Logging: persistir resultados (aceites / rejeitados / razões) para monitoring.

Snippet Python (esqueleto)

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage("google-ads.yaml")
service = client.get_service("ConversionUploadService")

conversions = []
for row in deals_won_last_24h:
    c = client.get_type("ClickConversion")
    c.conversion_action = f"customers/{CID}/conversionActions/{ACTION_ID}"
    c.gclid = row["gclid"]
    c.conversion_date_time = row["won_at_iso"]   # ex: 2026-04-18 14:32:00+0100
    c.conversion_value = row["amount_eur"]
    c.currency_code = "EUR"
    conversions.append(c)

response = service.upload_click_conversions(
    customer_id=CID,
    conversions=conversions,
    partial_failure=True,
)

A flag partial_failure=True é crítica — sem ela, uma única linha inválida faz falhar o batch inteiro. Com ela, a Google aceita as válidas e devolve erros detalhados para as inválidas. Para um exemplo mais amplo de pilotagem inspirado na mesma lógica de automação, vê o nosso módulo SteerAds Auto-otimização.

Quando preferir Enhanced Conversions Leads ao GCLID?

Introduzido pela Google em 2023 e amplamente implantado desde 2024, o Enhanced Conversions for Leads (ECL) permite-te importar conversões offline sem nunca armazenar um GCLID. Princípio: o teu sistema faz hash do email do lead (ou do telefone) em SHA-256 antes de enviar para a Google, que faz match desse hash com utilizadores Google autenticados. Documentação oficial em ads.google.com.

Vantagens vs fluxo GCLID clássico

  • Setup 3× mais rápido: sem GCLID para capturar, sem cookie, sem workflow de propagação no CRM. Apenas um hash de email.
  • Resiliente à perda de GCLID: troca de dispositivo, navegação privada, cookie expirado — ECL funciona na mesma.
  • Cobertura mais larga: capta também utilizadores que não clicaram num anúncio recentemente mas estão expostos ao ecossistema Google.
  • Conformidade RGPD sólida: hashing SHA-256 do lado do remetente, sem PII em texto simples.

Payload típico (API)

{
  "conversion_action": "customers/CID/conversionActions/ACTION_ID",
  "conversion_date_time": "2026-04-18 14:32:00+0100",
  "conversion_value": 1200,
  "currency_code": "EUR",
  "user_identifiers": [
    { "hashed_email": "b3d2...sha256" }
  ]
}

Ganho de sinal observado no nosso painel sectorial: Enhanced Conversions Leads captura 85 a 92% do ganho offline clássico, por um custo de setup 3× inferior. Para um anunciante que ainda não tem fluxo GCLID em vigor, é quase sempre o ponto de entrada certo em 2026.

Regra prática :

se estiveres a partir do zero, começa por Enhanced Conversions Leads — é 3× mais rápido de configurar e captura ~90% do sinal offline clássico. Passa para o fluxo GCLID completo apenas se já tiveres um CRM maduro e quiseres o gold standard em precisão. Os dois podem coexistir (ECL como primária Smart Bidding, GCLID como auditoria secundária).

Deves fazer upload de MQL, SQL ou deal won?

Escolher a etapa de conversão certa é a escolha que determina 70% da eficácia final do teu setup offline. Fazer upload na etapa errada = Smart Bidding mal calibrado, mesmo com um fluxo técnico perfeito. Matriz de decisão:

Regra de dois níveis: faz upload de uma etapa de microconversão (SQL qualificado ou demo agendada) como conversão primária para a otimização Smart Bidding, e uma etapa de macroconversão (deal won) como conversão secundária para relatórios de negócio. A micro traz volume + frescura (Smart Bidding aprende rápido), a macro traz precisão de negócio (pilotas o ROI real).

Cuidado com a armadilha do só deal won: numa B2B SaaS mediana em França, um volume de 10 a 50 deals won/mês nunca permite ao Smart Bidding sair da fase de aprendizagem (limiar Google: 30 conversões por 30 dias mínimo por conversion action). Upload exclusivo em deal won = algoritmo bloqueado em exploração infinita. Para a lógica Smart Bidding associada, vê o nosso guia Smart Bidding.

Que erros arruínam um upload de conversões offline?

Estes 6 erros representam 78% dos casos de underperformance de upload offline observados em auditoria. Nenhum é complexo de corrigir — basta saber onde olhar.

  1. Auto-tagging Google Ads desativado. Sem auto-tagging ao nível da conta, nenhum GCLID é injetado nos URLs. A cadeia inteira não produz nada. Observado em 12% das contas auditadas. Fix: Account Settings > Tracking Settings > Enable auto-tagging. Espera 24h, depois verifica num clique de teste.
  2. Conversion time em falta no CSV. A Google rejeita qualquer linha sem timestamp válido. Erro clássico: exportação Excel que reformata a coluna para data sem hora, ou timezone em falta. Valida sempre o formato yyyy-mm-dd hh:mm:ss+zzzz antes do upload.
  3. Upload para além de 90 dias pós-clique. Conversões com conversion_time > click_time + 90d são silenciosamente ignoradas — sem erro, apenas zero sinal a retornar. Ciclos longos > 90d: passa para Enhanced Conversions Leads ou faz upload de uma microconversão intermédia (SQL em D+30).
  4. Duplicados GCLID não deduplicados. Fazer upload do mesmo GCLID duas vezes com o mesmo nome de conversão = duas conversões contadas, Smart Bidding sobreestima o valor. Adiciona sistematicamente deduplicação (gclid, conversion_name, date) antes do push.
  5. Discordância de timezone. Declarar TimeZone=+0000 em Parameters mas enviar timestamps em hora local (sem offset ou com offset contraditório). Resultado: deslocamento sistemático de 1-2h, conversões anexadas a cliques errados. Unifica em UTC em todo o lado, converte no último momento do lado da exportação.
  6. Lista de conversões importada nunca refrescada. O Smart Bidding aprende com as conversões dos últimos 30 dias. Um upload mensal ou menos frequente = o algo corre com dados obsoletos. Na prática, só este erro custa -40% de sinal offline. Cadência mínima: semanal. Ideal: diária via API.
Auditoria SteerAds :

a nossa auditoria gratuita examina automaticamente estes 6 erros na tua conta Google Ads em 72h: estado do auto-tagging, frequência de upload, taxa de rejeição, consistência de timezone, presença de duplicados, volume por etapa. Relatório priorizado com plano de fix operacional.

Para o contexto e metodologia completos do checklist de auditoria aplicado a tracking, vê o nosso checklist de auditoria Google Ads e, para a adaptação e-commerce, o nosso playbook Google Ads e-commerce 2026.

Fontes

Fontes oficiais consultadas para este guia:

FAQ

Devemos fazer upload de todas as conversões offline ou de um subconjunto?

Faz upload de um subconjunto calibrado, nunca de tudo em bulk. A regra SteerAds: uma conversão offline só é útil ao Smart Bidding se for fiável, atribuível e de volume suficiente. No nosso benchmark interno (mais de 2.000 contas), o erro clássico é empurrar todos os MQLs em bruto — o Smart Bidding aprende então com ruído. A boa abordagem: fazer upload de uma microconversão estável (SQL qualificado, demo confirmada) como conversão primária para otimização, e uma macroconversão rara (deal won) como secundária para relatórios. Esta lógica em dois níveis ganha +23% de ROI mediano vs upload de MQL em bruto.

Quanto tempo após o clique se pode fazer upload de uma conversão offline?

O Google Ads aceita uploads offline até 90 dias após o clique inicial. Para além disso, a conversão é silenciosamente ignorada — sem erro visível, mas o sinal não retorna ao Smart Bidding. Para ciclos B2B SaaS > 90 dias, o workaround é duplo: usar Enhanced Conversions Leads (hashing de email, sem janela estrita de 90 dias), ou empurrar uma microconversão em D+30 (SQL/demo) que cai dentro da janela, e depois acompanhar a conversão comercial final em reporting externo. Nunca dependas só de deal won quando o ciclo mediano excede 60 dias.

Enhanced Conversions Leads é compatível com o RGPD?

Sim, desde que giras corretamente o consentimento. Enhanced Conversions Leads faz hash do email (SHA-256) client-side ou server-side antes de enviar para a Google, que o usa apenas para matching probabilístico — nenhum email em texto simples sai do teu sistema. Para te manteres conforme com o RGPD precisas de: (1) consentimento de marketing explícito no envio do formulário, (2) DPA assinado com o Google Ads (incluído nos Termos standard), (3) menção de tratamento na tua política de privacidade, (4) respeitar o Consent Mode v2 se operares no EEE. Setup correto = zero risco RGPD observado nas nossas mais de 2.000 contas auditadas.

Upload offline clássico vs Enhanced Conversions Leads: qual escolher?

Enhanced Conversions Leads é 3× mais rápido de configurar do que o fluxo GCLID clássico e captura 85 a 92% do sinal offline no nosso benchmark interno SteerAds. Regra prática: se o teu CRM não armazena GCLID corretamente, ou se queres entregar rápido, vai direto a Enhanced Conversions Leads. Se já tens um pipeline GCLID → CRM maduro, mantém o GCLID clássico — continua a ser o gold standard em precisão. Os dois podem coexistir: primária em Enhanced, secundária em GCLID para auditoria. Nunca atives os dois como conversões primárias — double counting garantido.

Ready to optimize your campaigns?

Start a free audit in 2 minutes and discover the ROI potential of your accounts.

Start my free audit

Free audit — no credit card required

Keep reading