WordPress Training
Ressources

Exportar dados do Matomo automaticamente para o Google Sheets

Matomo Analytics Dashboard

O Matomo é uma excelente solução de analytics — amigável ao RGPD, respeitadora da propriedade dos dados, soberana sobre os dados. Mas o que o Matomo não faz bem de origem: reprocessar dados de forma flexível em folhas de cálculo. Se você envia semanalmente um relatório de tráfego à direção, mantém mensalmente uma tabela de auditoria de SEO ou simplesmente quer percorrer os seus dados com a ousadia de filtros do Google Sheets, precisa casar o Matomo com o Sheets. Na prática funcionam três caminhos, todos com um esforço de configuração diferente. Para a questão de fundo, se em 2026 o Matomo ou o Google Analytics é a melhor escolha, leia o meu artigo sobre Google Analytics vs. Matomo — este aqui pressupõe que você já usa o Matomo.

Pré-requisitos: uma instância Matomo em funcionamento (Cloud ou self-hosted), acesso à API (ver abaixo), uma conta Google com acesso ao Sheets. Tempo de configuração: 30–90 minutos por método.

Por que Sheets em vez da interface do Matomo?

Antes de me tornar técnico, uma pergunta rápida: para que isto é afinal útil?

  • Relatórios para stakeholders. Os diretores querem tabelas, não dashboards com ação de rato e login. Uma tabela do Sheets preenchida automaticamente toda semana com os cinco indicadores mais importantes vale ouro.
  • Comparação entre ferramentas. Se você quer mostrar dados do Matomo lado a lado com dados do Search Console, estatísticas do Mailchimp e conversões do CRM, o Sheets é a cola.
  • Sistema de avaliação próprio. Quer calcular um „Page-Quality-Score“ a partir da taxa de rejeição, duração da sessão e taxa de conversão? Tabelas dinâmicas, FÓRMULAS, IF aninhados — isso é território do Sheets, não do Matomo.
  • Arquivo histórico. Alguns planos do Matomo Cloud têm limites de retenção de dados. Quem persiste os indicadores importantes no Sheets ainda os terá daqui a cinco anos.

O que o Sheets não substitui: a própria interface do Matomo. Análises de funil, gravações de sessão, heatmaps — isso você continua a fazer no Matomo. O Sheets é a camada de agregação e distribuição.

Método 1: Reporting API do Matomo + Apps Script (passo a passo)

O método mais robusto e flexível. Tempo de configuração: 30–60 minutos.

Passo 1: criar um Auth Token do Matomo.

No Matomo → Gestão de utilizadores → Segurança → „Tokens de autenticação“ → „Criar novo token“. Permissão: read-only nas Sites relevantes. Anote o token (você só o vê uma vez).

Passo 2: montar o URL da API.

A Reporting API do Matomo tem uma estrutura muito consistente:

https://IHR-MATOMO.example.com/index.php
  ?module=API
  &method=VisitsSummary.get
  &idSite=1
  &period=day
  &date=last30
  &format=JSON
  &token_auth=IHR_TOKEN

Parâmetros importantes:

  • method — o que você quer consultar (p. ex. VisitsSummary.get, Actions.getPageUrls, Referrers.getKeywords)
  • idSite — o ID da Site (você vê no backend do Matomo)
  • periodday, week, month, year, range
  • date — p. ex. last30, 2026-05-01,2026-05-31
  • format=JSON — devolve dados estruturados, ideal para Apps Script

Passo 3: configurar o Google Apps Script.

No Google Sheets → Extensões → Apps Script. O seguinte script (estrutura básica):

function fetchMatomoVisitsSummary() {
  const url = 'https://IHR-MATOMO.example.com/index.php'
    + '?module=API&method=VisitsSummary.get'
    + '&idSite=1&period=day&date=last30'
    + '&format=JSON&token_auth=' + getToken();

  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  const data = JSON.parse(response.getContentText());

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Matomo');
  sheet.clearContents();
  sheet.appendRow(['Data', 'Visitas', 'Visitantes únicos', 'Taxa de rejeição', 'Tempo médio']);

  Object.entries(data).forEach(([date, metrics]) => {
    sheet.appendRow([
      date,
      metrics.nb_visits || 0,
      metrics.nb_uniq_visitors || 0,
      metrics.bounce_rate || '0%',
      metrics.avg_time_on_site || 0
    ]);
  });
}

function getToken() {
  return PropertiesService.getScriptProperties().getProperty('MATOMO_TOKEN');
}

Passo 4: guardar o token com segurança. Apps Script → Definições do projeto → Propriedades do script → MATOMO_TOKEN como chave, o seu token como valor. Assim o token não fica no código.

Passo 5: configurar um acionador. Apps Script → Acionadores → „Adicionar novo acionador“ → fetchMatomoVisitsSummary → baseado no tempo → diariamente às 06:00.

Pronto. A partir de agora o seu Sheet atualiza-se automaticamente todas as manhãs com os dados de visitas dos últimos 30 dias.

Método 2: Looker Studio como ponte

Se você quer programar menos e clicar mais.

