# Listando convidados de evento com endereços de e-mail

**URL:** <https://meta.discourse.org/t/listing-event-invitees-with-email-addresses/399106>\
**Category:** Data & reporting\
**Tags:** events, sql-query\
**Created:** [Março 23, 2026, 9:59pm UTC](https://meta.discourse.org/t/listing-event-invitees-with-email-addresses/399106 "2026-03-23T21:59:35Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)\
**Post date:** [Março 23, 2026, 9:59pm UTC](https://meta.discourse.org/t/listing-event-invitees-with-email-addresses/399106/1 "2026-03-23T21:59:35Z")

</div>

> 🔖 Esta é uma consulta SQL do [Data Explorer](https://meta.discourse.org/t/32566) que recupera uma lista de todos os usuários que confirmaram presença em um evento específico, juntamente com seus endereços de e-mail primários. É útil para coordenadores de eventos que precisam de informações de contato dos participantes para acompanhamentos, lembretes ou comunicações externas.
> 
> 🙋 Nível de usuário necessário: Administrador
> 
> :discourse2: Esta consulta requer que o plugin [Calendar (and Event)](https://meta.discourse.org/t/discourse-calendar-and-event/97376) esteja ativado.

## O que esta consulta faz

Se você realiza eventos em seu site Discourse usando o plugin [Calendar (and Event)](https://meta.discourse.org/t/discourse-calendar-and-event/97376), talvez precise de uma maneira de obter uma lista completa de participantes com endereços de e-mail — por exemplo, para enviar um resumo pré-evento, compartilhar informações logísticas ou fazer um acompanhamento pós-evento.

O recurso integrado “Exportar evento” no menu do evento baixa uma lista de confirmações de presença (RSVP), mas é entregue como um arquivo compactado via mensagem pessoal. Esta consulta do [Data Explorer](https://meta.discourse.org/t/32566?silent=true) oferece uma alternativa mais rápida, na tela, que inclui o endereço de e-mail primário de cada participante e permite exportar os resultados diretamente para CSV ou JSON.

A consulta retorna todos os usuários que responderam a um determinado evento (independentemente de terem escolhido “Confirmado”, “Interessado” ou “Não irei”), ordenados alfabeticamente por nome de usuário.

## Consulta SQL

```sql
-- [params]
-- integer :event_topic_id = 23338

SELECT 
  u.id AS user_id,
  u.username,
  u.name,
  e.email
FROM users u
JOIN user_emails e ON u.id = e.user_id
JOIN discourse_post_event_invitees invitees ON u.id = invitees.user_id
JOIN posts p ON p.id = invitees.post_id
WHERE e.primary = true
AND p.topic_id = :event_topic_id
ORDER BY u.username

```

## Parâmetro

| Parâmetro | Tipo | Descrição |
| --- | --- | --- |
| `:event_topic_id` | Inteiro | O ID do tópico do evento do qual você deseja extrair os convidados. Você pode encontrá-lo na URL do tópico do evento — por exemplo, em `discourse.example.com/t/my-event-topic/23338`, o ID do tópico é `23338`. |

## Como a consulta funciona

Esta consulta extrai dados de quatro tabelas de banco de dados e os combina para produzir uma única lista:

1. **`users`** — Contém informações básicas do perfil do usuário, como nome de usuário e nome de exibição.
2. **`user_emails`** — Armazena endereços de e-mail associados a cada usuário. Um usuário pode ter vários endereços de e-mail, portanto, a consulta filtra para incluir apenas o e-mail **primário** usando `e.primary = true`.
3. **`discourse_post_event_invitees`** — Registra cada usuário que respondeu a um evento (ao clicar em “Confirmado”, “Interessado” ou “Não irei”). Cada registro vincula um usuário à postagem que contém o evento.
4. **`posts`** — Conecta a postagem do evento ao seu tópico pai, permitindo que você pesquise convidados pelo ID do tópico em vez de precisar saber o ID interno da postagem.

As instruções `JOIN` vinculam essas tabelas para que apenas os usuários que aparecem na lista de convidados para o tópico de evento especificado sejam incluídos. Os resultados são ordenados alfabeticamente por nome de usuário.

## Resultados de exemplo

| user\_id | username | name | email |
| --- | --- | --- | --- |
| 42 | alice\_m | Alice Martinez | [alice@example.com](mailto:alice@example.com) |
| 87 | bob\_jones | Bob Jones | [bob@example.com](mailto:bob@example.com) |
| 15 | carol\_w | Carol Wu | [carol@example.com](mailto:carol@example.com) |
| 63 | david\_k | David Kim | [david@example.com](mailto:david@example.com) |

## Filtragem por status de RSVP

A consulta acima retorna _todos_ os convidados, independentemente do status de confirmação de presença. Se você deseja apenas os usuários que se marcaram como “Confirmado”, pode adicionar um filtro de status à cláusula `WHERE`. A coluna `status` na tabela `discourse_post_event_invitees` usa estes valores:

| Código de Status | Significado |
| --- | --- |
| `0` | Confirmado (Going) |
| `1` | Interessado (Interested) |
| `2` | Não Irei (Not Going) |

Por exemplo, para retornar apenas os usuários que estão “Confirmados”, adicione `AND invitees.status = 0` à cláusula `WHERE`:

```sql
-- [params]
-- integer :event_topic_id = 23338

SELECT 
  u.id AS user_id,
  u.username,
  u.name,
  e.email
FROM users u
JOIN user_emails e ON u.id = e.user_id
JOIN discourse_post_event_invitees invitees ON u.id = invitees.user_id
JOIN posts p ON p.id = invitees.post_id
WHERE e.primary = true
AND p.topic_id = :event_topic_id
AND invitees.status = 0
ORDER BY u.username

```

Você também pode exibir o status de RSVP como um rótulo legível em vez de um número adicionando uma expressão `CASE`:

```sql
CASE 
  WHEN invitees.status = 0 THEN 'Going'
  WHEN invitees.status = 1 THEN 'Interested'
  WHEN invitees.status = 2 THEN 'Not Going'
END AS rsvp_status

```

## Executando a consulta

1. Vá para **Admin \> Plugins \> [Data Explorer](https://meta.discourse.org/t/32566?silent=true)** (ou navegue até `/admin/plugins/discourse-data-explorer`).
2. Clique no botão **+** para criar uma nova consulta.
3. Dê um nome à consulta (por exemplo, “Convidados do evento com e-mails”).
4. Cole o SQL no editor de consultas.
5. Clique em **Run** (Executar) e, em seguida, insira o ID do tópico do seu evento quando solicitado.
6. Para baixar os resultados, clique no botão **CSV** ou **JSON** após a consulta terminar de ser executada.

> ℹ A coluna de e-mail contém dados pessoais sensíveis. Tenha cuidado ao exportar ou compartilhar os resultados e certifique-se de que seu uso desses dados esteja em conformidade com a política de privacidade de sua comunidade e com quaisquer regulamentos de proteção de dados aplicáveis.

## Problemas comuns e soluções

| Problema | Solução |
| --- | --- |
| A consulta retorna zero resultados | Verifique se o ID do tópico está correto e se os usuários realmente confirmaram presença no evento. Você pode verificar visitando o tópico do evento e olhando a lista de participantes. |
| Erro “relação discourse\_post\_event\_invitees não existe” | O plugin [Calendar (and Event)](https://meta.discourse.org/t/discourse-calendar-and-event/97376) não está instalado ou ativado. Esta consulta requer que o plugin esteja ativo. |
| Linhas duplicadas aparecem nos resultados | Se um usuário tiver vários registros de e-mail marcados como primários (incomum, mas possível), você poderá ver duplicatas. Adicionar `DISTINCT` após `SELECT` pode resolver isso. |

---

_[View the full topic](https://meta.discourse.org/t/listing-event-invitees-with-email-addresses/399106)._
