Consulta para suporte a cadastro de baixo atrito em evento presencial via mailto e usuários em estágio

Esta consulta retorna todos os usuários (incluindo seus e-mails) que enviam e-mail para uma caixa de entrada de grupo, excluindo os membros do grupo.
O caso de uso é uma maneira de baixo atrito para permitir que as pessoas em um evento físico criem um usuário de estágio para o meu site.

Descobri que em um evento presencial, muitos usuários potenciais lutam para completar o processo de inscrição (que inclui digitar seu endereço de e-mail (corretamente), escolher um nome de usuário e gerar uma senha, no mínimo. Também requer validação de e-mail e login subsequente. Isso é muito pedir quando se está conversando com as pessoas / ouvindo um palestrante / comendo / etc!

Isso pode ser minimizado um pouco com OAuth2, mas ainda há algumas coisas a fazer e os menos experientes tecnicamente parecem ter dificuldades com isso também.

Minha Solução

  1. Crie um grupo semi-privado com um endereço de e-mail cativante (ou seja, join@mycommunity.url)

  2. Apresente um código QR que codifica um link mailto: para esse endereço

  3. Coloque as boas pessoas que gerenciarão a entrada subsequente dessas pessoas no grupo

  4. Adicione a seguinte consulta ao Data Explorer e conceda acesso ao grupo:

-- [params]
-- string :group_name

WITH group_members AS (
    SELECT gu.user_id
    FROM group_users gu
    JOIN groups g ON g.id = gu.group_id
    WHERE g.name = :group_name
),

non_group_users AS (
    SELECT u.id, u.username, ue.email, u.created_at
    FROM users u
    JOIN user_emails ue ON ue.user_id = u.id
    WHERE NOT EXISTS (
        SELECT 1
        FROM group_members gm
        WHERE u.id = gm.user_id
    ) AND ue.primary = TRUE
),

group_messages AS (
    SELECT tg.topic_id
    FROM topic_allowed_groups tg
    JOIN groups g ON g.id = tg.group_id
    WHERE g.name = :group_name
),

group_message_participants AS (
    SELECT gm.topic_id, tau.user_id AS tau_user_id FROM group_messages gm
    JOIN topic_allowed_users tau ON tau.topic_id = gm.topic_id
    JOIN non_group_users ngu ON ngu.id = tau.user_id
)

SELECT ngu.username, ngu.email, ngu.created_at FROM group_message_participants gmp
JOIN non_group_users ngu ON ngu.id = gmp.tau_user_id
GROUP BY ngu.username, ngu.email, ngu.created_at
ORDER BY ngu.username

Há um pouco de acompanhamento a ser feito depois, mas pelo menos você captura seus endereços de e-mail de forma confiável de uma maneira que requer apenas dois ou três cliques / toques do usuário!

3 curtidas