Skip to content

fix(emails): send online events' join link in tickets, bookings and invites - #513

Merged
harshtandiya merged 2 commits into
developfrom
fix/online-event-join-links
Oct 1, 2026
Merged

harshtandiya merged 2 commits into
developfrom
fix/online-event-join-links

Conversation

@harshtandiya

Copy link
Copy Markdown
Collaborator

What changed

Online events' join link now reaches guests in the ticket email, booking confirmation and .ics, whatever the platform (Zoom, Meet, Teams, anything). Refs #511.

OnlineMeeting (buzz/events/online_meeting.py) picks the link per guest: their own Zoom registration link → organiser's meeting_link → the shared zoom_link of the event's Zoom meeting/webinar. The event page, email header, both emails and the .ics read it.

  • Emails get a "How to join" block (Where / When / Link + join button). In-person emails unchanged.
  • .ics: LOCATION = join link, plus CONFERENCE and URL. Text values now escaped; an address with a comma or line break used to break the file.
  • Ticket registers with Zoom before the ticket email renders (event_ticket.py:on_submit), so the per-guest link exists in time.

Gotchas:

  • Zoom registers guests on paid accounts only ("Only available for paid users"). Hence the shared-link fallback; with registration on, it opens Zoom's sign-up form first.
  • Links with whitespace are rejected: a newline would inject properties into the .ics.
  • send_zoom_registration_email does nothing: zoom_integration sends registrants_email_notification at the top of the body, Zoom reads it under settings. Left alone.

Not in this PR (rest of #511): registering already-booked tickets when an event converts to Zoom, ticket page button label, meeting_link_of() webinar fallback. Events with their own ticket email template don't get the block; they can use {{ meeting.join_url }} / {{ meeting.label }}.

Demo

Ticket and booking email for an online event:

Testing

Checks: test_event_ticket 12/12, test_event_booking 48/48, test_event 34/34, test_zoom 5/5 on testbuzz; ruff clean. Rendered both templates for Meet, Teams, unknown host, Zoom per-guest, Zoom free-plan fallback and in-person. No new tests; E2E left to CI.

…nvites

Guests of an online event only saw a join link on the ticket page, and only
when Zoom registered them. Any other link (Meet, Teams, ...) never left the
organiser's manage page.

OnlineMeeting resolves the link per guest: their own Zoom registration link,
then the organiser's meeting_link, then the shared link of the event's Zoom
meeting or webinar (Zoom registers guests on paid accounts only). The event
page, email header, ticket and booking emails and the .ics all read it.

- Ticket and booking emails get a "How to join" block with a join button.
- .ics: LOCATION is the join link, plus CONFERENCE and URL; text values
  are escaped so commas and line breaks in an address stay inside it.
- Tickets register with Zoom before the ticket email renders.

Refs #511

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@harshtandiya
harshtandiya merged commit b093ccd into develop Oct 1, 2026
8 checks passed
@harshtandiya
harshtandiya deleted the fix/online-event-join-links branch October 1, 2026 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant