The dropdown list of Email topics on /Help/Contact is assembled in core/views.py (in the contact view) from two sources that
are concatenated, in this order:
helpfeedback_dict — defined in core/views.py at module level just above class ContactForm,
branched per settings.DATABASE. Legacy; only used where rows haven't been migrated yet.Groupconferences rows — pulled from the database per conference. This is the preferred path going forward. The filter inside
contact is:
Groupconferences.objects.filter(
conference__id=settings.CURRENT_CONFERENCE
).exclude(emails=None).exclude(contact_page_description=None).order_by("sortkey")
A row appears on /Help/Contact only if both emails and contact_page_description are non-null. Order on the
page is controlled by sortkey.
Groupconferences (Django admin)Use this for any new mailing list. It scopes the topic to a single conference year and lets non-developers manage it.
Group (if it doesn't already exist).
Program Committee, Workshop Chairs).send_contact_form_email injects into the email subject (it assigns email_topic = f" {group_conference.group.name}:
").Groupconferences row.
| Field | What to put |
|---|---|
group | The Group from step 1 |
conference | The current conference (e.g. NeurIPS 2026). Each year needs its own row — use the "Copy to this
year" admin action to roll forward from a previous conference. |
emails | Destination mailbox. Single address (e.g. program-chairs@neurips.cc) or comma-separated list. |
contact_page_description | The text shown in the /Help/Contact dropdown (e.g. Program Chairs: paper
submissions, OpenReview, authors). Required — if blank, the row is filtered out. |
sortkey | Smaller numbers appear first within the database-sourced section. |
users | The actual humans in the group. Drives the Organizers page; not required for /Help/Contact to work. |
visible | Whether the group appears on the virtual site's Organizers page. Does not affect /Help/Contact. |
pluralize | Pluralize the group name on the Organizers page when more than one user is attached. |
auto_response_html | Optional trusted HTML. When set, anyone who submits the contact form choosing this topic gets an automatic reply with this body. |
/Help/Contact on the conference site — the new entry should appear in the Email topic dropdown,
ordered by sortkey after the hard-coded entries./Help/Contact?select=<substring> — case-insensitive substring match against contact_page_description./Help/Contact?email_topic=<exact-email> — exact match against the emails value. Superusers get a (link) next to
each entry that uses this form.helpfeedback_dict (code change)Only use this if the topic must exist before any DB row is migrated, or for an organization-wide address that should appear on every year automatically.
core/views.py and find the if settings.DATABASE == ... block matching the conference. These blocks live at module level, just above
class ContactForm.helpfeedback_dict["<destination-email>"] = "<text shown in dropdown>"
For example, in the nips branch:
helpfeedback_dict["press@neurips.cc"] = "Press"
email_from_choices in the same block./Help/Contact.Note: hard-coded entries do not get the auto-reply behavior — send_contact_form_email looks up the auto-reply by matching the submitted
topic against Groupconferences.emails. If you need an auto-reply, use the Groupconferences path.
Groupconferences rows are per-conference. To carry a topic into the next year:
copy_groupconference_to_this_year on GroupconferencesAdmin in core/admin.py). Then edit the new rows to update any
year-specific text or membership.When a visitor submits the /Help/Contact form and selects a group, they can be sent an automatic reply confirming receipt. The auto-reply lives on the matching Groupconferences row for the current conference.
From this point on, anyone who submits the /Help/Contact form and picks
this group will receive a reply with subject
“<Conference> Help Request Auto Reply”. The Reply-To
on the auto-reply is set to the first address in the group’s emails
field, so if the submitter replies it goes back to the team.
To turn the auto-response off again, blank out the Auto response html field and save.
emails field points at a Google Workspace mailing list
The auto-response above only fires for messages that come through the
/Help/Contact form. People often email the group address directly
(forwarded from elsewhere, replying to an older thread, or just typing it in), and
those messages never hit our form, so our auto-response never runs.
If the Emails field on the Groupconferences row is a Google Workspace
mailing list (e.g. registration@yourconference.org backed by a Google
Group), you need to set up an auto-reply on the Google Group itself in addition
to the auto_response_html on the Groupconferences object:
Keep the two messages roughly in sync — the Groupconferences one covers submissions through our form, and the Google Groups one covers everyone who emails the address directly. If you only set one of them, a real chunk of senders will get silence.