Time Zones

Whether booking appointments for two users in the same locale, or connecting users from across the globe, OnSched supports all time zones worldwide.

🚀

Now Stored in UTC

In version 3.0.0 Appointments are now stored in UTC instead of the Business Time Zone.

"What does this mean for me?"
This means that we can better support users who have Resources and Customers that span across multiple time zones. By storing all Appointments in the same time zone we are able to safely cross the dateline for appointments, enabling multi-day and repeat appointments which will be soon to come!

Location Time Zone

The location time zone determines the time zone for all services within it. If a service has a scope of “COMPANY,” its time zone is inherited from the location in which it is being queried.

For example, if the same service is linked to two locations, one in a Pacific time zone and one in an Eastern zone, and its availability is from 9 am to 5 pm, it will be available from 9 am to 5 pm Pacific when queried in the Pacific location, and vice versa in the Eastern location.

Resource Time Zone

By default the Resource will inherit the time zone of the first Location that they are associated to. If your Resource is associated to more than one Location please keep in mind the time zone of all Locations associated and ensure that their availability is overlapping correctly. For example...

There are 2 Locations, and a Resource. The Resource is associated to both Locations but each are in different time zones:

NOTE: Change the tabs in the code example to switch assets

{
  "object": "location",
  "name": "Location Pacific",
  "timezone": "America/Los_Angeles",
  "weeklyAvailability": [
    {
      "dayOfWeek": 1,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    },
        {
      "dayOfWeek": 2,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }, 
        {
      "dayOfWeek": 3,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }
  ]
}
{
  "object": "location",
  "name": "Location Eastern",
  "timezone": "America/New_York",
  "weeklyAvailability": [
    {
      "dayOfWeek": 1,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    },
        {
      "dayOfWeek": 2,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }, 
        {
      "dayOfWeek": 3,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }
  ]
}
{
  "object": "resource",
  "name": "Resource Mountain",
  "timezone": "America/Chicago",
  "weeklyAvailability": [
    {
      "dayOfWeek": 1,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    },
        {
      "dayOfWeek": 2,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }, 
        {
      "dayOfWeek": 3,
      "startTime": "09:00:00",
      "endTime": "17:00:00"
    }
  ]
}

Since the availability response will only return what is overlapping based on the request, you'll see the following times returned when making a request to each of the following Locations...

{
	"availableTimes": [
    {
      "start_time": "2025-05-01T17:00:00-00:00Z",
      "end_time": "2025-05-01T18:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T18:00:00-00:00Z",
      "end_time": "2025-05-01T119:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T19:00:00-00:00Z",
      "end_time": "2025-05-01T20:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T20:00:00-00:00Z",
      "end_time": "2025-05-01T21:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T21:00:00-00:00Z",
      "end_time": "2025-05-01T22:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T22:00:00-00:00Z",
      "end_time": "2025-05-01T23:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
    {
      "start_time": "2025-05-01T23:00:00-00:00Z",
      "end_time": "2025-05-02T00:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_pacific_id}"
    },
  ]
}
{
	"availableTimes": [
    {
      "start_time": "2025-05-01T01:00:00-00:00Z",
      "end_time": "2025-05-01T02:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
    {
      "start_time": "2025-05-01T02:00:00-00:00Z",
      "end_time": "2025-05-01T03:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
    {
      "start_time": "2025-05-01T03:00:00-00:00Z",
      "end_time": "2025-05-01T04:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
    {
      "start_time": "2025-05-01T04:00:00-00:00Z",
      "end_time": "2025-05-01T05:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
    {
      "start_time": "2025-05-01T05:00:00-00:00Z",
      "end_time": "2025-05-01T06:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
    {
      "start_time": "2025-05-01T06:00:00-00:00Z",
      "end_time": "2025-05-01T07:00:00-00:00Z",
      "ResourceIds": [
        "{resource_id}"
      ],
      "LocationId": "{location_eastern_id}"
    },
  ]
}

In the above example, our Resource was available from 9am - 5pm in Mountain time which is UTC-6.

  • Translated to Eastern time that becomes 7am - 3pm, meaning that all times from 3pm - 5pm are unavailable because both the Resource and Location do not overlap. This results in times from 9am - 3pm UTC-4, or convert to 1pm - 7pm UTC.
  • Translated to Pacific time that becomes 10am - 6pm, meaning that all times from 9am - 10am & 5pm - 6pm are unavailable because both the Resource and Location do not overlap. This results in times from 10am - 5pm UTC-7, or converted to 5pm - 12am UTC.

Note that the available times shown for each Location/Resource combo are only that which overlap both the Resource time zone in Mountain, and the Location time zone in Pacific or Eastern. These results are then converted to UTC and returned.

Since the Resource only overlaps the Eastern Location by 6 hours, but overlaps the Pacific Location by 7 hours, this results in one additional time slot when making a request to the Location in Pacific time.