How to send a calendar invite
Two jobs hide behind one phrase: inviting named guests from Outlook or Google, and publishing an event for people you have no addresses for.
Sending a calendar invite is two unrelated jobs wearing one phrase, and which of them you have decides everything that follows.
You know exactly who is coming. Six colleagues, a client, your sister. You have their email addresses, you want the meeting on their calendars, and you want to know who said yes. That errand belongs to Outlook or Google Calendar, and it is the one every other guide describes.
You have no list of recipients. A workshop announced on a page, a webinar in a newsletter, a slot confirmed after somebody registers. There is no send here, because the audience arrives later and one at a time. What you publish instead is a small file and a pair of ready-made links, and that is the ICS file generator.
Inviting guests you have addresses for
The two big calendars work alike, and neither takes more than a minute.
Google Calendar. Create the event, then open the guest field and type or paste the addresses. Save it, and you are asked whether to notify the guests by email; say yes, or nobody learns anything.
Outlook. Start a meeting rather than an appointment — the difference is that a meeting has an addressee row. Put the guests there and press send.
Every guest is prompted to answer. Outlook can be told to stop asking, in the response settings attached to the meeting — worth doing for a company all-hands where two hundred replies help nobody. Google Calendar always offers the guest the choice.
To see who accepted, open the event from your own calendar rather than the mail you sent. Both list the guests with their current answer beside each name, updated as replies arrive.
What is actually being sent
The invitation is an ordinary email carrying a small attachment: a calendar file, rarely over two kilobytes, describing the meeting in plain text. If the attachment is itself the puzzle, our guide to the .ics format explains what its lines say.
One field in it decides whether the recipient sees Accept and Decline buttons or merely an event they may add. It sits on the calendar rather than the event:
METHOD:REQUEST
REQUEST says a reply is being asked for, and mail clients draw the answer buttons for
it. PUBLISH is the other kind — an announcement, no question attached, and no buttons.
Same format, same attachment, entirely different behavior at the far end. When an invite
arrives with no way to respond, this is usually why.
Worth being straight about our own side of it: the generator on this site writes
METHOD:PUBLISH, always, and lists no guests. That is not an omission to be fixed. A
download link has no recipients, and there is no mailbox behind it to collect the answers,
so an invitation asking for replies nobody could receive would be a lie told in a
standardized field. If you want to know which kind a file you were sent is, the
ICS viewer reports it.
The replies, and why a few never land
Each guest appears on their own line inside the event, written as a mail address with a couple of settings hanging off it:
ATTENDEE;CN=Sam Ohlin;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:mailto:sam@example.com
RSVP=TRUE is the request for an answer. PARTSTAT is the answer so far, and it starts at
NEEDS-ACTION for everybody. When Sam clicks Accept, his calendar mails you a small file
of its own, marked METHOD:REPLY, carrying one attendee line with the status changed. Your
calendar matches it to the meeting and moves his name into the accepted column. Nobody
types anything; two programs exchange a message about a third thing.
Across providers this mostly works, and mostly is the honest word. Google, Microsoft and Apple all implement the same exchange. The edges break it: a mail program that strips attachments, a shared mailbox answering on somebody’s behalf, a guest who forwards the invitation to a colleague you never added. The meeting still sits correctly in everyone’s calendar; only the bookkeeping is wrong. So when a headcount matters — catering, a room with a limit — confirm it in words rather than trusting the tally.
Changing a meeting you have already sent
Move it by editing the existing entry and sending the update. Do not delete the meeting and create a replacement, which is the instinct and which leaves every guest holding two appointments.
The mechanism explains the rule. Every event carries a permanent identifier plus a revision number that climbs whenever you change something, and an arriving message is compared against what the calendar already holds: same identifier and a higher revision means replace this, an unfamiliar identifier means add this. Delete and recreate, and you hand out a new identifier — so the old entry stays put and a second one lands beside it.
The same pair of fields is why a published file can be re-downloaded safely, and the generator puts both within reach: paste in the identifier you circulated last time, raise the revision, and returning visitors get an edit instead of a second appointment.
The hour is the part that goes wrong
A meeting at two o’clock with guests in Chicago, Lisbon and Bangalore is fine as long as the invitation carries a zone, and one sent from Outlook or Google always does — the program knows where you are and attaches it. Each guest sees the moment in their own local hours.
What defeats that is a time typed into the notes: “Let’s say 2pm.” Nothing attaches a zone to a sentence, so somebody reads it as their own two o’clock and misses the meeting by six hours while looking at a perfectly correct invitation.
When you cannot guess what calendar they use
Consultants, parents at a school, anyone signing up from anywhere — you cannot assume Outlook, and a file on its own leaves the Google half of them stuck. What reaches everybody is the two mechanisms side by side: a download, which iPhone, Mac and Outlook open in a single step, and pre-filled links that open a filled-in new event inside Google Calendar or Outlook on the web.
The ICS file generator produces both from one form, along with the markup to paste onto a page. It runs in the browser: you are describing an event rather than handing over a document, so nothing needs to leave the tab.
A whole program rather than a single meeting
A conference, a course, a season of fixtures: the sessions already sit in spreadsheet rows, and retyping them into a form one at a time is the wrong shape of work. Excel to Calendar reads those rows and returns one combined file for whoever wants the lot, plus a file per row so each session page carries its own button.
Two things not to do
Do not send a screenshot of your calendar. It looks like an invitation and does none of the work: nothing is added, nothing can be answered, and the recipient retypes it or forgets it.
Do not leave the only copy of the time in prose. An email saying Thursday afternoon, with no attachment and no zone, is a statement of intent. The point of the format is that a machine reads the hour so no human has to.