Assinatura Digital em Apps Low-Code: Lovable, Bubble, FlutterFlow e Além
A geração de apps construídos em Lovable, Bubble e FlutterFlow chega rápido ao mesmo momento: o produto funciona, os primeiros clientes chegam — e aparece um contrato para assinar. A boa notícia é que assinatura digital é um problema excepcionalmente bem-comportado para low-code: uma chamada REST cria a sessão, a página de assinatura já vem pronta e hospedada, e um webhook fecha o loop. Este guia mostra o padrão de arquitetura que funciona em qualquer plataforma com conector HTTP — e as adaptações por plataforma.
O padrão universal: três passos, qualquer plataforma
Independente da ferramenta, o fluxo é sempre o mesmo triângulo:
- Seu backend cria a sessão: uma chamada
POST /v1/signing-sessionscom o PDF (base64, até 10 MB), o signatário e opolicy.profile(do clique ao ICP-Brasil). A resposta traz aurlhospedada e oclientSecret— o link final éurl?cs=.... - O usuário assina no link hospedado: visualização do documento, autenticação e coleta de evidências, tudo pronto — nada de construir tela de assinatura em canvas de editor visual. Com
appearance, a página sai com a sua marca. - O webhook avisa seu app:
SIGNING_SESSION.COMPLETEDchega ao endpoint do seu backend; você atualiza o status, baixa o PDF assinado e o pacote de evidências, e segue o fluxo.
client_id/client_secret) vivem no lado servidor da plataforma — edge function, backend workflow, cloud function. Nunca em fluxo que executa no navegador ou no celular do usuário: tudo que roda no cliente é legível por quem inspecionar o app. Se a sua ferramenta só chama APIs a partir do cliente, coloque uma função serverless mínima no meio — é o preço de fazer certo.
As adaptações por plataforma
Lovable (React + Supabase)
O caso mais bem pavimentado: apps Lovable nascem com Supabase, e a integração vive numa Edge Function — o segredo fica no cofre do Supabase, a função cria a sessão e devolve o link ao front-end React; outra função recebe o webhook. Temos um guia dedicado com os prompts prontos — você cola no chat do Lovable e ele gera a Edge Function e os componentes.
Bubble
Configure a chamada no API Connector marcada como server-side e dispare-a de um workflow de backend — o segredo fica nos headers da chamada, fora do cliente. O webhook entra como backend workflow exposto por URL, que recebe o evento e atualiza o registro do documento no seu banco Bubble. O link de assinatura abre em nova aba ou iframe, e o returnUrl traz o usuário de volta à página que você indicar.
FlutterFlow
A regra do segredo vale em dobro: custom actions executam no dispositivo — credencial ali é credencial pública. Crie a sessão a partir de uma cloud function (ou do seu backend), devolva o link ao app e abra-o em webview ou navegador externo; o usuário assina pelo celular, sem instalar nada. O webhook aponta para a mesma cloud function ou backend.
Automação sem app: n8n
Se o "app" é na verdade um fluxo — formulário → contrato → assinatura → CRM — talvez você nem precise de plataforma de app: o nó oficial de n8n monta o fluxo visual completo, com templates prontos.
Os três erros que vemos em apps low-code
- Credencial no cliente: o mais comum e o mais grave — chave da conta em custom action, em fluxo de página ou em campo "oculto". Auditar leva minutos: se o segredo aparece no tráfego de rede do app, está errado.
- Confiar no redirect como prova: o usuário voltar pelo
returnUrlnão significa que assinou — ele pode ter voltado sem concluir. O estado verdadeiro vem do webhook (ou deGET /v1/transactions/{id}). Trate o redirect como UX, não como confirmação. - Ignorar reentregas do webhook: eventos podem chegar mais de uma vez. Guarde o
iddo evento processado e ignore repetições — em low-code, isso é um registro numa tabela e um passo de condição no workflow.
Do MVP ao produto: o contrato que não muda
A melhor propriedade dessa arquitetura é a portabilidade: o dia em que o app Lovable virar um Next.js, ou o Bubble ganhar um backend próprio, a integração de assinatura não se refaz — mesmos endpoints, mesmos webhooks, mesmas credenciais. Você reescreve o seu lado; o contrato com a API permanece. (O caminho Next.js, aliás, está mapeado no guia dedicado.)
Desenvolva tudo no sandbox gratuito (api-hml.signdocs.com.br, sem cartão), valide com usuários reais e leve à produção quando o volume justificar — o time comercial dimensiona o plano sob medida.
Perguntas Frequentes
Dá para adicionar assinatura digital num app feito sem código?
Sim — desde que a plataforma tenha duas capacidades quase universais: fazer uma chamada HTTP a partir do backend (workflow server-side, edge function, cloud function ou conector de API) e receber uma chamada HTTP de fora (endpoint de webhook). Com isso, o fluxo completo cabe no padrão de três passos: o backend do seu app chama POST /v1/signing-sessions com o PDF e o signatário, o usuário assina no link hospedado da SignDocs (nada para construir), e o webhook SIGNING_SESSION.COMPLETED avisa seu app para atualizar o status. Lovable, Bubble e FlutterFlow — e praticamente qualquer plataforma séria — atendem aos dois requisitos.
Onde guardo as credenciais da API num app low-code?
No lado servidor da plataforma — nunca em campo de tela, fluxo de front-end ou código que roda no navegador/celular do usuário. Cada plataforma tem seu cofre: em apps Lovable, o segredo vive numa Edge Function do Supabase; no Bubble, em chamadas de API configuradas como server-side; no FlutterFlow, numa cloud function ou backend próprio — nunca numa custom action que executa no dispositivo. A regra é a mesma do desenvolvimento tradicional: o client_secret só existe onde o usuário não alcança. Se a plataforma só consegue chamar APIs a partir do cliente, coloque uma função serverless mínima no meio.
Por que o checkout hospedado é o caminho certo para low-code?
Porque ele elimina exatamente a parte que low-code tem dificuldade de construir: a interface de assinatura. A resposta da API já traz a url da página hospedada — visualização do PDF, autenticação do signatário (clique, OTP ou biometria), coleta da assinatura e evidências, tudo pronto e responsivo. Seu app só precisa abrir o link (redirect ou webview) e esperar o webhook. Com o objeto appearance, a página ainda sai com o seu logotipo e cores, mantendo a experiência visual do seu produto.
Como recebo o webhook de conclusão numa plataforma no-code?
Crie o endpoint no backend da plataforma (backend workflow no Bubble, Edge Function no ecossistema Lovable/Supabase, cloud function no FlutterFlow) e registre a URL na SignDocs. Dois cuidados: primeiro, verifique a assinatura HMAC-SHA256 do evento — se a plataforma não expõe o corpo bruto da requisição para o cálculo, no mínimo valide que o transactionId recebido existe consultando GET /v1/transactions/{id} antes de confiar no evento; segundo, trate reentregas com idempotência pelo id do evento. Atualize o registro do documento no seu banco e siga o fluxo do app.
E para gerar o PDF do contrato dentro do app low-code?
A geração do documento é o seu lado da fronteira: a API assina o PDF que você envia (em base64, até 10 MB). As plataformas low-code costumam resolver isso com um serviço de geração de PDF a partir de template HTML (há vários no mercado com conector HTTP) ou com uma função no backend usando uma biblioteca de PDF. O fluxo fica: dados do formulário → gerar PDF → base64 → POST /v1/signing-sessions. Para documentos estáticos (termos de uso, contratos padrão), mais simples ainda: guarde o PDF pronto no storage e reutilize.
Isso escala se o app crescer?
Sim — e essa é a vantagem de integrar via API desde o início: o contrato com a SignDocs não muda quando você troca de stack. O app que nasceu no Lovable e migrou para Next.js, ou o MVP de Bubble que virou produto com backend próprio, continua chamando os mesmos endpoints, recebendo os mesmos webhooks e usando as mesmas credenciais. O que evolui é o seu lado. Desenvolva no sandbox gratuito, valide com usuários reais e, quando o volume justificar, o time comercial dimensiona o plano de produção.
Seu app low-code assina contratos ainda esta semana
Credenciais de homologação gratuitas, checkout hospedado pronto e webhook de conclusão — o padrão de três passos funciona na sua plataforma, seja ela qual for.
Criar credenciais de homologação Guia Lovable com prompts prontos