Vamos ser totalmente honestos: a maioria dos sistemas de afiliados no mercado são horríveis. Ou eles são extremamente confusos, desorganizados e lentos, ou parece que foram projetados nos anos 90. Ou ainda pior: são uma mistura dos dois casos. Alguns podem ter metade das ferramentas que você precisa, mas faltam recursos essenciais que os afiliados desejam. 😩

Desde que iniciamos a Kinsta, tem sido nossa missão jamais lançar algo abaixo da média para nossos clientes. Um padrão que mantemos é que, se for algo que nós mesmos não usaríamos, precisamos melhorar e encontrar outra forma de entregá-lo. Assim como fizemos com nosso painel MyKinsta, decidimos desenvolver nosso próprio programa.

Hoje, discutiremos alguns dos motivos pelos quais optamos por seguir essa rota, tanto do aspecto dos negócios e de desenvolvimento, quanto o resultado final que tivemos (do MVP até o produto final).

Por Que Implementamos Nosso Próprio Programa

Quando começamos a pesquisar o que precisava ser feito para implementarmos um sistema de afiliados, rapidamente percebemos que não existia uma opção pronta para o que queríamos. Esses são os principais motivos:

  • O maior problema era que nosso sistema de afiliados precisava ser fortemente associado aos nossos planos e sistema de assinaturas, não a um provedor terceirizado.
  • Gestão de marca é muito importante para nós. Embora alguns sistemas de afiliados ofereçam soluções white-label, a maioria deles são implementações imaturas e nem sempre totalmente transparentes. Desenvolvermos por conta própria nos permitiria ter controle completo sobre o design e a marca sem precisarmos nos preocupar com soluções white-label.
  • Depender de um sistema terceirizado nos impediria de adicionar novos recursos rapidamente. A maior parte do nosso painel MyKinsta personalizado foi construída inteiramente baseada nos feedbacks dos usuários e é por isso que se tornou uma das melhores ferramentas de gerenciamento de sites WordPress na indústria! Tudo isso graças aos nossos clientes incríveis. 👏 Sabíamos que, a partir do momento que fizéssemos um lançamento junto a uma solução terceirizada, feedbacks e solicitações começariam a aparecer e não seríamos capazes de fazer as alterações requisitadas.
  • A capacidade de oferecer e criar relatórios personalizados, não só para nossos afiliados, mas para nossos administradores também, era algo que não conseguiríamos viver sem. Amamos e precisamos de dados! De que outra forma você seria capaz de tomar decisões estratégicas no futuro? Extrair relatórios de dados também é algo que deve ser feito em nossos planos complexos e sistema de assinatura.

Aprofundando um pouco mais, sabíamos que, uma vez que lançássemos o sistema de afiliados ao público geral, não poderíamos mais interrompê-lo. Claro, falhas podem aparecer e ser corrigidas, mas se precisássemos mudar de provedor de pagamentos, não poderíamos simplesmente deixar nossos afiliados em modo de espera enquanto continuaríamos recebendo dinheiro que seria destinado a eles.

Além disso, a flexibilidade era uma grande preocupação. E se tivéssemos que fazer alterações internas sobre como as inscrições eram tratadas (e isso acabou acontecendo), seríamos capazes de lidar com múltiplos idiomas e moedas? E os complementos que desenvolvemos ao longo do caminho, como Redis, backups por hora, entre outros? Teríamos sido capazes de desenvolver um painel expansível para nossos usuários?

De uma perspectiva técnica, foi provado ser completamente redundante usar o software de outras empresas. Como temos uma forma particular de atender as assinaturas via Stripe, precisamos definir nossa própria lógica sobre o que é um referido e qual é o mecanismo de mudança para atualizações e alterações.

Stripe

Embora eu saiba que muitas soluções possuem APIs, escrever o código para enviar nossos dados para a API seria 80% do trabalho. Por que não trabalhar nos 20% adicionais e criar nossa própria interface de usuário, algo que somos muito adeptos?

Custos Envolvidos

Outra grande preocupação era o preço. Existem produtos baratos no mercado, mas eles não passaram por nosso filtro, devido às preocupações com recursos ou flexibilidade. Outros cuidam bem de pagamentos e possuem muitos recursos, mas suas taxas também aumentam rapidamente. Vamos analisar os custos de algumas das soluções mais populares. Observação: alguns desses valores talvez possam ser negociados, com base no volume de vendas e outros fatores.

  • ShareASale: US$550 taxa única de rede, US$100 de depósito e 20% de taxa de transação sobre cada venda.
  • CJ: US$3.000 taxa de rede, US$3.000 de depósito e 30% de taxa de transação ou US$0,30 sobre cada venda – o maior valor entre os dois.
  • ClickBank: US$49,95 taxa de ativação, US$2,50 taxa de período de processamento de pagamento e 7,5% taxa de transação + US$1 sobre cada venda.

