FAQ Q274: How can I synchronize availability of different resources (from the same of different Planyo sites)?

Absatz: Determining availability and booking constraints
This is very simple in case you have a single Planyo site: you simply need to use the packages.

Simple package


Simple package should be used if you have one physical resource but you want to list a number of offerings to your customers. An example would be a single boat you own which you use to provide different tours to your customers, e.g. snorkeling tour, island tour, private charter. The customer will only see these tour types, and may even not know how many boats you operate. In this scenario you create a single normal resource, called e.g. boat. This resource will never be reserved directly by the customers, so in Resource settings / reservation process you should select the checkbox Can only be reserved as part of a package.

Then define all your offerings as separate package resources of type: simple package. In our example you'll need 3 new resources. Each of them can have completely different settings, e.g. the private charter can have the quantity of 1 (only one customer can reserve it) while the other resources can have the sharing option set to Always possible so you can offer the same tour to a number of independent customers (in such case you'd additionally need to set up package blocking).

The packages set up this way will not add to the cost of your planyo site (only the base resource will be counted towards your number of resources) and planyo will make sure the physical boat cannot be reserved for more than a single tour in any given time. See Q232 for a detailed description of packages.

Flexible package


Flexible packages should be used when you have multiple physical resources and multiple offerings. An example would be a skiing school with multiple skiing instructors and the customers reserving different lesson types, such as: beginner group, intermediate group, advanced group. In this scenario each instructor can teach at any level and the system decides which instructor will be assigned to which group. As before, the system will of course make sure a single instructor cannot be assigned to multiple groups at any given time. Please see Q275 for detailed instructions for this configuration. It can be applied not only to ski instructors but any kind of counceling or teaching with multiple employees.

Resources in different planyo sites / iCal


Unfortunately packages cannot be used across different planyo sites, even if grouped together into a metasite. You normally should create only a single planyo site if you need to synchronize availability between different resources but in rare occasions this could be useful. For example when one person works for different companies (each one being a separate planyo site), such as independent consultants. Of course they cannot work in two places at the same time. In this scenario we will use the iCal synchronization support offered by Planyo: the iCal export which is a standard feature of planyo (found in Site settings / Data export iCal), and the iCalendar import extension available in the Planyo Store. Both planyo sites with need to import and export the iCal feeds in order to perform a 2-way synchronization. Here's the diagram of the setup needed:



R1 and R2 represent the same physical resource found in 2 different planyo sites. With this setup any change to the availability to any of the resources (R1 or R2) will be reflected in the other resource. Here's how to configure your planyo sites (you'll need to repeat both steps for both of your sites):

1. Export
Go to Site settings / Data export iCal and add a new template. The new template is needed because by default the iCalendar import extension will never import planyo-exported events (to prevent a situation when an exported reservation is being reimported back to planyo). In the new template we must encode the site ID from which the reservations were exported. This way when the import extension imports the event it will know to pass it through because it's coming from a different planyo site. To do this, anywhere in the template add the text: CAL$(site_id). This exact text will tell the import extension to check the site ID and, if different, pass the event through, even though it was exported by planyo. The rest of the template you can copy from the default, it's only important to include CAL$(site_id) somewhere in the text. Now, using the iCal feed creator, create a feed for the single resource being synchronized (R1 in the planyo site 1 and R2 in the planyo site 2). Make sure you use your custom template and you can also include vacations in the feed, if you'd like. This will export your vacations as well as reservations (please note that the vacations already include the site id identifier, there is anyway no template for the export of vacations). Click submit and copy the ical feed URL printed next to Parameterized feed URL.

2. Import
Add the iCalendar import extension to your sites. Then, in the extension setup for your planyo site 1, paste the iCal feed URL of the resource R2 (which you got in step 1) into the field: import iCalendar feed URL for resource R1. Of course you'll also need to import the feed from R1 into the field for R2 in your other planyo site (site 2). In the field Import identifier for R2 you can enter the star (*) because it's a single resource feed.

Resources in different planyo sites / Google Calendar


If you use Google Calendar or if you want to synchronize availability across resources from more than 2 planyo sites, you can also use the Google Calendar extension available in the Planyo Store. Please note that this solution will not export vacations, only reservations. This means that if you want to mark your resources as unavailable for rental (but without any reservation present), you'll need to go into Google Calendar and add a new event in there. This will import it into all the planyo sites which sync with the Google Calendar. However, unlike the iCal solution, adding vacations in planyo (or marking a day as unavailble) will not affect the availability of the other resources.

This configuration is even simpler than the iCal-based setup:



All you need to do is add the Google Calendar extension to all the sites and choose the same calendar in the field Calendar to use for ... in all your extensions. The field Export setting for ... can be set to either export only confirmed reservations or all reservations and the Import identifier for ... field should be set to a star (*) because one Google Calendar will be only used by one physical resource (although represented in planyo by different resources spread across different planyo sites). As with the iCal method, in the template for the export (defined at the bottom of the configuration page for the Google Calendar extension) must include the CAL$(site_id) tag in order for this method to work. Without this special tags, the extension will not import planyo-generated events.
FAQ