Calendars

Open Settings → Calendars to keep the calendars your team trades against: a trading calendar (periods, key dates, public holidays, store trading), one or more promotion calendars (which products are on promotion, week by week), and any custom calendar you keep dates in — range reviews, supplier windows, events.

Every calendar has one source of truth. Twelfth reads it; it never edits your spreadsheet or calendar on its own. The one exception is on request: an admin can have Twelfth add a calendar tab to a spreadsheet (see below), and even then Twelfth only ever writes into a new or empty tab, once, before linking it.

What is available now

Capability Status What it means
Trading, promotion and custom calendars Available Keep separate calendars for trading periods and key dates, product promotions, or other dated business context.
Workspace and remit scopes Available Share a calendar across the workspace or keep it within one buying remit.
Google Sheets sync Available Read one tab from a spreadsheet shared with Twelfth. Twelfth checks and saves how its columns map to calendar fields. Share as Editor and Twelfth can also create and fill the tab for you in one click.
Google Calendar sync Available Connect a Google account, choose a calendar and read its events in the selected timezone.
Outlook Calendar sync Planned next Register your interest from Sync setup. Read-only Outlook support will follow after the Microsoft connection is production-ready and validated.
Updates through chat Available for unlinked calendars Paste or attach calendar material, then review a complete proposed update before applying it.
Calendar context in Twelfth AI Available Mention an accessible calendar with @, or let Twelfth consult relevant calendars when dates affect a buying, forecasting or performance question.
Two-way or outbound sync Not currently available Twelfth does not create, edit or delete events or spreadsheet rows in an external source.

The current model is deliberately source-owned: your spreadsheet or external calendar remains authoritative, and Twelfth only reads from it. This prevents an automated update from silently changing the plan your team works from.

Calendar type and scope

Choose a calendar type at the top of the page, then a scope: the whole workspace, or one buying remit. A workspace can hold as many calendars as it needs of each type — for example, a shared trading calendar plus a promotion calendar per remit. Pages that use calendars read every calendar of a type that applies to their scope, so a remit’s promotion view combines the workspace-wide promotion calendar with the remit’s own.

Add calendar creates a new one of the selected type (name it whatever your team calls it). Workspace admins can add and delete calendars anywhere; deleting one requires entering its title in a confirmation dialog. A remit owner can add and update calendars in their own remit. People only see calendars within their access.

Calendar and sync setup

The calendar choices, selected calendar details and its two views share one continuous panel. Calendar shows the dated entries and its date-range controls. Sync setup holds the source, direction, spreadsheet mapping and connection management. Calendar sync is currently inbound and read-only: the source flows into Twelfth, and Twelfth does not publish changes back to it.

“Sync” here means that Twelfth reads the current source when the calendar is needed. It is not a separate copy that you edit in Twelfth, and it is not a two-way connection.

A workspace admin can link each calendar to:

  • Google Sheets · shared with Twelfth — share the spreadsheet with the address shown on the page (as Viewer to read it; as Editor if you want Twelfth to add the tab for you) and paste its link. Twelfth finds the spreadsheet, chooses an obvious tab (for example Promotions for a promotion calendar), and checks it automatically. Nobody has to sign in to Google, and Twelfth never asks for access to your Drive. The sheet must be owned or shared by someone in your workspace; a sheet shared by someone outside it is refused.
  • Google Calendar — connect the account and choose the calendar and the timezone dates should appear in. After connecting, you return to this calendar’s Sync setup with Google Calendar selected; the Sync setup tab marks the calendar as incomplete until one is chosen.
  • Outlook Calendar — coming soon. Choose it to tell us you’d use it; in the meantime keep the calendar in a shared Google Sheet or use Update in chat.

A linked source is read when the page opens, when you return to it, and every five minutes while it is open. The source name and fetch time appear in Sync setup. Open source takes you back to the source to make changes. If a read fails, Twelfth shows the error and retries automatically when the view regains focus.

Questions and product views also read the applicable calendars on demand. A source change therefore appears on the next successful read; it does not require importing a new copy. If several calendars apply to the same remit, Twelfth combines their entries while keeping each calendar’s source and any read error separate.

One spreadsheet can hold calendars for several teams or remits. Choose Use an existing tab to select and map one already in the spreadsheet. Choose Start with a new tab to have Twelfth add one.

If the spreadsheet is shared with Twelfth as Editor, this is one click: name the tab (Twelfth suggests Promotions, Trading or Calendar), and Create tab and sync adds it with the right header row, writes in whatever the calendar already holds in Twelfth — entries applied from chat, say — and links it. That is the initial sync: what Twelfth had moves into the sheet. From then on the tab is the source of truth, exactly as for any linked tab, so rows your team types or pastes in afterwards are read by Twelfth on the next refresh. Twelfth never writes to the tab again after that click.

If Twelfth is only a Viewer, it cannot add a tab, and the page says so. Either re-share as Editor, or do it by hand: Copy template headers, open Google Sheets, paste them into A1 of a new tab, then choose that tab under New tab, once created. The by-hand path is always available, whatever the share.

