Skip to the documentation
Knowledge base

Meetings & calendar

A calendar at /mail/calendar in month, week and day views, holding both your meetings and the mail you have queued to go out later.

Details

  • An invitation that arrives as a text/calendar part is read at delivery and becomes an event, with Yes / Maybe / No on the message itself. Answering mails a METHOD:REPLY back to the organiser naming only you. A reply listing every attendee is read by Outlook as the organiser restating everybody’s status, and one decline would reset the meeting.
  • Meetings you create send a real METHOD:REQUEST invitation, so Gmail, Outlook and Apple Mail draw their own accept/decline card. Editing one raises its SEQUENCE and re-invites; cancelling sends a METHOD:CANCEL rather than silently deleting it from your side only.
  • Repeats daily, every weekday, weekly, fortnightly, monthly by date or by weekday (the second Tuesday, the last Friday), or yearly, and any rule another calendar sends is kept and expanded as it was written, with its exceptions and extra dates. Recurring series are expanded in the zone the event was written in, so a 09:00 standup stays at 09:00 across a daylight-saving change.
  • Scheduled mail is drawn on the same grid, because a message queued for Tuesday morning is a thing that happens on Tuesday morning. Open one to edit its recipients, subject or body, move it to another time, or stop it going out.
  • Times are held as instants and rendered in your own zone; all-day events are stored as dates so they do not slide to the previous day west of Greenwich.
  • Other calendars come in by link. Paste the iCalendar address of a Google or Outlook calendar, a team rota or public holidays under Calendars, Other calendars, and its events show in their own colour, read-only, read again about every 30 minutes. A calendar can be hidden without unsubscribing.
  • Your calendar goes out by link as well. Calendars, Share makes a secret address that Google Calendar, Outlook and Apple Calendar subscribe to, showing every detail or busy times only, and resetting it cuts off everyone who has the old address.
  • Calendar apps can sign in to it. Apple Calendar, Thunderbird and DAVx5 on Android connect over CalDAV with the address and an app password, and what you create, move or answer there shows in Nextmail too.
  • A guest can propose a new time instead of only answering yes or no, from Nextmail, Google Calendar or Outlook. The organiser sees the proposal on the event and either moves the meeting to it or keeps the original time, and the guest is told either way.

Subscribe to another calendar

A subscription shows another calendar beside your own, such as a Google or Outlook calendar, a team rota, a fixture list or public holidays. All it needs is the calendar’s iCalendar link, an address that usually starts with https:// or webcal:// and ends in .ics.

  1. On the Calendar page, choose Calendars at the top, then Other calendars.
  2. Paste the link and choose Subscribe. Nextmail reads the calendar straight away and says how many events it found.
  3. From its row, pick a colour, rename it, hide it from the grid, read it again now or unsubscribe.
  • Google Calendar: open the settings of the calendar and copy Secret address in iCal format, or Public address in iCal format for a public calendar.
  • Outlook on the web: under Settings, Calendar, Shared calendars, publish the calendar and copy its ICS link.
  • iCloud: share the calendar as a public calendar and copy its link.
  • Subscribed events are read-only here. Change them where the calendar is published, and the change arrives with the next read, about every 30 minutes, or at once when you choose Read it again now.
  • A subscription belongs to the person who added it, and nobody else in the workspace sees it. Each person can subscribe to 20 calendars of up to 10 MB and 3,000 events each.
  • When a calendar cannot be read, its row says why and Nextmail keeps trying, less often each time. After ten failures in a row it stops until you read it again by hand.

Share your calendar with a link

