메일(mailto) 및 단계별 사용자를 통한 오프라인 행사에서의 저마찰 가입 지원 쿼리

이 쿼리는 그룹 인박스(group inbox)로 DM이나 이메일을 보낸 모든 사용자(이메일 포함)를 반환하며, 그룹 멤버는 제외합니다.

이 사용 사례는 오프라인 행사에서 사람들이 내 사이트의 임시(staged) 사용자를 생성할 수 있도록 마찰을 최소화하는 방법을 제공하기 위한 것입니다.

대면 행사에서 많은 잠재적 사용자가 가입 프로세스를 완료하는 데 어려움을 겪는 것을 발견했습니다. 가입 프로세스에는 이메일 주소(올바르게) 입력, 사용자 이름 선택, 비밀번호 생성이 최소한으로 포함됩니다. 또한 이메일 인증 및 이후 로그인도 필요합니다. 사람들이 서서 대화를 나누거나, 강연자를 듣거나, 음식을 먹고 있는 상황에서 이것은 큰 부담입니다!

OAuth2를 사용하면 이 부담을 다소 줄일 수 있지만, 여전히 해야 할 일이 있으며 기술에 익숙하지 않은 사용자들도 어려움을 겪는 경향이 있습니다.

제 해결책

  1. 매력적인 이메일 수신 주소(예: join@mycommunity.url)를 가진 반공개(semi-private) 그룹을 생성합니다.

  2. 해당 주소로 연결되는 mailto: 링크를 인코딩한 QR 코드를 표시합니다.

  3. 이후 이러한 사람들의 가입을 관리할 담당자들을 해당 그룹에 추가합니다.

  4. 다음 쿼리를 Data Explorer에 추가하고 그룹에게 접근 권한을 부여합니다:

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

이후 후속 조치가 필요하지만, 적어도 사용자는 단 두세 번의 클릭/터치만으로 이메일 주소를 신뢰할 수 있는 방식으로 확보할 수 있습니다!

3개의 좋아요