Configuração:

  1. No Looker Studio (antigo Google Data Studio) → „Fontes de dados“ → „Matomo Connector“ (conector da comunidade).
  2. Estabelecer a ligação com o Matomo: URL + Auth-Token.
  3. Criar a fonte de dados (p. ex. „VisitsSummary“).
  4. No Looker Studio criar um relatório ou arrastar os dados diretamente para uma tabela.
  5. No Looker Studio → „Ficheiro“ → „Exportar para o Google Sheets“ — uma única vez ou via Scheduled Email.

Vantagens:

  • Sem código
  • Visualizações „for free“ no Looker Studio
  • Relatórios por e-mail agendados diretamente a partir do Looker
  • Self-service para utilizadores não técnicos

Desvantagens:

  • Os conectores da comunidade têm qualidade variável — alguns não são atualizados há dois anos
  • Os relatórios do Looker Studio não são tão dinâmicos quanto a lógica nativa do Sheets
  • Lentos com grandes volumes de dados

Para muitas configurações menores (profissionais independentes, pequenas agências) esta é a solução pragmática — sem dor de barriga de Apps Script.

Método 3: plugins e bridges SaaS

Existem dois tipos de plugins:

Plugins de WordPress (se o Matomo estiver integrado via WordPress):

  • „Matomo Analytics — Ethical Stats“ (plugin oficial do Matomo) mostra de facto dados no dashboard do WordPress, mas a exportação para o Sheets não está incorporada.
  • „Connect Polylang for Matomo“ e plugins especializados semelhantes visam outros casos de uso.

Bridges SaaS:

  • Coupler.io — pago (a partir de 49 USD/mês), integração baseada em cliques entre o Matomo e o Google Sheets. Compensa se você quiser integrar várias fontes de dados.
  • Supermetrics — o grande protagonista. Muito caro (a partir de 99 EUR/mês), mas adequado a grandes empresas.
  • Funnel.io — semelhante ao Supermetrics, um pouco mais barato.

O meu conselho para a maioria dos leitores: o Método 1 (Apps Script) é o melhor investimento em 60 minutos, que você pode manter sozinho a longo prazo sem custos recorrentes. As bridges SaaS fazem sentido quando você quer orquestrar mais de 5 fontes de dados e não tem vontade de programar.

Fontes de erro: Auth-Token, CORS, rate limits

Em mais de vinte configurações vi repetidamente os seguintes erros:

1. Auth-Token com permissões a mais. Para a integração com o Sheets, crie um token próprio com exclusivamente permissão read para a Site específica. Nunca use tokens de administrador — se algum dia você passar adiante o separador aberto, o risco é demasiado alto.

2. Erros de codificação de URL. Se você usar filtros com caracteres especiais (p. ex. segment=pageUrl=@/blog/), estes têm de estar corretamente codificados. UrlFetchApp.fetch no Apps Script espera normalmente URLs limpos — encodeURIComponent() é o seu amigo.

3. Problemas de CORS (não no Apps Script, mas no browser). Se você quiser chamar a API do Matomo a partir de uma webapp no browser, precisa de cabeçalhos CORS no Matomo. O Apps Script não é afetado por isso, porque a chamada corre do lado do servidor.

4. Rate limits. O Matomo Cloud não tem (em 2026) rate limits de API oficiais, mas em configurações self-hosted com hardware fraco, relatórios grandes (p. ex. pageviews ao longo de 365 dias com segmentação) podem sobrecarregar o servidor. Solução: smaller chunks, intervalos date mais curtos.

5. Inconsistências de carimbos temporais. O Matomo usa UTC. Se você trabalhar no Sheets com horas locais, podem ocorrer efeitos off-by-one-day. No Apps Script, antes de escrever, converta com Utilities.formatDate(date, 'Europe/Vienna', 'yyyy-MM-dd').

Exemplo prático: relatório de tráfego semanal

Uma configuração concreta que tenho a funcionar para três clientes:

Estrutura do Sheet:

  • Separador „Raw“: dados do Apps Script vindos do Matomo (atualizados diariamente)
  • Separador „Weekly“: somas semanais calculadas via QUERY()/SUMIFS()
  • Separador „Dashboard“: gráficos e caixas de KPI que remetem para „Weekly“
  • Separador „E-Mail“: texto semanal preparado com & e TEXT()

Acionador do Apps Script:

  • Diariamente às 06:00: atualizar o separador Raw
  • Toda segunda-feira às 09:00: executar adicionalmente sendWeeklyEmail(), que a partir do Sheet envia um e-mail aos stakeholders

O e-mail semanal contém então automaticamente: as 5 páginas top da semana, comparação com a semana anterior e o mês anterior, novos referrers, anomalias técnicas (p. ex. uma taxa de rejeição subitamente aumentada numa landing page).

Quem vai na mesma direção — usar melhor os dados, extrair mais do analytics — deveria também dar uma olhada no meu artigo sobre análises de SEO gratuitas para iniciantes. E para o panorama geral SEO + WordPress: fundamentos de SEO do WordPress.


Quer ajuda com a configuração?

Se você não quiser configurar sozinho o Apps Script para a sua instância Matomo, posso fazê-lo por si em 2–3 horas — incluindo uma formação de transferência, para que você mesmo possa acrescentar novos relatórios. Escreva-me em poucas palavras o que quer monitorizar.

Solicitar configuração: Entrar em contacto

Etiquetas

AnalyticsAutomatisierungGoogle SheetsMatomoReporting