Choosing an existing tab means you want what is in it: Twelfth checks and maps its columns and links it read-only. Two caveats, both stated on the page:

  • Linking does not merge. If the calendar already holds entries in Twelfth, linking a populated tab clears them — the tab is the source from then on and the only copy. Move them into the sheet first if you want to keep them (see below), or start with a new tab.
  • An empty or header-only tab can be filled from Twelfth. When the chosen tab is blank, Set up … and sync writes the template headers and Twelfth’s entries into it, then links it — the same as starting with a new tab. When the tab has its own headings but no rows, Write … entries into … writes Twelfth’s entries beneath them, in the tab’s column order, using the mapping shown under Reads as (Twelfth refuses rather than drop a field the tab has no column for). Both need an Editor share; a tab that already has rows is never written to.

Twelfth updates and checks tabs automatically when you return. A tab with the correct headers can be linked before it contains any events.

Before a tab is linked, Twelfth checks it automatically and shows what it found: each column and the field it reads as, anything required that is missing, how many rows read cleanly, a preview of the first rows, and any row that would be rejected. The headings do not have to be on row 1 — a title row or blank row above them is skipped, grouped headings above the heading row are folded in, and the check says which rows it read them from. A column with no heading (a checkbox column, say) is ignored. Each column also shows what its values look like (dates, codes, numbers, text) with a sample, because the values decide as much as the heading: with an ETA full of month names and an empty Embargo date, the ETA is the start. A second SKU column is simply left unmapped for you to choose, and any number of columns can read as Note — each keeps its heading in the note. When the sheet has a SKU column, a Supplier column is left alone: the product is linked, so its supplier, brand and category come from your catalogue rather than the sheet. The Reads as picker explains each field and the kind of value it takes. Headings such as Name, Starts, Ends, SKU, Kind, Product, Affects, States and Note are recognised automatically, including common variants (Start date, Title, Product code, Region). Twelfth suggests a mapping for unfamiliar headings with AI when it is available and falls back to the familiar heading matches. Every result remains editable under Reads as, and changing a mapping re-runs the check. The mapping is saved with the link and applied on every read.

In the promotion grid, months and week-ending dates are shown on separate header rows. Hover a promotion mark, or focus it with the keyboard, to see the promotion name, full date range and any available context.

Name (or Product) and Starts are required. In a promotion calendar every row also needs a SKU (a promotion on one product) or an Affects value naming the category, brand or supplier it covers (a promotion across a range); the grid gives a range promotion its own line under that name. A missing end date means a single day. Dates are read as typed: native sheet dates, 2027-03-12, 7-Mar-2022, 12 March 2027, Mar 2027, and 12/03/2027 read day-first (Australian) unless the column shows otherwise. A bare month (July) or span (Sept/Oct) runs the whole month when the tab’s title names a year (2027 Pre-Orders); without one the row is reported. NOW, TBC and the like are not dates. A formula error only matters in a column the calendar reads. SKUs keep their displayed leading zeros. A header-only tab can be linked while empty; after that, every populated row must read cleanly, so nothing partial or wrong reaches a buying page.

Choosing a Google or Outlook calendar reads it over the date range shown on the Calendar tab and shows what it holds before anything is linked: how many events there are, a preview table of the ones that read cleanly, and each event the link would refuse and why. A calendar links only when every event in the range reads cleanly (an empty calendar can be linked and filled later). A public-holidays or team calendar belongs in a trading calendar, where every dated event is welcome; it is refused as a promotion calendar because its events name no product or range.

For a promotion calendar from Google Calendar, use a dedicated calendar and give each event description a SKU: … line (one product) or an Affects: … line naming the category, brand or supplier (a range). Optional Product: …, States: … and Kind: … lines add context. Recurring events and cancellations are reflected in the view.

Calendars in AI chat

Twelfth AI knows which calendars your workspace keeps. Type @ in any chat composer and pick a calendar — @Trading, @Promotions — to have the answer read it and relate what it finds (an upcoming Black Friday, a promotion on a product, a public holiday in a quiet week) to the figures in the answer. You do not have to mention one: when timing bears on a buying, forecasting or performance question, Twelfth consults the relevant calendar on its own and says so. It only ever reads calendars within your access, and only the dates in the window the question is about.

Update in chat

Without a linked source, choose Update in chat to leave Settings and open a new full-page chat with an editable prompt for that calendar. Paste or attach the calendar material, adjust the request if needed, then send it when you are ready. Twelfth reads the existing calendar and prepares a complete replacement for review; if no calendar of that type exists yet, it creates one to hold the proposal. Open the review link, check the entries, and choose Apply update or Discard update.

There are no event-entry forms or editable calendar cells. A linked source cannot be overwritten through chat. To change that workflow, an admin can unlink the source; the calendar then starts empty until a new source is linked or an update from chat is applied.

What we will do next

Our next provider is Outlook Calendar, using the same inbound, read-only model as Google Calendar. The setup is already represented in the product so teams can register interest; connection will become available after the Microsoft account flow has completed production validation.

We will keep improving spreadsheet setup, automatic column mapping and recovery when a source changes. Longer term, we will evaluate additional calendar sources and reviewable outbound workflows with customers. Two-way sync and direct event editing are not committed features today: they need explicit ownership, conflict handling and review controls before Twelfth can safely write to a team’s source of truth.

This page will be updated as planned capabilities become available; the status table above is the current source of truth.

An account marked Not configured in this environment needs its OAuth configuration completed by the workspace operator before it can connect. If a linked account loses access, use Reconnect account or have the source owner restore access.