Skip to main content
Pull the people who registered for a specific event recently, optionally filter to this month or this week, then save them as CSV for outreach. The recipe composes event list, event person list, and event person export with jq.
Prerequisites: authenticated CLI (run auth login once) and at least one event with attendees in the active workspace.

Steps

1

Find the event ID

talkvalue path event list --json | jq '.data[] | {id, name, startAt}'
Lists every event in the workspace with the three fields you need to pick the one you want.
2

Browse the latest registrants

EVENT_ID=18
talkvalue path event person list "$EVENT_ID" --sort "joinedAt,desc" --page-size 50
Prints the 50 most recent registrants as a table, newest first. The --sort flag is what makes this a “new registrants” report.
3

Filter to this month

EVENT_ID=18
SINCE=$(date -u +"%Y-%m-01T00:00:00Z")

talkvalue path event person list "$EVENT_ID" \
  --sort "joinedAt,desc" --page-size 100 --json \
  | jq --arg since "$SINCE" \
      '[.data[] | select(.joinedAt >= $since)]
        | {count: length, registrants: .}'
Captures the month boundary at midnight UTC, asks for the first 100 registrants newest first, then keeps only the ones who joined on or after the first of the month. The output is a small object with a count plus the filtered list.
4

Export to CSV for follow-up

talkvalue path event person export "$EVENT_ID" > "registrants-event-$EVENT_ID.csv"
Streams every registrant (not just this month’s) as a CSV file. export is always CSV regardless of the global --format flag.

Variants

Filter to a custom date range

SINCE="2026-05-01T00:00:00Z"
UNTIL="2026-05-22T00:00:00Z"

talkvalue path event person list "$EVENT_ID" \
  --sort "joinedAt,desc" --page-size 100 --json \
  | jq --arg since "$SINCE" --arg until "$UNTIL" \
      '[.data[] | select(.joinedAt >= $since and .joinedAt < $until)]'
Two ISO timestamps bracket the window. Use any half-open [since, until) range for weekly, daily, or arbitrary slices.

Filter by channel

talkvalue path event person list "$EVENT_ID" \
  --channel-id 7 \
  --sort "joinedAt,desc" --page-size 50
Use --channel-id (repeatable) when you want only registrants who are also on a specific marketing channel, for example, newsletter subscribers who signed up for the event.

Export only this month’s registrants as CSV

SINCE=$(date -u +"%Y-%m-01T00:00:00Z")

talkvalue path event person list "$EVENT_ID" \
  --sort "joinedAt,desc" --page-size 500 --json \
  | jq -r --arg since "$SINCE" \
      '["id","name","primaryEmail","jobTitle","companyName","joinedAt"],
       (.data[] | select(.joinedAt >= $since) | [.id, .name, .primaryEmail, .jobTitle, .companyName, .joinedAt])
       | @csv' \
  > "new-registrants-$(date +%Y-%m).csv"
The event person export endpoint always returns every registrant, so this variant projects six columns yourself when you specifically need the month-bounded slice as CSV.

Tips

  • --page-size defaults to the server default. Pass --page-size 100 to fetch more per call. For larger pulls, see the page-walk loop in Scripting with jq.
  • joinedAt is when the person registered for the event. The CLI returns it as an ISO 8601 UTC timestamp, which sorts lexicographically. >= string comparison in jq works as expected.
  • Pair this with person activity to see the full change log for any specific registrant.

See also