# Google Calendar Sync

> Since version 1.0 Easy!Appointments supports two-way synchronization with the Google Calendar API that you can use to share your appointments.

Source: https://easyappointments.org/documentation/google-calendar-sync/

Easy!Appointments supports **two-way sync** with Google Calendar. This means changes made in Easy!Appointments or in Google Calendar stay synchronized.

This guide shows you how to enable it.

## What You Need Before Starting

✔ A working Easy!Appointments installation  
✔ At least one service and provider configured  
✔ A Google account

## Working Easy!Appointments Installation

The installation must be fully functional and configured and needs to have some services and providers.

## Step 1 - Create Google API Credentials

Easy!Appointments needs Google OAuth credentials to access calendars.

1.  Go to **Google Cloud Console**
2.  Create a **new project**
3.  Open **APIs & Services → Library**
4.  Enable **Google Calendar API**
5.  Go to **APIs & Services → Credentials**
6.  Click **Create Credentials → OAuth Client ID**

### Configure OAuth Consent Screen

Fill in required app information and save.

### Create OAuth Client ID

-   Application type: **Web Application**
-   Name: Anything (e.g., EasyAppointments)
-   **Authorized JavaScript Origins**  
    Enter **only your domain**, for example: `https://your-domain.com` (Do not include full subpaths)
-   **Authorized Redirect URI** `https://your-domain.com/easyappointments/index.php/google/oauth_callback` (replace the path with your own installation folder; the `index.php/` segment is part of the URL)

7.  Click **Create**

Google will now show:

-   **Client ID**
-   **Client Secret**

Keep these - you’ll need them next.

## Step 2 - Configure Easy!Appointments

Since v1.6 you can paste the **Client ID** and **Client Secret** straight into the backend: go to **Settings → Integrations → Google Calendar**, enable the sync, fill them in and save. No file editing needed.

The root `config.php` file still works as a fallback, used only when the backend fields are empty. Open it, find the commented-out Google Calendar section, uncomment the constants and set them inside the `Config` class:

```php
const GOOGLE_SYNC_FEATURE = true;
const GOOGLE_CLIENT_ID = 'your-client-id-here';
const GOOGLE_CLIENT_SECRET = 'your-client-secret-here';
```

Save the file.

## Step 3 - Connect a Provider’s Google Calendar

1.  Log in to Easy!Appointments backend
2.  Go to **Calendar**
3.  Select a **Provider**
4.  Click **Enable Sync**
5.  A Google login window appears
6.  Sign in and grant permission

Sync is now active 🎉

## Important Notes

**Recurring events are synced, but they cannot be created or managed from Easy!Appointments**

Sync runs when:

-   You make changes in Easy!Appointments

-   You manually trigger it in the backend
-   [Automatically with a cron job](/blog/configuring-cron-jobs/)

Each provider can connect to **only one** Google Calendar

## Useful Links

Google Calendar API Docs  
[https://developers.google.com/google-apps/calendar](https://developers.google.com/google-apps/calendar)

Easy!Appointments Support Group  
[https://groups.google.com/forum/#!forum/easy-appointments](https://groups.google.com/forum/#!forum/easy-appointments)