A calendar link publishes your Nextmail calendar as an iCalendar feed. Google Calendar, Outlook, Apple Calendar and almost every other calendar app can subscribe to it and keep it up to date.

  1. On the Calendar page, choose Calendars, then Share.
  2. Name the link, choose whether it shows every detail or busy times only, and choose Create link.
  3. Copy the link into the other app: in Google Calendar choose Other calendars, then From URL, in Outlook Add calendar, then Subscribe from web, and in Calendar on a Mac File, then New Calendar Subscription. On a device with a calendar app, Open in your calendar app does it in one step.
  • Anyone with the link can read what it shows without signing in, so treat it like a password. Busy times only shows when you are busy and nothing else: no titles, places, guests or notes.
  • Reset link gives the link a new address, and the old one stops working at once. Turn off removes it for good.
  • The other app decides how often it reads the link, usually every few hours, so a change made in Nextmail can take that long to show there. The link covers roughly the last 13 months and the next three years.
  • Each person can keep 10 links. A link shows the calendar of the person who made it, in the workspace it was made in.
  • A link never shows more than your own events, even when the workspace owner has Show team events on.

Use the calendar in a calendar app

Apple Calendar, Thunderbird, DAVx5 on Android and other apps that speak CalDAV sign in to the calendar and keep it in step both ways: what you create, move or answer in the app shows in Nextmail, and the other way round.

SettingValue
Serverhttps://api.openemail.uk/dav/
UsernameThe whole address, such as [email protected]
PasswordAn app password for that address, made on its Mail apps tab under Settings → Addresses
  • Apple Calendar on iPhone or iPad: Settings, Calendar, Calendar Accounts, Add Account, Other, Add CalDAV Account. On a Mac: Calendar, Add Account, Other CalDAV Account. The profile on the Mail apps tab adds Mail and Calendar together.
  • Android: install DAVx5, choose Login with URL and user name, enter the server, the address and the app password, and pick the calendar. It then shows in Google Calendar and every other calendar app on the phone.
  • Thunderbird: in the Calendar tab, choose New Calendar, then On the Network, enter the address as the username and the server as the location, and sign in with the app password.
  • A calendar app signed in as an address sees the events that address organises or is invited to, and the events you created yourself. Your subscriptions show beside them as read-only calendars.
  • Inviting people from the calendar app sends real invitations from that address, and answering an invitation there tells the organiser, as the buttons in Nextmail do. Changing events needs permission to change the calendar, and sending invitations needs permission to send from the address.
  • Google Calendar and Outlook.com cannot sign in to another calendar server, so give them a calendar link instead.
  • Revoking the app password signs the calendar app out within about five minutes.

New times proposed by guests

A guest can answer an invitation with another time instead of only yes or no. Nextmail, Google Calendar and Outlook all send and read these proposals.

  • As a guest, choose Propose a new time on the invitation or the event, pick the start and end, and choose Send proposal. The organiser gets it by email with your answer, and the meeting keeps its time until they move it.
  • As the organiser, you see proposals on the event and on the invitation card under New times proposed. Use this time moves the meeting and sends everyone the update. Keep the original tells that guest the time stays.
  • A proposal made in another calendar app arrives the same way, and one sent from Nextmail reaches an organiser on Google Calendar or Outlook as a normal proposal there.

How invitations travel

Every invitation, answer, update and cancellation is an email that carries a small iCalendar part, so meetings work with people on any calendar.

WhenWhat is sent
You invite peopleAn invitation, METHOD:REQUEST, with the event and its time zone. Gmail, Outlook and Apple Mail draw their own card for it.
You change the meetingThe invitation again with a higher SEQUENCE. Guests you removed get a cancellation.
You cancel itA cancellation, METHOD:CANCEL, to everyone invited
You answer an invitationA reply, METHOD:REPLY, to the organiser, naming only you
You propose a new timeA proposal, METHOD:COUNTER, to the organiser
The organiser keeps the timeA refusal of the proposal, METHOD:DECLINECOUNTER, to that guest
  • Only the organiser can change or cancel a meeting. An update or a cancellation that claims to come from anyone else is ignored, and an answer counts only for the guest who sent it.
  • Repeating meetings keep their exceptions. One meeting moved or cancelled in a series stays that way, whether the change came from Nextmail or from another calendar.
  • Times keep their zone. The time zone definitions inside invitations and the Windows zone names Outlook uses are read, so a meeting set for 09:00 in New York stays at 09:00 in New York, through every daylight saving change.

