Túneis
Um túnel é uma jornada dividida em etapas — um cadastro, uma finalização de compra, uma renovação — cujo caminho pode mudar com as respostas do visitante. O pacote lembra onde cada visitante está, permite que eles avancem pelas etapas que podem ver e os envia de volta para onde pertencem quando tentam pular à frente.
Uma árvore de cursores
Um túnel é construído como uma árvore, não uma lista. Uma etapa alcançada de dois lugares é dois cursores, cada um com seu próprio hash e seus próprios valores armazenados: isso é o que permite que um ramo cresça etapas que o outro não tem, e o caminho que você tomou, mostrado ao final de cada túnel, é lido a partir disso.
Uma sessão no banco de dados
Abrir um túnel cria uma sessão, que a sessão do navegador conhece apenas pelo seu id. Ela armazena os valores que as etapas guardam e expira um dia após a última etapa exibida — ou antes, quando essa etapa pede isso. Sessões expiradas são descartadas pelo agendador, a cada 15 minutos; as completas e pendentes são mantidas.
Para onde o visitante pode ir
Cada etapa decide se pode ser exibida e para onde enviar o visitante caso contrário. Links e botões são desenhados com as mesmas regras, então um link nunca leva a um redirecionamento de volta: sem botão de próximo onde o caminho se divide, sem retorno após um pagamento, nada para voltar em uma sessão encerrada.