arrow-left

All pages
gitbookPowered by GitBook
1 of 8

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

How to send messages with the python client

You can send messages through OpenReview using the python client post_messagearrow-up-right function. You will first need to install and setup the python clientarrow-up-right.

To send an email you need:

  • subject: Subject line of the email

  • message: Text of the email

  • recipients: List of OpenReview , email addresses, or OpenReview group IDs.

  • invitation: An invitation that allows you to send an email to your recipients (this is usually the invitation for venue organizers).

Below are some examples of common cases for sending emails.

hashtag
Sending a message to all of your venue's authors

If you wanted to include a link to each author's paper in the email, you could instead iterate through each submission and send an email with the papers' authorids fields as recipients:

hashtag
Sending an email to the reviewers of submission 123

profile IDs
meta invitation
subject = 'Your message subject'
message = 'Hello, please go to your submission and do x, y, and z.'
recipients = ['Your/Conference/ID/Authors']
invitation = f'Your/Conference/ID/-/Edit'
client.post_message(subject, recipients, message, invitation=invitation)
submissions = client.get_all_notes(invitation = 'Your/Conference/Id/-/Submission')
for submission in submissions: 
    subject = f'Message regarding Paper #{submission.number}'
    message = f'Hello, please go to your submission and do x, y, z. Find your submission here: https://openreview.net/forum?id={submission.forum}'
    recipients = submission.content['authorids']
    invitation = f'Your/Conference/ID/-/Edit'
    client.post_message(subject, recipients, message, invitation=invitation)
subject = 'Your message subject'
message = 'Hello, please go to your review and do x, y, and z.'
recipients = [f'Your/Conference/ID/Submission123/Reviewers']
invitation = f'Your/Conference/ID/-/Edit'
client.post_message(subject, recipients, message, invitation=invitation)

How to customize emails sent through OpenReview

Emails can be sent to users of your venue programmatically using the API or from certain pages like the Program Chair console. They can be personalized to include the recipient's name or other information using email template tags.

There are two types of email template tags: Tags that are handled on the backend by the OpenReview API, and tags that are replaced on the frontend (in the browser).

Backend tags can be used anywhere, including when sending messages directly using the API or via the openreview-py library. Frontend tags can only be used on specific pages, such as the Area Chair console and the Program Chair console. A list of all available tags is below:

Backend tags: {{fullname}}

Frontend tags: [[SUBMIT_REVIEW_LINK]]

If you want to include further customizations, including links to papers or reviews, you can

message users with the python client.

Communication

How to email the authors of accepted submissions

hashtag
Using the UI

Under the ‘Overview’ tab of the PC console for your venue, you will find a ‘Venue Roles’ section. Click on the ‘Accepted’ link next to ‘Authors’ to be taken to the Accepted Authors group. On this page, click 'Edit group'. You will then have the option to email members of the group.

This option will work for use cases that do not need to customize messages. If you want to customize messages or have more control over who the recipient is, then please use the python client.

hashtag
Using the Python Client

PCs can utilize the python client to send customized messages or to a more controlled recipient group. Three different use cases are outlined below. All use cases assume that PCs have already run the Post Decision Stage.

hashtag
I want to email authors of all accepted submissions:

First, you will need to for your venue.

Second, loop through the submissions and for each submission send an email using the authorids in the submission.content. This message will be sent to all the authors of the submission.

hashtag
I only want to email the corresponding author:

Unless you added a field to the submission form that required authors to indicate the corresponding author, OpenReview does not indicate which author in the list is the corresponding author.

If you want to email the author listed first in the submission, you can do this:

hashtag
I only want to email accepted submissions with a specific decision:

To start, get all the accepted submissions for your venue, like in the sections above, except this time include the param details='replies' .

Stored in the submission.details retrieve the replies that contain the Decision invitation.

Retrieve the decision notes for a specific decision. For this example, I will use 'Accept (Proceedings)', please change this to match the specific value in the decision note:

Now that the decision notes have been filtered by the decision, we need the corresponding submission note to get the submission information.

You can then message the author ids of each accepted submission either using the SubmissionX/Authors group or the authorids like in the previous examples.

get all of the accepted submissions
submissions = client.get_all_notes(content={'venueid':'Your/Venue/ID'})

for submission in submissions:
    subject = f'Message regarding Submission #{submission.number}'
    message = f'Hello, please go to your submission and do x, y, z. Find your submission here: https://openreview.net/forum?id={submission.forum}'
    recipients = submission.content['authorids']['value']
    client.post_message(subject, recipients, message, invitation='Your/Venue/ID/-/Edit')
for submission in submissions:
    subject = f'Message regarding Submission #{submission.number}'
    message = f'Hello, please go to your submission and do x, y, z. Find your submission here: https://openreview.net/forum?id={submission.forum}'
    recipients = submission.content['authorids']['value'][0]
    client.post_message(subject, recipients, message, invitation='Your/Venue/ID/-/Edit')
