Integração do Base44 com WhatsApp: seu próprio número
Você pode conectar ao seu app do Base44 o número do WhatsApp Business que já tem com a Whatsable. O Base44 dá a cada agente in-app um novo número de WhatsApp atribuído.
Mantenha seu número. Mantenha o app WhatsApp Business. Envie a primeira mensagem aos clientes com modelos aprovados.
Meta Tech Provider oficial · Mantenha o app WhatsApp Business
O que o Base44 oferece hoje e o que a Whatsable adiciona
O canal de WhatsApp nativo do Base44 e seu próprio número podem funcionar lado a lado. O canal nativo dá um número novo por agente. A Whatsable adiciona o número que seus clientes já têm salvo.
Base44 hoje: um número atribuído
Cada agente in-app no Base44 recebe um novo número de WhatsApp próprio.
- No total, 3 agentes in-app podem ser conectados ao WhatsApp em todos os seus apps. Os Superagents têm um limite separado.
- As pessoas precisam enviar a primeira mensagem. O Base44 define essa regra para ajudar a evitar spam.
- Cada mensagem enviada ou recebida usa 1 crédito de integração, além de mais créditos para ações do agente, como chamadas de LLM. O recurso é gratuito em todos os planos do Base44.
“Conecte seus próprios números do WhatsApp Business.”
Whatsable: o número que você já tem
A Whatsable conecta o número do WhatsApp Business que você já usa ao seu app do Base44 pela WhatsApp Business Platform oficial da Meta. O número atribuído pelo Base44 continua funcionando ao lado.
- Use seu próprio número do WhatsApp Business ou o número de telefone dos EUA incluído em todos os planos. Você pode continuar usando o app WhatsApp Business no seu número.
- Você não apaga o app WhatsApp Business. Com a Coexistência, sua equipe continua respondendo pelo celular no mesmo número.
- Para enviar a primeira mensagem a um cliente, ou mais de 24 horas depois da última mensagem dele, envie um modelo aprovado. A Meta não entrega modelos de marketing a usuários de WhatsApp nos EUA; modelos de utilidade e autenticação continuam sendo entregues.
- Uma função de backend do Base44 lê sua chave de API da Whatsable no Base44 Secrets. Quem configura é você: não é um botão que o Base44 aciona no seu lugar.
Função de backend do Base44 → Whatsable → seu próprio número do WhatsApp Business
A configuração tem quatro passos, e é um caminho documentado, não um conector nativo nem uma opção de um clique.
- 1Conecte seu número — Conecte seu número do WhatsApp Business na Whatsable pelo fluxo de cadastro da Meta. Você não apaga o app WhatsApp Business. Com a Coexistência, sua equipe continua respondendo pelo celular no mesmo número.
- 2Crie sua chave de API — Na Whatsable, abra Configurações → Chaves de API e clique em Criar chave de API. Copie a chave. A API e os webhooks da Whatsable estão nos planos Pro e Agency, não no Bulk Message.
- 3Guarde a chave no Base44 Secrets — No Base44, abra Dashboard → Secrets → Add Secret e salve a chave como WHATSABLE_API_KEY. Ou execute base44 secrets set WHATSABLE_API_KEY=your_key. As funções de backend exigem um plano Base44 Builder ou superior. Mantenha a chave fora do chat e do código de frontend.
- 4Envie e receba — Adicione as funções de backend abaixo. Elas leem a chave com secrets.get() dentro do handler e chamam a API da Whatsable. Faça o deploy da função e copie a URL dela: https://<your-app-domain>/functions/whatsappWebhook. Na Whatsable, abra Configurações → Webhooks, clique em Adicionar endpoint e cole a URL. Em Enviar para, escolha Seu próprio servidor para mensagens recebidas. Para receber também as mensagens que você envia, escolha Make, Zapier ou n8n.
Três funções do Base44, uma para cada tarefa
As funções de backend do Base44 rodam em Deno. Cada uma tem o próprio endpoint HTTPS, então o mesmo projeto pode enviar e receber mensagens.
Envie uma mensagem
Esta função lê sua chave de API da Whatsable com secrets.get() dentro do handler e envia uma mensagem de texto livre. Use dentro da janela de atendimento.
import { secrets } from "base44:runtime";
export default async function (req: Request): Promise<Response> {
const { phone, text, idempotencyKey } = await req.json();
const apiKey = secrets.get("WHATSABLE_API_KEY");
const res = await fetch(
"https://api.whatsable.app/v1/messages",
{
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
// Optional. Reuse a key only to retry a send that got no answer.
"Idempotency-Key": idempotencyKey ?? crypto.randomUUID(),
},
body: JSON.stringify({
to: phone, // E.164, e.g. "+15551234567"
type: "text",
text: { body: text },
}),
},
);
const data = await res.json();
// Refused before sending (key, scope, closed 24-hour window...): HTTP error with data.error.
if (!res.ok) {
return Response.json({ ok: false, error: data.error }, { status: 502 });
}
// 201 means recorded, not sent. A WhatsApp refusal is status "failed" with data.error.
if (data.status === "failed") {
return Response.json({ ok: false, error: data.error }, { status: 502 });
}
return Response.json({ ok: true, messageId: data.id, status: data.status });
}Envie a primeira mensagem a um cliente com um modelo
Um modelo aprovado pela Meta permite que seu app inicie a conversa. Use na primeira mensagem ou quando a janela de atendimento tiver fechado.
import { secrets } from "base44:runtime";
export default async function (req: Request): Promise<Response> {
const { phone, templateName, language, variables, idempotencyKey } = await req.json();
const apiKey = secrets.get("WHATSABLE_API_KEY");
const res = await fetch(
"https://api.whatsable.app/v1/messages",
{
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
// Optional. Reuse a key only to retry a send that got no answer.
"Idempotency-Key": idempotencyKey ?? crypto.randomUUID(),
},
body: JSON.stringify({
to: phone, // E.164, e.g. "+15551234567"
type: "template",
template: {
name: templateName,
language: language, // e.g. "en_US"
// Keyed by the template's variables[].key, e.g. { "1": "Ana", "2": "#1042" }
variables: variables ?? {},
},
}),
},
);
const data = await res.json();
// Refused before sending (key, scope, unapproved template...): HTTP error with data.error.
if (!res.ok) {
return Response.json({ ok: false, error: data.error }, { status: 502 });
}
// 201 means recorded, not sent. A WhatsApp refusal is status "failed" with data.error.
if (data.status === "failed") {
return Response.json({ ok: false, error: data.error }, { status: 502 });
}
return Response.json({ ok: true, messageId: data.id, status: data.status });
}Receba mensagens
A Whatsable faz um POST com um payload JSON no endpoint desta função. Chamadas HTTP diretas não têm usuário logado, então use asServiceRole ao acessar recursos do Base44 que exigem isso.
export default async function (req: Request): Promise<Response> {
const payload = await req.json();
// Messages you send arrive with incoming_message set to false. Skip them here.
if (payload.incoming_message === false) {
return Response.json({ ok: true });
}
const phone = String(payload.phone_number);
const name = payload.recipient_name ?? "";
const text = payload.last_message_of_user ?? "";
// Save or act on the message here. Answer quickly with a 2xx.
return Response.json({ ok: true, phone, name, text });
}Duas formas de usar seu próprio número com o Base44
Atualizações de pedido a partir do seu próprio número
Seu app do Base44 acompanha pedidos de clientes que já mandam mensagem para o WhatsApp da sua empresa.
Resultado: Uma função de backend envia um modelo aprovado a partir desse número. Quando o cliente responde, o texto livre funciona dentro da janela de atendimento.
Do protótipo à produção
Seu agente do Base44 validou a ideia com um número atribuído, e agora os clientes precisam falar com você no número que conhecem.
Resultado: Adicione uma função de backend e um webhook ao mesmo projeto do Base44. O número atribuído continua funcionando ao lado.
Base44 e WhatsApp: perguntas e respostas
Sim. Cada agente in-app do Base44 recebe um número de WhatsApp próprio. No total, 3 agentes in-app podem ser conectados em todos os seus apps, e as pessoas precisam enviar a primeira mensagem.
Sim, por meio da Whatsable. O Base44 ainda mostra Custom Numbers como Coming Soon na própria documentação, então este é um caminho documentado: uma função de backend no seu app chama a API da Whatsable.
Sim. Você não apaga o app WhatsApp Business. Com a Coexistência, sua equipe continua respondendo pelo celular no mesmo número. As respostas digitadas no app também chegam ao seu webhook, depois que as mensagens enviadas são ativadas.
Sim. Para enviar a primeira mensagem a um cliente, ou mais de 24 horas depois da última mensagem dele, envie um modelo aprovado. A Meta não entrega modelos de marketing a usuários de WhatsApp nos EUA; modelos de utilidade e autenticação continuam sendo entregues. O canal de agentes do próprio Base44 exige que a pessoa escreva primeiro.
Não. A Whatsable conecta seu próprio número pelo fluxo de cadastro da Meta e envia e recebe pela WhatsApp Cloud API oficial da Meta. Ela não usa pareamento por QR code nem bibliotecas de WhatsApp Web, como Baileys.
Por meio de um webhook que aponta para uma função de backend. Cada função do Base44 tem o próprio endpoint HTTPS. Faça o deploy da função e copie a URL dela: https://<your-app-domain>/functions/whatsappWebhook. Na Whatsable, abra Configurações → Webhooks, clique em Adicionar endpoint e cole a URL. Em Enviar para, escolha Seu próprio servidor para mensagens recebidas. Para receber também as mensagens que você envia, escolha Make, Zapier ou n8n.
Não. É um caminho documentado, não um conector nativo: salve sua chave de API da Whatsable no Base44 Secrets e chame a API da Whatsable a partir de uma função de backend do Base44.
Não. São canais separados. O número atribuído pelo Base44 continua funcionando para os agentes que o usam, e seu próprio número funciona ao lado dele.
A API e os webhooks da Whatsable estão nos planos Pro e Agency, não no Bulk Message. As funções de backend do Base44 também exigem um plano Base44 Builder ou superior.
Mais detalhes sobre as integrações
Seu próprio número, no mesmo app do Base44
Mantenha o app WhatsApp Business, envie a primeira mensagem aos clientes com modelos e deixe o número atribuído pelo Base44 funcionando também.