
The Tactic connector ingests workplace room-scheduling data from Tactic into the Mapped graph. It imports your Tactic offices as Buildings and your bookable meeting rooms as Spaces, then continuously polls Tactic for reservations and materializes them as Calendar Events attached to each room's booking calendar.
This gives the Mapped Graph a live, structured view of when and where rooms are booked. This data that can be forwarded downstream (for example, to the Willow Events Destination Connector) to drive energy optimization and space-utilization use cases.
The connector authenticates against the Tactic Public API v1 using a static API key (bearer token).
| Field | Required | Description |
|---|---|---|
| API Key | Yes | A Tactic Public API key. Provided by your Tactic administrator from the Tactic admin console. |
This connector uses the Mapped entities framework (not legacy place mappings). Import happens in two stages, each presented as its own step in the configuration UI:
Each selected entity is reviewed and merged into the Graph, where you can adjust the mapped name (and space code for rooms) before saving.
| Option | Default | Description |
|---|---|---|
| Offices to Poll | All | Select which offices are included when polling for reservation events. If no offices are selected, all offices with merged rooms are polled. |
| Current Events Poll | Enabled | Polls Tactic for new and updated reservations every 30 minutes. |
| Future Events Poll | Enabled | Polls Tactic for upcoming reservations across a 30-day lookahead, once per day. |
The Backfill section lets you import historical reservations for a specific date range on demand. Select a start and end date and start the backfill; large ranges are automatically chunked into 7-day windows to respect Tactic API limits. Only one backfill can run at a time. Progress is reported in the connector logs.
| Tactic API Model | Mapped Entity | exactType | Notes |
|---|---|---|---|
| Office | Building | Building | Named from the Tactic office name. |
| Resource (meeting room) | Space | Space | isPartOf its office Building. Only meeting rooms are imported. |
| (per room, automatic) | SpaceBookingCalendar | Space_Booking_Calendar | One booking calendar is created per imported room, linked to the room via hasCalendar. |
| Reservation | CalendarEvent | Calendar_Event | Attached to the room's booking calendar via hasCalendarEvent; hasLocation points to the room. |
Only reservations in an accepted or cancelled state are processed; pending reservations are ignored. If a reservation is moved to a different room, the event's link to the previous room's calendar is removed on the next merge.
List the buildings and rooms created by this connector
Request ResponseCopy1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18{ connectors(filter: {id: {eq: "your-connector-Id"}}) { id name buildings { id name exactType mappingKey spaces { id name exactType mappingKey } } } }
Read a room's booking calendar and its events
Request ResponseCopy1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30{ connectors(filter: {id: {eq: "CONV5emwbkMNooPqq4FCfaEGs"}}) { spaces { id name exactType mappingKey isPartOf { id name exactType } hasCalendar { id name exactType mappingKey hasCalendarEvent { id name exactType mappingKey exactType startTime endTime } } } } }