submissions = client.get_all_notes(content={'venueid':'Your/Venue/ID'}, details='replies' )
proceeding_decision_notes = [] 
for submission in submissions:
    for reply in submission.details["replies"]:
        for invitation in reply["invitations"]:
            if (invitation.endswith("Decision")) and ('Accept (Proceedings)' in reply["content"]["decision"]["value"]):
                proceeding_decision_notes = proceeding_decision_notes + [reply]
                #print(reply["content"]["decision"]["value"])

len(proceeding_decision_notes) # check the number of items in the list and see if it matches the stats in the PC console
# create a dictionary to map submission ids to submission objects
submission_dict = {submission.id: submission for submission in submissions}

proceedings_submissions = []

# iterate through the proceeding_decision_notes and find the corresponding submission
for note in proceeding_decision_notes:
    submission_id = note['forum']
    if submission_id in submission_dict:  # check if the submission_id exists in the dictionary
        proceedings_submissions.append(submission_dict[submission_id])  # add the corresponding submission to the new list
for submission in proceedings_submissions: 
    subject = f'Message regarding Paper #{submission.number}'
    message = f'Hello, please go to your submission and do x, y, z. Find your submission here: https://openreview.net/forum?id={submission.forum}'
    recipients = [f'Your/Venue/ID/Paper{submission.number}/Authors']
    client.post_message(subject, recipients, message, invitation='Your/Venue/ID/-/Edit')

How to view messages sent through OpenReview

  1. Go to https://openreview.net/messages. You should see any messages sent from your venue.

  2. Filter messages by Parent Group to narrow your search:

    • If you sent a message through a group console, enter that group ID.

    • If you sent a message through the python client and specified the parent group, search by that parent group.

    • If you sent a message through the PC console, there will not be a parent group.

  3. You can also filter by recipient, email status, and subject.

How to Send Decision Notifications Using the UI

After the decision stage closes, you will see the Post Decision Stage option on your venue request form. You will be able to use this stage to send bulk decision notifications to authors.

  1. Select "Yes, send an email notification to the authors" for the "Send Decision Notifications" field.

  2. Customize the Email Content Fields. There should be one per decision type for your venue. Do not remove the parenthesized tokens. Any fields in curly braces will be populated with the information for each paper. You can customize anything in the message so long as you do not remove the curly braces.

  3. Click submit and notification emails will be sent to all authors.

Note that if you run the Post Decision Stage multiple times, new decision notifications will not be sent again even when "Yes, send an email notification to the authors" is selected. To re-send decision notifications, you should use the.

python clientarrow-up-right

How to get email addresses

hashtag
Get Preferred Emails

Emails can be retrieved for users by including with_preferred_emails in the call to get_profiles.

For more information on the params accepted for get_profiles(), please see the documentationarrow-up-right.

venue_id = '' # For example, 'aclweb.org/ACL/ARR/2025/February'
preferred_emails_invitation_id = venue_id + '/-/Preferred_Emails'
profile_ids_or_emails = [] # For example, '~Firstame_Lastname1' or an email '[email protected]' in a list of one or multiple

profiles = openreview.tools.get_profiles(client_v2, profile_ids_or_emails, with_preferred_emails=preferred_emails_invitation_id)

For each profile you can then use profile.get_preferred_email() to get the preferred email for the profile.

hashtag
Example: How to get Author emails

In this example, the accepted submissions are being retrieved to get the authorids. The authorids are passed in get_profiles() and the preferred_name ,preferred_email , submission number, and submission title are stored in author_info.

Please contact us using the if you're having trouble getting the preferred emails for authors or if Publication Chairs need access to the preferred emails.

Feedback formarrow-up-right
venue_id = '' # For example, 'aclweb.org/ACL/ARR/2025/February'
preferred_emails_invitation_id = venue_id + '/-/Preferred_Emails'

all_accepted_authors = set()

accepted_submissions = client_v2.get_all_notes(content={'venueid':venue_id} )

for submission in accepted_submissions:
    for author in submission.content['authorids']['value']:
        all_accepted_authors.add(author)
        
profiles = openreview.tools.get_profiles(client_v2, list(all_accepted_authors), with_preferred_emails=preferred_emails_invitation_id)

How to send messages through the UI

hashtag
Group Consoles

Program Chairs can message any venue participants through the group consoles. Clicking any of the links under 'Venue roles' on your PC console will bring you to a console for that group. If you click 'Edit group', you will see the option to email those group members. You can customize the emails using the backend tags. Note that you will not be able to use the author group to message authors until after the submission deadline.

hashtag
PC Console

You can use the PC console Paper Status, Reviewer Status, or Area Chair Status tabs to message selected reviewers or area chairs, respectively. You will also have the option to message only those with incomplete reviews/metareviews, only those with completed reviews/metareviews, or only those assigned to particular papers. You can customize the emails using either the

frontend or backend tags.