Requête pour faciliter une inscription à faible friction à un événement en personne via mailto et utilisateurs staged

Cette requête renvoie tous les utilisateurs (y compris leurs e-mails) qui envoient un message privé / un e-mail à une boîte de réception de groupe, à l’exclusion des membres du groupe.

Le cas d’utilisation est un moyen peu contraignant de permettre aux personnes présentes lors d’un événement physique de créer un utilisateur temporaire pour mon site.

J’ai constaté que lors d’un événement en personne, de nombreux utilisateurs potentiels ont du mal à terminer le processus d’inscription (qui comprend la saisie de leur adresse e-mail (correctement), le choix d’un nom d’utilisateur et la génération d’un mot de passe, au minimum. Il nécessite également la validation de l’e-mail et la connexion ultérieure. C’est une demande importante lorsque l’on discute avec des gens / écoute un conférencier / mange / etc. !

Cela peut être quelque peu atténué avec OAuth2, mais il reste encore des choses à faire et les moins avertis techniquement semblent également avoir du mal avec cela.

Ma Solution

  1. Créez un groupe semi-privé avec une adresse e-mail accrocheuse (par exemple, join@mycommunity.url)

  2. Présentez un code QR qui encode un lien mailto: vers cette adresse

  3. Mettez les braves gens qui géreront l’adhésion ultérieure de ces personnes dans le groupe

  4. Ajoutez la requête suivante à Data Explorer et donnez accès au groupe :

-- [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

Il y a un peu de suivi à faire par la suite, mais au moins vous capturez leurs adresses e-mail de manière fiable d’une manière qui ne nécessite que deux ou trois clics / touches de l’utilisateur !

3 « J'aime »