mailtoとステージングユーザーを介した対面イベントでの低摩擦サインアップをサポートするためのクエリ

このクエリは、グループのメンバーを除き、グループのメールボックスにPM /メールを送信したすべてのユーザー(メールアドレスを含む)を返します。

ユースケースは、物理的なイベントで、私のサイトのステージングユーザーを作成するための低摩擦の方法を有効にすることです。

対面イベントでは、多くの潜在的なユーザーがサインアッププロセス(少なくともメールアドレス(正しく)入力、ユーザー名選択、パスワード生成を含む)を完了するのに苦労することを発見しました。また、メールの検証とそれに続くサインインも必要です。これは、人々とチャットしたり、スピーカーを聞いたり、食べ物を食べたりしながら立っている場合には大きな要求です!

これはOAuth2である程度軽減できますが、まだやるべきことがいくつかあり、技術的にあまり詳しくない人も苦労しているようです。

私の解決策

  1. キャッチーなメールアドレス(例:join@mycommunity.url)を持つセミプライベートグループを作成します。

  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

その後、いくらかのフォローアップが必要ですが、少なくともユーザーが2〜3回のクリック/タッチでキャプチャできる方法で、メールアドレスを確実にキャプチャできます!

「いいね!」 3