Pagamentos e IDs de usuário
O Unolink liga cada pagamento à instalação a que ele pertence e, portanto, ao link ou anúncio de onde essa instalação veio. Isso funciona não importa quão tarde o pagamento chegue: alguém que toca no seu anúncio do TikTok hoje e assina daqui a duas semanas continua contando como usuário pagante desse anúncio. Plano Pro ou superior.
Como os pagamentos tardios são contados
- Todo evento pertence a uma instalação. Um pagamento que chega uma semana ou um mês depois da instalação é somado a essa mesma pessoa.
- Funis, Jornadas e o Relatório nunca cortam. Uma etapa conta se a pessoa a fez a qualquer momento, então um pagamento tardio ainda a transforma em "Pagou".
- O período escolhe pessoas, não eventos. "Últimos 7 dias" significa pessoas que instalaram nos últimos 7 dias, mais tudo o que elas fizeram depois. Olhe as instalações da semana passada de novo na semana que vem e Pagou pode ter subido: são pagantes tardios chegando, não um erro.
- As Jornadas se atualizam sozinhas. Alguém mostrado como "Saiu" (sem atividade por uma semana) passa a "Concluiu" quando o pagamento chega, e a linha mostra "pagou 9 dias após instalar · voltou".
Onde ver quanto tempo as pessoas levam
- Relatório → Quando as pessoas pagam: a parcela de instalações que pagam em até um dia, 7 dias e 30 dias, a espera mediana e quantas voltaram para pagar depois de uma semana ou mais de silêncio, para todos e por link. "Em até 7 dias" só conta instalações com pelo menos 7 dias, para que instalações recentes não puxem o número para baixo.
- Jornadas: cada pessoa pagante mostra quantos dias depois de instalar pagou pela primeira vez, e se voltou depois de ficar inativa.
- Já assinante: alguém que assinou antes desta instalação (uma reinstalação, um celular novo) envia uma renovação, não uma compra. As Jornadas mostram essa pessoa como "Já assinante · renovou" e contam o dinheiro dela na receita, mas não como Pagou: a venda não foi feita por esta instalação nem pelo link de onde ela veio.
O que seu app precisa
Os pagamentos chegam ao Unolink de uma de duas formas:
- RevenueCat (recomendado). Conecte o webhook dele em seu app → Configurações → RevenueCat. O RevenueCat informa compras, conversões de teste grátis, renovações e reembolsos mesmo quando o app não está aberto, que é como a maioria dos pagamentos tardios acontece (um teste grátis que converte uma semana depois, uma renovação no mês seguinte).
- A chamada
purchase()do SDK, enviada de dentro do app quando alguém paga ali. Funciona bem sem RevenueCat, mas ela não enxerga nada do que acontece fora do app.
Para que os eventos do RevenueCat encontrem a instalação certa, o app precisa dizer ao Unolink quem é o usuário, com o próprio app user ID do RevenueCat. Com o SDK 0.3.2 ou posterior, uma linha na abertura o mantém atualizado:
// iOS: once at launch, before or after configure
Unolink.connectRevenueCat { Purchases.isConfigured ? Purchases.shared.appUserID : nil }
// Android
Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID }
// React Native
Unolink.connectRevenueCat(Purchases)
// Flutter
Unolink.connectRevenueCat(() => Purchases.appUserID,
addListener: Purchases.addCustomerInfoUpdateListener,
removeListener: Purchases.removeCustomerInfoUpdateListener);
Ele lê o ID do RevenueCat na abertura, quando o app volta ao primeiro plano e quando o ID muda, e só o envia quando ele é
novo (no iOS e no Android, chame também Unolink.revenueCatUserChanged() depois de logIn e logOut). Antes da
0.3.2, ou para fazer isso você mesmo, chame setUserId com o ID do RevenueCat (por exemplo
Unolink.setUserId(Purchases.shared.appUserID)) depois de Purchases.configure, depois de cada Purchases.logIn e
Purchases.logOut, e em toda abertura. Use um ou outro, não os dois. RevenueCat tem o código
para cada plataforma.
Para um convidado, o ID do RevenueCat é o ID anônimo dele, então uma compra feita antes do cadastro se junta à instalação na
hora. Depois do logIn, é o ID da conta. O Unolink guarda todo ID que uma instalação reportou, então a compra do
convidado continua ligada. Um pagamento que chega antes de o app enviar o ID de usuário não se perde: ele espera e se
junta à instalação assim que o ID chegar. Sem RevenueCat, chame setUserId com o seu próprio ID de usuário, e null
(nil no Swift) ao sair.
Quando alguém toca em "continuar como convidado", chame também Unolink.signUpSkipped() (SDK 0.3.2 ou posterior,
React Native 0.3.1; SDKs mais antigos: track("sign_up_skipped")), para que a etapa Seguiu como convidado do funil
conte essa pessoa. Veja Convidados e contas.
Quando um pagamento não pode ser ligado
- Sem RevenueCat e sem
setUserId, e a pessoa paga fora do app (por exemplo, no seu site). Nada avisa o Unolink sobre isso. - A pessoa reinstala antes de pagar. Uma nova instalação é uma nova pessoa para o Unolink, a menos que o mesmo ID de usuário as ligue.
- A pessoa paga em outro dispositivo. Isso também só é ligado pelo ID de usuário.
- Um convidado paga, e o app informa só o ID da conta. O RevenueCat envia a compra sob o ID anônimo dele, que o app nunca informou. Ela ainda se junta, mas só com o próximo evento do RevenueCat para esse cliente que listar os dois IDs (por exemplo, a primeira renovação); até então, a pessoa aparece como ainda não paga. Informar o próprio ID do RevenueCat junta a compra na hora.
Com o RevenueCat conectado e o ID dele informado (connectRevenueCat, ou setUserId com o ID do RevenueCat), todos
esses casos estão cobertos.
Privacidade: isto não é fingerprinting
- Fingerprinting significa descobrir qual dispositivo uma pessoa é a partir das características dele (endereço IP, tela, fontes, configurações) sem pedir permissão, geralmente para segui-la pelos apps de outras empresas. A Apple proíbe isso, e o Unolink nunca faz isso.
- O
setUserIdé o próprio ID de usuário do seu app, entregue de propósito pelo seu app. O Unolink guarda apenas um hash de mão única com chave dele (HMAC-SHA256 com uma chave exclusiva para cada um dos seus apps), nunca o ID em si, e o usa para uma única coisa: ligar os pagamentos do seu app às instalações do seu app. Ele nunca é compartilhado com outros apps, redes de anúncios ou qualquer outra pessoa. - O App Tracking Transparency da Apple trata de ligar os dados do seu app aos apps ou sites de outras empresas para publicidade, ou de compartilhá-los com corretores de dados. Ligar suas próprias compras às suas próprias instalações é análise first-party, do mesmo tipo que o RevenueCat ou o Firebase fazem, então não precisa de aviso de rastreamento.
Nas perguntas de privacidade do App Store Connect, o Unolink com setUserId normalmente se resume a: User ID e
Purchases, coletados para Analytics, vinculados ao usuário e não usados para rastreamento. Suas próprias respostas dependem
de tudo o mais que seu app faz, então confira-as como um todo.