From code, the terminal and agents

Calendar links, subscriptions and proposals are in the REST API under /calendar/feeds, /calendar/subscriptions and /calendar/events/{id}/decline-proposal, in the SDKs and the CLI under calendar, and in the MCP tools.

  • Reading needs calendar:read and every change needs calendar:write. Declining a proposal emails the guest, so it needs emails:send as well.
  • Calendar links and subscriptions belong to the person who made them. An API key acts for the workspace owner, and a key limited to some addresses or domains cannot manage either, because both cover the whole calendar.
  • POST /calendar/events/{id}/respond takes proposedStart and proposedEnd to propose a time with an answer, and every attendee carries the time they proposed.
  • The mail app settings of an address carry caldav, the server a calendar app signs in to.

Bring a calendar across

  • Upload an .ics file under Import in the Calendars dialog, and its events become events of your own that you can edit. A file may be 10 MB and hold 25,000 events, and several calendars in one file are merged, with their names kept in the report.
  • Nobody on an imported event is emailed, when it comes in or when you change it later. Editing, cancelling or answering such an event stays quiet unless you switch Notify guests on for that change.
  • An event whose UID is already in the workspace is skipped and counted, never overwritten, so uploading the same file twice adds nothing. Remove imported events undoes one import and leaves everything else alone.
  • A live mailbox import brings calendars in the same way: over the same app password for iCloud, Fastmail and Yahoo, over the Microsoft sign-in for Outlook, and from the .ics files inside a Google Takeout archive for Gmail.

Whose events you see

The Calendar page shows your own events: the ones you made and the ones an address of yours organises or is invited to. A member sees this for the addresses they were given.

  • The workspace owner sees the same by default. An address counts as the owner’s unless it was given to a teammate or has an address password, so a teammate’s meetings and personal events stay out of the owner’s calendar.
  • To see the whole team, the owner turns on Show team events in the three dots menu of the Calendar page, or the same switch on the Calendar screen of the phone app. It is remembered on every device, and it adds every teammate’s event apart from the ones marked private.
  • Calendar links and calendar apps never show more than your own events, whatever the switch says.
  • Over the API the event list takes includeTeam, and only the owner and the owner’s keys see more with it. A member’s app and a key limited to some addresses always get their own events.

Search and birthdays

Search events, at the top of the Calendar page, finds events by the words in their title, their place or their organiser, from six months back to six months ahead. Every word has to match, and choosing a result opens the event.

  • Show birthdays in the three dots menu of the Calendar page adds the birthdays of the people in your address book as all-day entries, with the age they turn when the card holds the year. Choosing one opens the contact, and the switch is remembered on every device.
  • Somebody born on 29 February shows on 28 February in the years without one.
  • Over the API the event list takes q, and GET /contacts/birthdays returns the birthdays between two dates.

Reminders

Reminder in the event editor sets when an event reminds you, from 5 minutes to a day before it starts. Each reminder goes out once, for every date of a repeating event too: a notification on the phones you are signed in on, and an email when no phone is signed in or the reminder asks for one.

  • People in the workspace who are invited get the reminders too, once they accept or answer maybe. Nobody is reminded of an event they declined or hid.
  • Booked meetings remind as well: by default the guest is emailed a day before and you are reminded ten minutes before. Remind the guest and Remind you, on the Setup tab of a booking page, take up to three times each.

Find a time and hide invitations

  • Find a time in the event editor suggests the first times in the next two weeks when everyone you invite from the workspace is free, on weekdays between 09:00 and 17:00 in your time zone. It reads only when they are busy, never what their events are, and names the guests whose calendars it cannot see.
  • Hide from my calendar takes an invitation off your own calendar and leaves it for everyone else, and Show on my calendar puts it back. Remove shows only on the events you made or organise, and on every event for the workspace owner.
  • Over the API the event calls take scope and occurrenceStart for one date of a series, events carry meetingUrl, GET /calendar/free-busy reads busy times and POST /calendar/events/{id}/hide hides an event.