Note: Always use single-use Calendly links when offering a call with customers.
You will have set up Calendly as part of your GitLab onboarding, following the instructions in tools and tips.
Modify your setup as follows
Setting up your availability schedules is very important. This ensures you get scheduled calls during your intended hours as well as ensures you can be added to the various events we use.
The above video shows how to set this up, but the general gist is:
You need to be added to the GitLab Support group account to enable the Calendly Pro account features, including the ability to add multiple "event types" for scheduling calls with customers and colleagues as recommended in the suggestions below.
To get added to the group account:
This access is also included as part of support onboarding for GitLab Support Engineers that will be handling tickets for self-managed customers.
Calendly 60 minute meetings default to an 'availability Increment' of 60 minutes.
Only slots starting at the top of the hour are offered. If you’ve got 90 minutes available, or a (say) a 14:30-15:30 window available, then reducing the increment to 30 minutes increases your availability.
If you have any other meeting lengths available, consider whether it makes sense to offer different start times. You can view your calendly availability using a private/incognito browser session.
If you are temporarily working hours different to your usual schedule, you can update Calendly so that customer calls will be booked during your updated timezone.
Availabilitytab (or use this URL).
Default Hoursarea, use the
TIME ZONEdropdown to select your updated timezone. Changes are automatically saved.
We copy customer calls to the GitLab Support Google calendar using a Zapier zap. For this to work
If the Zap is working, you should see the calendar event copied within a minute or two. If the customer cancels, similarly, it'll be removed from the Support calendar.
Please add a required question to your personal Calendly customer events. This question should ask the customer to enter the GitLab Support ticket number when they schedule with you. This ensures the ticket number is shown on the calendar events, and provides context for others to join and help out on a call.
Calendly has a Chrome plug-in and a Firefox extension that makes it easy to generate a single-use link to send to the customer. After adding it to your browser, look for the Calendly icon at the top right in your browser. Sign in to Calendly, then you will see a list of events. You probably want to "star" your personal Support Call event to simplify the pop-up window. Then simply click on the one-time link icon next to the event of your choice to generate a link you can paste into your message to the customer.
If you do not want to use a supported browser, you can generate a link from your Calendly home page according to the Calendly documentation.
Set your Calendly API token:
t=<your Calendly API token>
Get your personal URI:
uri=$(curl -s -H "Authorization: Bearer $t" \ https://api.calendly.com/users/me | jq -r '.resource.uri')
List your available events:
curl -sG -H "Authorization: Bearer $t" \ -d user=$uri \ "https://api.calendly.com/event_types" \ | jq -r '.collection|select(.active == true)|([.name,.uri] | join(","))' \ | column -s',' -t -d
This will generate a table such as this:
15 Minute Meeting https://api.calendly.com/event_types/DGFGYBLAHK4CNXJF 30 Minute Coffee Call https://api.calendly.com/event_types/DEBLAHWQSO3GGUES GitLab Federal Customer Call https://api.calendly.com/event_types/DADPABBLAHWZY57A GitLab Support Call https://api.calendly.com/event_types/CEGFRWO2BLAHSAQE Upgrade Assistance https://api.calendly.com/event_types/AHBRCBLAH6ECV5E6 Pairing Session https://api.calendly.com/event_types/EBLAHIHDJDJRSS42 Support call with me https://api.calendly.com/event_types/DBLAH4WXTM7ADUB2 US Federal Upgrade Assistance https://api.calendly.com/event_types/BLAHTQKLLSHV3GL3
To generate a single-use link for the "Support call with me" event:
curl -s -H "Authorization: Bearer <your Calendly API token>" \ -F max_event_count=1 \ -F owner_type=EventType \ -F owner=https://api.calendly.com/event_types/DBLAH4WXTM7ADUB2 \ https://api.calendly.com/scheduling_links \ | jq -r '.resource.booking_url'
This will output something like the following:
The following uses the same setup, patterns, and output as above.
Get your personal URI:
uri=$(https https://api.calendly.com/users/me \ Authorization:"Bearer $t" \ | jq -r '.resource.uri')
List your available events:
https -b api.calendly.com/event_types \ user==$uri \ Authorization:"Bearer $t" \ | jq -r '.collection|select(.active == true)|([.name,.uri] | join(","))' \ | column -s',' -t -d
Generate a single-use link:
https -b api.calendly.com/scheduling_links \ Authorization:"Bearer $t" \ max_event_count=1 \ owner_type=EventType \ owner=https://api.calendly.com/event_types/DBLAH4WXTM7ADUB2 \ | jq -r '.resource.booking_url'
Customer Calls should be invitation-only. To do this, ensure all your Customer Call events are a
Secret event. By doing this, only those who have the Calendly link to the specific event can see the meeting with you.
NOTE: If you do not take this action, then anyone can see your Customer Call events on your public Calendly page.
When can people book this eventsection.
Additional rules for your availability.
It is possible to automate the blocking of your PagerDuty shifts in Calendly, so you are not booked for a customer call while you are on duty. This works by subscribing to your PagerDuty on-call schedule in Google Calendar, and then having Calendly use this when checking for conflicts. To set this up:
Using a similar principle as for blocking your PagerDuty shifts, it is also possible to make Calendly present only those time slots which are available for multiple GitLab colleagues. This is useful when other Support Engineers, developers or managers need to attend a customer call
This will be a Zoom Meeting.
Let me know via the ticket if you have any questions, will need to use a different conference platform, or if you want a link to schedule a 30 minute call instead (which may be available sooner.)
Check that your time zone and current time are displayed correctly on this page (below the calendar.)