Consulta para facilitar un registro sencillo en un evento presencial mediante mailto y staged users

Esta consulta devuelve todos los usuarios (incluidos sus correos electrónicos) que envían un mensaje / correo electrónico a una bandeja de entrada de grupo, excluyendo a los miembros del grupo.
El caso de uso es una forma de baja fricción para permitir que las personas en un evento físico creen un usuario provisional para mi sitio.

He descubierto que en un evento presencial, muchos usuarios potenciales tienen dificultades para completar el proceso de registro (que incluye escribir su dirección de correo electrónico (correctamente), elegir un nombre de usuario y generar una contraseña como mínimo. También requiere la validación del correo electrónico y el posterior inicio de sesión. Esto es pedir mucho cuando estás de pie charlando con la gente / escuchando a un orador / comiendo / etc.

Esto se puede mitigar un poco con OAuth2, pero todavía hay cosas que hacer y a los menos expertos en tecnología también les parece difícil.

Mi Solución

  1. Crear un grupo semiprivado con una dirección de correo electrónico atractiva (es decir, join@mycommunity.url)

  2. Presentar un código QR que codifique un enlace mailto: a esa dirección

  3. Poner a las buenas personas que gestionarán la incorporación posterior de estas personas al grupo

  4. Añadir la siguiente consulta a Data Explorer y dar acceso al 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

Hay un poco de seguimiento que hacer después, ¡pero al menos capturas sus direcciones de correo electrónico de manera confiable de una manera que solo requiere dos o tres clics / toques del usuario!

3 Me gusta