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)period—day,week,month,year,rangedate— p. ex.last30,2026-05-01,2026-05-31format=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:
- No Looker Studio (antigo Google Data Studio) → „Fontes de dados“ → „Matomo Connector“ (conector da comunidade).
- Estabelecer a ligação com o Matomo: URL + Auth-Token.
- Criar a fonte de dados (p. ex. „VisitsSummary“).
- No Looker Studio criar um relatório ou arrastar os dados diretamente para uma tabela.
- 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
&eTEXT()
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
