Introdução {#introducao}
O plugin de formulários com mais instalações na história do WordPress está a sinalizar que já não quer ser um plugin. A 8 de maio de 2026, Takayuki Miyoshi confirmou que o seu próximo projeto, Contactable.io, estreia-se como uma API RESTful no Cloudflare Workers, e não como um plugin clássico no diretório WordPress.org. É uma rutura com o modelo que definiu a sua carreira ao longo de muitos anos, e um sinal que vale a pena ler com atenção antes que alguém se encolha de ombros e o classifique como “mais um brinquedo de programador”.
O Contact Form 7 tem mais de cinco milhões de instalações ativas segundo o diretório de plugins do wordpress.org. É difícil encontrar outro plugin com este nível de presença, daqueles que as agências instalam em quase todos os projetos sem pensar duas vezes. Quando o autor dessa infraestrutura diz abertamente que o seu próximo passo vai na direção de API e edge, isso não é um item da categoria “curiosidade simpática”. É o momento certo para olhar para sua própria stack.
A realidade portuguesa é concreta. Uma boa parte das instalações de Contact Form 7 em Portugal está alojada na PTisp, na Amen.pt, na Webhs.pt ou em revendedores OVH a partir de Lisboa e do Porto, onde o cliente típico de agência não conhece o termo headless e o SMTP funciona pelo princípio “o último administrador colocou lá qualquer coisa, fica assim”. Neste contexto, o aparecimento de um serviço de formulários como REST API toca num ponto sensível, porque obriga a pensar no que de facto acontece aos dados depois de carregar em “enviar”. A CNPD tem vindo a reforçar nas suas orientações, em particular em projetos abrangidos pela Lei n.º 58/2019 (a lei portuguesa que executa o RGPD), que a escolha do subcontratante é responsabilidade do responsável pelo tratamento.
Principais conclusões num relance {#conclusoes}
- O Contact Form 7 não vai desaparecer. O Contactable.io é um produto novo e independente do mesmo autor.
- O sítio padrão onde o código do formulário corre passa do alojamento do cliente para a edge do Cloudflare Workers.
- O modelo de negócio muda de plugin gratuito para serviço API, muito provavelmente com um plano pago.
- Para as equipas de RGPD, isso significa uma nová análise sobre onde os dados são fisicamente tratados.
- Para as agências, é um argumento a favor de um inventário anual de formulários em vez de herdar escolhas acidentais feitas anos atrás.
- Para projetos headless e WooCommerce com CRM personalizado, é um ganho potencial, se a arquitetura estiver pronta.
O que Takayuki Miyoshi anunciou de facto {#anuncio-miyoshi}
Segundo The Repository (a newsletter WordPress de Rae Morey, edição #301, 8 de maio de 2026), Miyoshi descreveu o Contactable.io como “uma API RESTful a correr no Cloudflare Workers”. Na prática isto significa três mudanças em simultâneo.
Primeiro, o formulário já não vive na base de dados de uma instalação específica de WordPress. Vive num serviço. O site do cliente envia um pedido HTTP, recebe uma resposta e renderiza o resultado. Segundo, a validação, a proteção contra bots e a lógica de entrega correm mais perto do utilizador final, na rede edge da Cloudflare. Terceiro, as integrações com sistemas externos (CRM, email marketing, helpdesk) passam por webhooks em vez de hooks PHP internos.
O mais importante, no entanto, é o que Miyoshi não disse. Não anunciou o fim do Contact Form 7 como plugin. Não anunciou uma migração forçada. Não publicou uma tabela de preços completa. Estas são questões em aberto, e é essa falta de respostas que deve servir de argumento para não tomar hoje decisões do tipo “vamos reescrever tudo”.
Porque esta mudança é importante {#porque-importante}
Seria fácil pensar “está bem, mais um programador a lançar mais um SaaS, já temos milhares deles”. Este caso é diferente por três razões.
Escala de instalação. O Contact Form 7 está em sites suficientes em Portugal, no Brasil, em Espanha e na UE para que qualquer alteração na recomendação por defeito do autor se propague durante anos. A maior parte dos editores e dos pequenos empresários não sabe quem é o autor do plugin, mas qualquer atualização que um dia o classifique como “legacy” desencadeia um efeito dominó.
Uma deslocação do centro de gravidade. Durante quinze anos, a lógica padrão em torno dos formulários foi a de que um plugin WordPress faz tudo: validação, antispam, entrega, registo. O modelo do Contactable.io separa a camada de dados da camada de apresentação. O site mantém o frontend, mas o motor do formulário passa a ser um serviço.
Um sinal para o mercado mais alargado de plugins. Se um autor com a estatura de Miyoshi escolhe Cloudflare Workers em vez de escrever mais um plugin em PHP, outros autores de plugins populares vão estudar essa decisão. É plausível que, dentro de um ano, alguns plugins conhecidos das categorias forms, popups, opt-in de email ou booking sigam o mesmo caminho.
Tabela comparativa, Contact Form 7 e as alternativas {#tabela-comparativa}
A tabela seguinte coloca cinco produtos concorrentes reais ao lado do Contactable.io anunciado. Os números refletem o estado em maio de 2026 e devem ser lidos como estimativas estratégicas, não como argumentos de marketing.
| Produto | Modelo | Instalações WP ativas | Arquitetura | Compatível com headless | RGPD por defeito |
|---|---|---|---|---|---|
| Contact Form 7 | plugin gratuito | 5M+ | PHP, base de dados do site | mais difícil | sim, dados no alojamento |
| WPForms | plugin freemium | 6M+ | PHP, API opcional | parcialmente | requer configuração |
| Fluent Forms | plugin freemium | 500K+ | PHP, API própria | sim | requer configuração |
| Gravity Forms | plugin pago | 1M+ sites comerciais | PHP, REST API | sim | requer configuração |
| Formidable Forms | plugin freemium | 300K+ | PHP, hooks | sim | requer configuração |
| Contactable.io (anunciado) | SaaS API | n/d | edge, Cloudflare Workers | sim, by design | requer auditoria |
Três observações. Primeiro, quase todas as ferramentas sérias de formulários WordPress já têm REST API, por isso o Contactable.io não introduz nada de fundamentalmente novo nesse eixo. Segundo, a diferença está na ausência de uma camada PHP do lado do cliente, o que significa uma superfície de ataque diferente e um local diferente onde os dados ficam armazenados. Terceiro, na coluna do RGPD não há uma única linha que diga “sim” sem nota de rodapé, o que é um lembrete útil de que escolher um plugin não dispensa ninguém de configurar a retenção, o consentimento e os contratos de subcontratação.
RGPD, transferências de dados e a pergunta “onde é que isto acontece” {#rgpd}
A passagem da execução do formulário de um alojamento europeu para a edge da Cloudflare é o ponto em que a conversa real deixa a engenharia e passa para o jurídico.
O Cloudflare Workers corre código em mais de 330 localizações em todo o mundo, incluindo Lisboa, Madrid, Amesterdão e Frankfurt, mas também Singapura, São Paulo e Dubai. Por defeito, o código pode executar em qualquer uma delas, dependendo da localização do utilizador. Da perspetiva do responsável pelo tratamento numa empresa portuguesa, isto significa que um formulário preenchido por um cliente em Coimbra executa muito provavelmente em Lisboa ou em Madrid, mas o mesmo formulário preenchido por um utilizador em viagem na Tailândia executa em Singapura.
Do ponto de vista do RGPD, três elementos exigem auditoria antes de qualquer formulário passar do Contact Form 7 para o Contactable.io:
- Local de tratamento: os dados podem sair do EEE e em que base jurídica.
- Contrato de subcontratação: a Cloudflare publica uma DPA modelo, mas cada agência tem de a assinar e arquivar em nome dos seus clientes.
- Mecanismos de transferência: Cláusulas Contratuais-Tipo, EU-US Data Privacy Framework e, quando aplicável, Regras Vinculativas Aplicáveis às Empresas.
A CNPD, em orientações de 2024 e 2025, e o Comité Europeu para a Proteção de Dados têm reforçado que utilizar um serviço distribuído globalmente não é, por si só, uma violação, mas que não realizar uma Avaliação de Impacto sobre a Proteção de Dados quando esta é exigida, é. O Contactable.io enquadra-se na categoria de ferramentas para as quais uma AIPD é uma boa ideia mesmo quando não é estritamente obrigatória. Para projetos abrangidos pela Lei n.º 58/2019, em particular nos sectores da saúde, recursos humanos e finanças, a AIPD deve ser tratada como passo obrigatório antes de qualquer migração.
O que significa para SEO, desempenho e Core Web Vitals {#seo-desempenho}
Do ponto de vista de SEO, mover formulários do alojamento para a edge tem três efeitos reais.
Menor carga no servidor do cliente. Cada submissão de Contact Form 7 é um POST a admin-ajax.php que toca no núcleo do WordPress, carrega o plugin, abre uma ligação à base de dados e, regra geral, abre também uma ligação SMTP. Esses recursos não vão para a renderização do site para os restantes visitantes. Empurrar essa operação para o Cloudflare Workers tira essa carga do alojamento.
Uma chamada de rede adicional. Numa arquitetura headless ou de ilhas, um formulário do Contactable.io implica um pedido a uma API externa. Isto não afeta o LCP porque os formulários raramente são o maior elemento visível, mas afeta o INP (Interaction to Next Paint), porque a primeira interação depois do primeiro clique aciona um pedido externo.
Maior resiliência em picos de tráfego. O Cloudflare Workers escala para milhões de pedidos por segundo sem intervenção do administrador. Em campanhas em que os formulários recebem milhares de submissões por hora (newsletter, lead magnet, Black Friday), é essa a diferença real entre um lead capturado e um 502 Bad Gateway num alojamento partilhado clássico.
Aprofundo este tema no guia sobre como alcançar 100/100 nos Core Web Vitals em 2026, onde explico porque o INP é a métrica mais difícil de corrigir em sites com muitos formulários sob a medição atual da Google.
Integração prática, como fica no código {#codigo-integracao}
Abaixo segue um esqueleto de três integrações típicas. Os endpoints são ilustrativos e serão atualizados quando a Contactable.io publicar a documentação oficial da API.
1. Submeter um formulário com fetch clássico no frontend
// public/js/contactable-submit.js
async function submitContact(form) {
const payload = {
name: form.name.value,
email: form.email.value,
message: form.message.value,
siteId: 'wppoland-pt-001',
locale: document.documentElement.lang
};
const response = await fetch('https://api.contactable.io/v1/submit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Contactable-Token': window.CONTACTABLE_PUBLIC_KEY
},
body: JSON.stringify(payload)
});
if (!response.ok) {
throw new Error('contactable submit failed');
}
return await response.json();
}
2. Servidor-para-servidor em PHP, mantendo o plugin WordPress como proxy
<?php
// wp-content/mu-plugins/contactable-proxy.php
add_action('rest_api_init', function () {
register_rest_route('wppoland/v1', '/contact', [
'methods' => 'POST',
'callback' => 'wppoland_contactable_proxy',
'permission_callback' => '__return_true',
]);
});
function wppoland_contactable_proxy(WP_REST_Request $req) {
$body = $req->get_json_params();
$response = wp_remote_post('https://api.contactable.io/v1/submit', [
'timeout' => 8,
'headers' => [
'Content-Type' => 'application/json',
'X-Contactable-Token' => CONTACTABLE_SECRET_KEY,
],
'body' => wp_json_encode($body),
]);
if (is_wp_error($response)) {
return new WP_Error('contactable_unreachable', $response->get_error_message(), ['status' => 502]);
}
return new WP_REST_Response(
json_decode(wp_remote_retrieve_body($response), true),
wp_remote_retrieve_response_code($response)
);
}
3. Teste rápido com curl antes do deploy
curl -X POST https://api.contactable.io/v1/submit \
-H "Content-Type: application/json" \
-H "X-Contactable-Token: ${CONTACTABLE_PUBLIC_KEY}" \
-d '{
"name":"Marta Sousa",
"email":"[email protected]",
"message":"Teste de integracao",
"siteId":"wppoland-pt-001",
"locale":"pt-pt"
}'
O padrão de proxy do segundo exemplo é o que recomendo para a maioria das agências portuguesas. Mantém o URL antigo do formulário estável, guarda a chave secreta do lado do servidor e nunca expõe credenciais no browser.
Cenários de migração, quando ficar e quando avançar {#cenarios-migracao}
Nem todos os clientes são bons candidatos a migração. A tabela seguinte mostra onde vale a pena considerar o Contactable.io e onde não.
| Cenário | Decisão razoável | Razão |
|---|---|---|
| Página-cartão-de-visita de PME, 50 leads por mês | Manter no Contact Form 7 | Sem ganho de negócio, custo de migração injustificado. |
| Loja WooCommerce com formulário de devoluções | Manter por agora, monitorizar | Mudar a meio da época alta é arriscado e sem justificação. |
| Headless WordPress + Astro + Cloudflare Pages | Migração realista | Arquitetura já edge, integração natural. |
| Landing page de campanha com lead magnet | Migração a testar | Ganho em escalabilidade e resiliência em picos de tráfego. |
| Site na UE com formulário de recrutamento | Aguardar | RGPD, dados sensíveis, AIPD completa exigida antes da decisão. |
| Multisite com 30 sites de cliente | Migração normalizadora | Inventariar e adotar um padrão único de formulário em toda a organização. |
A regra prática é simples. O Contactable.io faz sentido onde já se está a construir uma arquitetura moderna, onde a escalabilidade conta e onde a equipa está preparada para uma AIPD. Em todos os outros casos, o Contact Form 7 continua a servir.
O que deve fazer uma agência WordPress no Q2 de 2026 {#agencia-q2}
Uma lista concreta, por ordem de prioridade.
- Inventariar a base de clientes. Quantas instalações ativas de Contact Form 7 é que mantém, onde, em que versões, com que extensões (CF7 Multi-Step, Conditional Fields, Flamingo).
- Escolher um padrão interno de formulário para 2026. Pode ser Fluent Forms, WPForms Pro, Gravity Forms ou Contactable.io. Um padrão facilita o desenvolvimento, as auditorias e as transições de projetos.
- Preparar uma checklist de RGPD para cada nova integração. Local de tratamento, retenção, direito de acesso, direito a ser esquecido, auditoria de logs.
- Criar um modelo de AIPD para projetos que introduzem serviços de API edge. Uma vez escrito, pode servir dezenas de clientes.
- Planear um webinar ou um artigo para os seus clientes que explique a diferença entre um plugin PHP e uma API SaaS. Os clientes a quem se explica o problema antes de eles próprios darem por ele tratam a agência como conselheira, não como prestadora de serviços.

