---
title: "HubSpot Events Calendar Module: Free Calendar and Agenda"
description: A free HubSpot module for associations. Show events as a month calendar, a date-grouped agenda or cards, with search, type filters and add-to-calendar links.
image: https://allgusto.com/hubfs/brand-2026/products/events-calendar/events-calendar-og-1200x630.png
---

[Skip to content](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda#main)

[![All Gusto](https://allgusto.com/hs-fs/hubfs/All%20Gusto%20-%20Logo%20-%20Black%20-%20Transparent-1.png?width=340&height=226)](https://allgusto.com/)

- [Home](https://allgusto.com/)
- [About](https://allgusto.com/about)
- [Apps and Themes](https://allgusto.com/hubspot-apps-and-themes)
- [Blog](https://allgusto.com/blog)
- [Contact](https://allgusto.com/contact-us)

# HubSpot events calendar and agenda module

Your events page should answer "when is the next meeting?" before a member has to email you.

[Get it on HubSpot](https://ecosystem.hubspot.com/marketplace/website/events-calendar-and-agenda-module-by-all-gusto) [Read the setup guide](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda/docs) 

![Events Calendar and Agenda month calendar for November 2026 with search, event type filters and an all-day event label, on the demo page with fictional events.](https://allgusto.com/hs-fs/hubfs/brand-2026/products/events-calendar/launch/01-month-calendar.png?width=1600&height=1200&name=01-month-calendar.png)

If your association runs conferences, chapter meetings, webinars and board meetings, members still end up asking staff when the next one is, or they open the events page and find today's meeting already listed as past. Events Calendar and Agenda is a free HubSpot events calendar module that shows your events as a month calendar, a date-grouped agenda or cards, and you add and edit every event in the normal page editor. An event stays in Happening now until it ends, and an all-day event stays current until the end of its day in the timezone you set. It works with all HubSpot plans, and you can see it running with fictional events on the [live demo](https://portal-dev.allgusto.com/events-calendar-and-agenda-demo) before you install it.

## Who it is for

I built this module for associations and member organizations that keep a steady calendar and run their website on HubSpot. The module keeps each event in one row of fields, so the person maintaining it fills in a title, a start and end, a location, a type and a register link, and the layout handles the rest. It is not tied to a theme, so you can place it on a website page, a landing page or a blog template. If your events already live somewhere HubSpot does not reach, read the out-of-scope section below before you start.

## What it does

Each event has a title, a start and end time, a location, an event type and a button link for registration or details. The link can point to a web page, a same-site path, an on-page anchor, a file or an email address, and anything else is not rendered as a link, which keeps a bad paste from going live. Leave the end empty and the event runs one hour. Mark it all day and the time is replaced by an all-day label. You can feature up to three events, and featured events get a stronger border.

You choose one of three layouts. Cards are a responsive set of event cards, split into Happening now, Upcoming and Past. The month calendar is a fixed six-row month that opens on the month you pick, with Previous and Next month controls, and the week can start on Sunday or Monday. The agenda is a chronological list grouped by start date, with a heading for each day. On screens narrower than a width you set, the month calendar switches to a list of every event in the six weeks it shows.

![Agenda view grouped by day, with a date heading above each day's events.](https://allgusto.com/hs-fs/hubfs/brand-2026/products/events-calendar/launch/02-agenda.png?width=1600&height=1200&name=02-agenda.png) ![Two phone-width views at 390 pixels, where the month calendar becomes a list of events.](https://allgusto.com/hs-fs/hubfs/brand-2026/products/events-calendar/launch/04-mobile-390.png?width=1600&height=1200&name=04-mobile-390.png)

Members can search by title, location or type, filter by event type and clear both in one click. Cards and the agenda show a set number of events at first, 10 by default, with Show more and Show less. Cards, the agenda and the mobile list give each event an Add to Google Calendar link and a downloadable .ics file. The month calendar works with the keyboard and marks today for screen readers, and the visible count of shown events is announced after a search or filter change.

![Cards view with the Webinar type filter on, showing three webinar events.](https://allgusto.com/hs-fs/hubfs/brand-2026/products/events-calendar/launch/03-filter-webinar.png?width=1600&height=1200&name=03-filter-webinar.png)

The module can also add structured event data in the schema.org Event format for search engines to read. It is on by default and covers events that have not ended and have a location.

## What it does not do

The module is deliberately self-contained, and I would rather you know the limits now than after you have built the page.

- It does not read your CRM, HubDB or HubSpot marketing events. Every event lives in the module's own fields, and you add or change events there.
- It does not take payments or run registration. The button link sends members to whatever registration page you already use.
- It does not accept raw HTML embed code. The registration embed field takes an oEmbed URL that HubSpot can resolve, such as a video. Eventbrite, Humanitix, Zoom and Cvent are not oEmbed providers, so for those, put the registration page in the button link.
- It does not keep the filter in the address bar, so a filtered view cannot be shared as a link.

Any embed that does resolve comes from the provider, may need an account with them and is subject to their terms.

## Setup order

This is the order I would follow on any page. Each step depends on the one before it, and doing them out of order usually means fixing events twice.

| Step | What you do | Why it comes here |
| --- | --- | --- |
| 1 | Install the module from the HubSpot Marketplace and add it to a page | Nothing else exists until the module is on a page |
| 2 | Check your account timezone in Settings \> Account defaults, then set the display timezone (an IANA name such as America/New\_York) and language tag | Event times are entered in your account's timezone and only shown in the display timezone, so get both right before you type a single date |
| 3 | Replace the five teaching events with your own, filling in type, location and button link | Search, filters and structured data all read these fields, and the teaching events are dated 2028 |
| 4 | Pick the layout, events shown at first, week start and time format | Layout choices only make sense once real events are in place |
| 5 | Mark up to three featured events | Featuring depends on knowing which events matter most |
| 6 | Edit the labels and styles | Labels are easier to judge against real events in the chosen layout |
| 7 | Decide on structured data, then test on the live page | Turn it off if your theme already outputs Event data, and test outside the editor before you share the page |

The [setup guide](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda/docs) walks through each field group in that order. Step 2 is the one people get wrong. If a typed timezone is not a real zone name, the module falls back to America/New\_York and shows a warning in the editor, so read that warning rather than dismissing it.

## Frequently asked questions

### Does it pull events from my CRM or HubSpot marketing events?

No. The module does not read your CRM, HubDB or marketing events. Every event is entered in the module's own fields in the page editor, one row per event. The trade-off is that if you already manage events elsewhere, you enter them here as well. If that double entry is the real problem, tell me through the contact form and I will tell you what is realistic in your portal.

### Which HubSpot subscription do I need?

The Marketplace listing says it works with all HubSpot plans. The module is not tied to a theme, so you can add it to a website page, a landing page or a blog template.

### Can members register through the calendar?

Members register through the button link on each event, which can point to your registration page, a file or an email address. The module has no registration or payment fields of its own. A registration embed works only when the provider supports oEmbed and HubSpot can resolve the URL. Eventbrite, Humanitix, Zoom and Cvent are not oEmbed providers, so for those, the button link is the registration path. When an embed does resolve, it loads when a visitor opens the event's details, and the register button stays the main call to action.

### What happens with timezones and daylight saving?

You enter event times in your HubSpot account's timezone, and the display timezone only controls how they are shown. Use an exact IANA name such as America/New\_York. If the field holds text that is not a timezone, the module falls back to America/New\_York and shows a warning in the editor. Day arithmetic for the grid runs from noon in that zone, so a daylight-saving hour cannot move an event onto the wrong date. An all-day event stays current until the end of its day in that timezone.

### Will it add Event structured data to my page?

Yes, by default. The module outputs schema.org Event data for events that have not ended and have a location; an event without a location still shows on the page but is left out of the data. If your page or theme already outputs Event data for the same events, turn the setting off so the events are not described twice. I also turn it off on any page that shows sample or test events, so search engines do not index events that are not real.

### Can I translate it or change the wording?

Yes. Every string visitors see is in the Labels fields, including button text, the search hint, Show more, Clear filters, Previous month, Next month, weekday names and month names. Leave weekday or month names empty and the visitor's language fills them in. The language and region field takes a tag such as en-US or de-DE, and an unmatched tag falls back to en-US. Translate the fields rather than editing the template, so updates do not overwrite your changes.

### How does support work?

Support is free, in English, at info@allgusto.com. It comes to me directly, not to a ticket queue.

## Get Events Calendar and Agenda

Start with the [live demo](https://portal-dev.allgusto.com/events-calendar-and-agenda-demo) to see the month calendar, the cards and the agenda with fictional events, then read the [setup guide](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda/docs) so you know the order before you build the page. The module is free on the [HubSpot Marketplace](https://ecosystem.hubspot.com/marketplace/website/events-calendar-and-agenda-module-by-all-gusto) and installs straight into your account. All Gusto is a HubSpot Solutions Partner, and I build every product on this page and answer its support email myself. You can also see the [other HubSpot apps and themes I build](https://allgusto.com/hubspot-apps-and-themes).

[Get it on HubSpot](https://ecosystem.hubspot.com/marketplace/website/events-calendar-and-agenda-module-by-all-gusto) [Read the setup guide](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda/docs)

© 2026 All Gusto, LLC

- [Home](https://allgusto.com/)
- [About](https://allgusto.com/about)
- [Apps and Themes](https://allgusto.com/hubspot-apps-and-themes)
- [Gatehouse member portal theme](https://allgusto.com/hubspot-apps-and-themes/gatehouse-member-portal)
- [Events Calendar and Agenda module](https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda)
- [Blog](https://allgusto.com/blog)
- [Contact](https://allgusto.com/contact-us)
- [Privacy](https://allgusto.com/privacy)
- [Terms](https://allgusto.com/terms)

```json
{
  "@context" : "https://schema.org",
  "@type" : "SoftwareApplication",
  "applicationCategory" : "BusinessApplication",
  "description" : "A free HubSpot module for associations. Show events as a month calendar, a date-grouped agenda or cards, with search, type filters and add-to-calendar links.",
  "image" : "https://allgusto.com/hubfs/brand-2026/products/events-calendar/launch/01-month-calendar.png",
  "name" : "Events Calendar and Agenda",
  "offers" : {
    "@type" : "Offer",
    "availability" : "https://schema.org/InStock",
    "price" : "0",
    "priceCurrency" : "USD",
    "url" : "https://ecosystem.hubspot.com/marketplace/website/events-calendar-and-agenda-module-by-all-gusto"
  },
  "operatingSystem" : "HubSpot CMS",
  "publisher" : {
    "@type" : "Organization",
    "name" : "All Gusto",
    "url" : "https://allgusto.com/"
  },
  "url" : "https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "FAQPage",
  "mainEntity" : [ {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "No. The module does not read your CRM, HubDB or marketing events. Every event is entered in the module's own fields in the page editor, one row per event. The trade-off is that if you already manage events elsewhere, you enter them here as well. If that double entry is the real problem, tell me through the contact form and I will tell you what is realistic in your portal."
    },
    "name" : "Does it pull events from my CRM or HubSpot marketing events?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "The Marketplace listing says it works with all HubSpot plans. The module is not tied to a theme, so you can add it to a website page, a landing page or a blog template."
    },
    "name" : "Which HubSpot subscription do I need?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Members register through the button link on each event, which can point to your registration page, a file or an email address. The module has no registration or payment fields of its own. A registration embed works only when the provider supports oEmbed and HubSpot can resolve the URL. Eventbrite, Humanitix, Zoom and Cvent are not oEmbed providers, so for those, the button link is the registration path. When an embed does resolve, it loads when a visitor opens the event's details, and the register button stays the main call to action."
    },
    "name" : "Can members register through the calendar?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "You enter event times in your HubSpot account's timezone, and the display timezone only controls how they are shown. Use an exact IANA name such as America/New_York. If the field holds text that is not a timezone, the module falls back to America/New_York and shows a warning in the editor. Day arithmetic for the grid runs from noon in that zone, so a daylight-saving hour cannot move an event onto the wrong date. An all-day event stays current until the end of its day in that timezone."
    },
    "name" : "What happens with timezones and daylight saving?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Yes, by default. The module outputs schema.org Event data for events that have not ended and have a location; an event without a location still shows on the page but is left out of the data. If your page or theme already outputs Event data for the same events, turn the setting off so the events are not described twice. I also turn it off on any page that shows sample or test events, so search engines do not index events that are not real."
    },
    "name" : "Will it add Event structured data to my page?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Yes. Every string visitors see is in the Labels fields, including button text, the search hint, Show more, Clear filters, Previous month, Next month, weekday names and month names. Leave weekday or month names empty and the visitor's language fills them in. The language and region field takes a tag such as en-US or de-DE, and an unmatched tag falls back to en-US. Translate the fields rather than editing the template, so updates do not overwrite your changes."
    },
    "name" : "Can I translate it or change the wording?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Support is free, in English, at info@allgusto.com. It comes to me directly, not to a ticket queue."
    },
    "name" : "How does support work?"
  } ]
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "BreadcrumbList",
  "itemListElement" : [ {
    "@type" : "ListItem",
    "item" : "https://allgusto.com/",
    "name" : "Home",
    "position" : 1
  }, {
    "@type" : "ListItem",
    "item" : "https://allgusto.com/hubspot-apps-and-themes",
    "name" : "Apps and Themes",
    "position" : 2
  }, {
    "@type" : "ListItem",
    "item" : "https://allgusto.com/hubspot-apps-and-themes/events-calendar-and-agenda",
    "name" : "Events Calendar and Agenda",
    "position" : 3
  } ]
}
```