Digamos que as vendas de afiliados gerem US$250.000 por ano. Aqui está como as taxas se somariam (após os depósitos únicos e as taxas de acesso de rede). Aliás, o que são taxas de acesso de rede? 🤔

  • ShareASale: US$50.000 em taxas
  • CJ: US$75.000 em taxas
  • ClickBank: US$27.000 em taxas

Uau! Isso é bastante. E antes de calcular outras taxas, já estamos fazendo o pagamento do nosso processador Stripe. Também consultamos outros sistemas de afiliados, como Rakuten Marketing e Impact Radius, mas os custos eram ainda maiores.

O benefício de implementar nosso próprio sistema de afiliados é que o maior custo seria simplesmente o tempo de desenvolvimento. Temos talento incrível internamente para construir tudo. Mas, como é possível notar, existem muitas partes em movimento e detalhes a considerar ao escolher entre seguir seu próprio caminho ou optar por uma solução terceirizada.

O Básico Sobre Como Nosso Sistema de Afiliados Funciona

Entrarei em maiores detalhes mais adiante, mas para entender como começamos a desenvolver o produto, é válido entender o fluxo de dados básico.

O ponto de entrada no sistema é um link especial que contém um ID de afiliado. Nós o chamamos de ID de afiliado Kinsta ou KAID para simplificar (exemplo: https://kinsta.com?kaid=affiliateid).

A maioria das demais ferramentas de afiliados são muito confusas quando se trata de saber qual URL você deve usar e para onde deve fazer a vinculação. Por isso, desde o início, quisemos torná-lo um processo simples de dois passos.

Passo 1

O primeiro passo seria inserir o local de destino do website Kinsta. Pode ser qualquer página, não apenas nossa home page. Talvez você queira que o link aponte diretamente para nossa página de planos (conforme visto abaixo).

Criar link de afiliado Kinsta
Criar link de afiliado Kinsta

Passo 2

O segundo passo seria gerar o link para poderem facilmente copiar e colar isso onde quiserem. E também para fornecer o HTML de acompanhamento com o atributo rel=”sponsored” link (que é muito importante) para cumprir com as diretrizes do Google para links de afiliados. O Google recomendou anteriormente o uso do atributo nofollow, que ainda é uma opção viável.

Gerar link de afiliado e código HTML
Gerar link de afiliado e código HTML

Quando detectamos que um visitante está usando um desses links, enviamos um cookie que contém as informações sobre quem indicou tal usuário. Valorizamos o referido inicial e não oferecemos comissões divididas. Isso é mais justo com o afiliado e leva a uma competição por qualidade ao invés de quantidade.

O Stripe cuida de todas as compras, por isso usamos sua API extensa e (em maior parte) bem documentada para criar usuários, assinaturas, pagamentos iniciais, entre outros. O fluxo de compra ocorre no website, que por sua vez usa a API interna do MyKinsta para iniciar os processos que precisamos para realizar o cadastro do usuário. As informações sobre quem indicou o cliente também são registradas em nosso sistema.

O MVP (Começo do Desenvolvimento)

Sempre que você lança algo novo, pode ser inteligente construir um MVP (produto de viabilidade mínima) e começar sua divulgação imediatamente para testar sua capacidade. Colete feedbacks logo no início e aprenda com eles. Faça adaptações, mudanças e melhorias. Foi exatamente isso que fizemos quando lançamos a Kinsta pela primeira vez e foi como avançamos do $0 até uma receita de sete dígitos.

Sabíamos desde o começo que a parte mais desafiadora do sistema seria a lógica que por trás do monitoramento e cálculo de comissões. Inicialmente, o sistema inteiro foi escrito em PHP e dependia completamente do Stripe para calcular tudo com essa finalidade.

A forma como calculávamos comissões para um referido era consultar todo o histórico do Stripe de assinaturas do referido e descobrir quanto de comissão única era devido e quanto era recorrente. Fatores como tempo decorrido e tipo de plano afetavam o cálculo.

Pagamentos do sistema de afiliados Kinsta
Pagamentos do sistema de afiliados Kinsta

Por exemplo, se a indicação da Hospedagem Gerenciada de WordPress foi criada há dois dias, não houve, é claro, uma comissão única. Se a indicação da Hospedagem Gerenciada de WordPress foi criada há quatro meses, tivemos que atribuir a comissão única (após dois meses) e duas comissões recorrentes (devidas uma vez por mês após a comissão única).

Para chegar ao valor da comissão a ser paga por mês, fizemos o processo acima para todos as referências para um afiliado específico. Isso provou ser um processo de cálculo mais intenso do que pensamos inicialmente. Sabíamos que faríamos uma mudança, mas descobrimos que havia uma grande harmonização entre funcionalidade e tempo de desenvolvimento.

O front-end foi desenvolvido usando Flight PHP, um micro framework PHP. Criamos algumas rotas, reunimos algumas tabelas e gráficos e seguimos em frente.

FlightPHP

Mudando o MVP (Adaptações e Melhorias)

Cerca de 7 meses após o lançamento do modo beta privado e seis meses de operações regulares, precisamos passar por uma reconstrução. Nosso MVP original não foi feito para ser escalável. Uma mudança teve que ser feita na forma como cuidávamos das assinaturas, em virtude de nossos novos complementos e sistemas ultrapassados. Até esse ponto, um cliente sempre precisava de uma assinatura. Tínhamos que alterar isso e permitir múltiplas assinaturas por usuário.

Como nossos clientes sempre possuíam uma e somente uma assinatura, podíamos afirmar com segurança que qualquer assinatura de referido ativa era equivalente a um plano de hospedagem. Em outras palavras, as assinaturas eram o que considerávamos como referidos. Precisávamos fazer uma revisão completa que considerasse nossos clientes no Stripe como nossos referidos.

Clientes referidos no sistema de afiliados Kinsta
Clientes referidos no sistema de afiliados Kinsta

Além disso, a forma pouco otimizada que calculávamos comissões estava começando a ir num caminho ruim. Ela afetava principalmente nossos administradores, mas também tivemos um ou dois afiliados que experimentaram maiores tempos de carregamento, enquanto calculávamos todas as comissões, cada vez que visualizavam o painel.

Para fazer as correções, movemos o sistema completo para o território da combinação Node + React, para que usasse a mesma base que o MyKinsta. Isso permitiria que nossos desenvolvedores participassem muito mais do processo, conforme fosse necessário, e começassem a usar uma linguagem de design mais comum e com maior facilidade.

O Produto Final

Quando finalizamos a reconstrução, nos deparamos com um sistema muito superior e que exigia menos gerenciamento, possuía muito mais recursos, automatizava tarefas comuns de administração de afiliados e que compartilhava da mesma base tecnológica que nosso produto principal, o MyKinsta.

A Base

Agora, o sistema de afiliados roda no Node no back-end e no React no front-end. Ele utiliza GraphQL para nossas necessidades de consultas e Ant Design para o framework de design.

nodejs

Na verdade, há quatro processos separados rodando ao mesmo tempo:

  • Back-End do Afiliado: Este é o back-end de todo o sistema. Ele é completamente fechado para o ambiente externo. Somente comunicações internas podem alcançá-lo. É basicamente o ponto de entrada para o banco de dados. Tudo o que ele faz é aceitar e responder consultas do GraphQL.
  • Painel do Afiliado: Essa é a parte que o usuário acessa no sistema de afiliados. Ele consiste de diversos componentes do React para receber dados através das consultas do GraphQL pelo back-end.
  • Administrador do Afiliado: Essa é uma interface de administração especial que os administradores acessam para agregar estatísticas, gerenciar aplicações e desempenhar outras tarefas.
  • Sincronização do Afiliado: Um conjunto de cron jobs que mantém tudo em sincronia – entraremos em maiores detalhes em breve, uma vez que se trata da espinha dorsal do sistema.

Melhorias nos Dados e Cálculos

Na versão inicial do sistema, calculamos tudo ad-hoc. Isso provou ser bastante intenso no que se tratava de dados, mas também não era algo bom, porque se mudássemos um detalhe – como o valor de comissão pago – tudo era alterado em retrospecto ou precisávamos mexer em todo o código, com base em instruções “se” (“if”).

O novo sistema de afiliados usa dois mecanismos para torná-lo muito mais eficiente: uma forma melhor de apanhar os dados do Stripe e um sistema de contabilidade para registrar eventos.

O sistema de eventos garante que tudo que ocorra, permaneça no lugar certo. Se um afiliado deve receber uma comissão única, registramos uma comissão e a associamos a ele. Em seguida, marcamos aquele usuário e nunca mais atribuímos uma comissão única novamente. O mesmo mecanismo se aplica às comissões recorrentes. Uma vez que o período tem sua comissão recorrente calculada e registrada, nós “esquecemos” dele.

Isso significa que tais cálculos precisam ser feitos apenas para períodos curtos de tempo e conjuntos de comissões são formados ao simplesmente somar algumas linhas do banco de dados.

O segundo componente depende de cron jobs para reunir dados. Coletamos todas as informações do Stripe a cada 10 minutos e as salvamos no banco de dados local, fazendo algumas modificações para facilitar os processos seguintes.

Por exemplo, leva uma quantidade considerável de código para descobrir se uma assinatura altera eventos que envolvem um plano de hospedagem. Podemos fazer esse cálculo ad-hoc quando necessário, mas ao invés de fazê-lo, usamos um cron job para adicionar uma marcação ao objeto salvo. Como estamos coletando 10 minutos de dados, o processo inteiro leva em torno de 100 milissegundos e torna as consultas de seleção seguintes muito mais eficientes.

Um segundo cron job organiza os dados no local final, calculando comissões, criando eventos e realizando outras operações. 

O motivo para serem feitos separadamente é que a primeira operação é muito simples, mas depende do Stripe, enquanto a segunda é consideravelmente mais intensa e complexa. Se identificarmos um bug na segunda operação que a leve a falhar, não precisaremos voltar a sincronizar horas/dias/semanas de dados do Stripe. Teremos apenas que executar novamente a segunda operação.

Esta configuração proporciona diversos outros benefícios, pois cada cron job é formado por vários componentes distintos, como obtenção de novas assinaturas, aprovação de comissões pendentes, entre outros. No futuro, talvez façamos uma divisão ainda maior de nossos cron jobs para nos certificarmos de que seremos capazes de capturar os problemas o mais cedo possível sem afetar outras partes do sistema.

Após otimizar nossos cálculos e nos movermos para um novo framework, nosso painel de afiliados agora carrega duas vezes mais rápido! 🚀

O Sistema e o Programa de Afiliados em Ação

Este post não estaria completo sem mostrar nosso sistema e o programa de afiliados em ação. Aqui estão alguns recursos e vantagens que oferecemos para todos os afiliados da Kinsta.

Painel de afiliados Kinsta
Painel de afiliados Kinsta

1. Comissões Imbatíveis (Bônus de Assinatura + Renda Recorrente)

Trabalhamos muito tempo e muito duro em nossa estrutura de comissões e pagamentos, pois consideramos que esse provavelmente é um dos fatores mais importantes para os afiliados. Na verdade, muitos blogueiros e proprietários de websites que hospedamos recebem toda sua renda a partir do programa de afiliados. Nos orgulhamos de oferecer os maiores pagamentos da indústria! E oferecemos comissões, não importando os serviços de hospedagem indicados.

Para cada plano de hospedagem gerenciada de WordPress da Kinsta que alguém indicar, eles recebem um bônus único pela inscrição, como se segue:

  • Plano Starter (US$50)
  • Plano Pro (US$100)
  • Business 1-4 (US$150)
  • Enterprise 1-2 (US$500)

Os afiliados também recebem uma comissão mensal recorrente de 10% por cada indicação para a Hospedagem Gerenciada de WordPress, além do bônus por inscrição. E para as indicações de Hospedagem de Aplicativos e Hospedagem de Banco de Dados, também oferecemos 5% de comissões mensais recorrentes. Mas espere, não paramos por aí! As comissões recorrentes são cumulativas, tornando uma das melhores ofertas da indústria de hospedagem.

Abaixo estão apenas alguns dos muitos exemplos que temos de como funcionam os pagamentos de nossas comissões do WordPress. Veja mais exemplos de cenários de pagamento em nossos termos de afiliados.

Exemplo de bônus de assinatura da Hospedagem Gerenciada de WordPress

Exemplo de pagamento de afiliado
Exemplo de pagamento de afiliado

Exemplo de comissão recorrente da Hospedagem Gerenciada de WordPress

Exemplo de comissão recorrente
Exemplo de comissão recorrente

2. Monitoramento em Tempo Real

Nosso painel de afiliados é diferente de qualquer outro no mercado! Você pode consultar os dados de afiliado quase em tempo real, visualizações de páginas, assinaturas, informações aprofundadas de planos e até mesmo detalhar referências individuais e verificar todos os pagamentos daquele referido (conforme visto abaixo).

Detalhes de pagamento de afiliados Kinsta
Detalhes de pagamento de afiliados Kinsta

3. Alto Valor Vitalício

Uma das grandes vantagens de indicar pessoas para Kinsta é que temos um valor vitalício incrivelmente alto para cada cliente. Nosso churn rate está abaixo de 2%! Isso significa que os afiliados podem receber comissões recorrentes de forma vitalícia daquele cliente.

4. Pagamentos Mensais

Não há necessidade de nossos afiliados se preocuparem ou marcarem datas em seus calendários. Sempre realizamos os pagamentos pontualmente e os enviamos para sua conta do PayPal a cada mês.

5. Materiais Promocionais

Precisa de banners para promover a Kinsta em um website ou blog? Não se preocupe, temos muitos deles! Os banners e logos promocionais podem ser acessados facilmente, diretamente pelo painel de afiliado.

Banners de afiliados Kinsta
Banners de afiliados Kinsta

6. Longa Janela de Conversão

Pessoas são ocupadas e pode ser que não convertam imediatamente. Muitas vezes, as pessoas gostam de fazer compras quando chega a hora de escolher um novo host de nuvens. É por isso que oferecemos cookies de monitoramento de 60 dias aos afiliados, para garantir que eles sejam creditados pela venda.

7. Pronto para ITP 2.0

O sistema de afiliados Kinsta está pronto para ITP 2.0! Intelligent Tracking Prevention 2.0 (ITP) é uma nova configuração da Apple presente no Safari 11 e versões superiores que essencialmente limita o acesso das soluções de monitoramento baseadas na rede em cookies no navegador. De acordo com um estudo recente, a partir de outubro de 2020, o Safari ainda detém cerca de 8% da participação de mercado do navegador web. Portanto, esta mudança tem um grande impacto na indústria publicitária.

Entretanto, não se preocupe. O sistema de afiliados Kinsta depende apenas de cookies próprios, sem rejeição ou outros métodos quem evitem o ITP. Como resultado, todos os referidos serão monitorados e registrados de maneira apropriada como eram antes do ITP 2.0.

Desenvolvemos nosso sistema deliberadamente sem recorrer aos métodos “anti-ITP” pelos seguintes motivos:

  1. Acreditamos no monitoramento honesto, transparente e em reunir a menor quantidade de dados pessoais possível.
  2. Não precisamos monitorar visitantes ao longo de diversos sites.
  3. Antecipamos que as regras da web se tornarão mais restritas ao longo do tempo.

Você pode ler mais sobre as ramificações do ITP 2.0.

8. Painel Multilíngue – Disponível em Cinco Idiomas

Nosso painel de controle de afiliados Kinsta está agora disponível em oito idiomas diferentes e mais estão chegando.

  • Inglês
  • Alemão
  • Francês
  • Espanhol
  • Italiano
  • Holandês
  • Português
  • Japonês

9. Ajudar Afiliados a Ter Sucesso

Além de construir um sistema e um painel de afiliados incríveis, nós realmente queremos que nossos afiliados tenham sucesso. Não há limite do dinheiro que você pode ganhar. E é completamente gratuito para todos participarem. Registre-se aqui.

Observação: Aprovamos as contas de afiliados manualmente para garantir que os sites respeitem nossos termos de afiliados.

A equipe de marketing da Kinsta, juntamente com nosso gerente de afiliados, está aqui para te ajudar. Temos o prazer de oferecer dicas de marketing de afiliados e dicas de vendas para afiliados sobre como levar as promoções para o próximo nível. Na verdade, estamos trabalhando na produção de conteúdo adicional em nosso blog voltado especificamente para afiliados e formas de aumentar os ganhos.

Resumo

Nossa implementação atual provou ser muito mais estável, veloz e oferecer uma experiência melhor para nossos usuários e administradores. Ela formulou uma fundação sólida, baseada na forma como podemos desenvolver um produto e um programa fantásticos.

Um grande benefício é que agora podemos nos focar mais em melhorias para os usuários. Adicionamos mais gráficos, monitoramento de URL e diversos recursos alguns meses após seu lançamento. Planejamos melhorar a experiência do usuário e oferecer ferramentas que permitam que nossos afiliados ganhem ainda mais.

Estamos longe de ter terminado! 🤘

Pensando em criar seu próprio sistema de afiliados? Não vamos mentir, é preciso de muito trabalho, mas vale muito a pena o tempo e o esforço investidos. Agora temos um sistema que nossa equipe inteira se orgulha e que nossos afiliados adoram usar.

Daniel Pataki

Hi, my name is Daniel, I'm the CTO here at Kinsta. You may know me from Smashing Magazine, WPMU Dev, Tuts+ and other WordPress/Development magazines. Aside from WordPress and PHP I spend most of my time around Node, React, GraphQL and other technologies in the Javascript space.

When not working on making the best hosting solution in the Universe I collect board games, play table football in the office, travel or play guitar and sing in a pretty bad band.