> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contactship.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Calendar

> Connect Google and configure the calendar, duration and hours used by the agent tool.

export const Availability = ({lang = 'es', plan, addon, permission, route, status}) => {
  const L = lang === 'en' ? {
    plan: 'Plan',
    addon: 'Add-on',
    permission: 'Permission',
    route: 'Where',
    status: 'Status',
    addonNote: 'enabled on request',
    allPlans: 'All plans',
    beta: 'Beta',
    nuevo: 'New',
    soon: 'Coming soon'
  } : {
    plan: 'Plan',
    addon: 'Add-on',
    permission: 'Permiso',
    route: 'Dónde',
    status: 'Estado',
    addonNote: 'se activa a pedido',
    allPlans: 'Todos los planes',
    beta: 'Beta',
    nuevo: 'Nuevo',
    soon: 'Próximamente'
  };
  const items = [];
  if (plan) items.push([L.plan, plan]);
  if (addon) items.push([L.addon, `${addon} · ${L.addonNote}`]);
  if (permission) items.push([L.permission, permission]);
  if (route) items.push([L.route, route]);
  if (status) items.push([L.status, L[status] || status]);
  return <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '6px 22px',
    padding: '12px 16px',
    margin: '4px 0 24px',
    border: '1px solid rgba(2, 82, 255, 0.28)',
    borderLeft: '3px solid #0252ff',
    borderRadius: '8px',
    background: 'rgba(2, 82, 255, 0.05)',
    fontSize: '13.5px',
    lineHeight: '1.5'
  }}>
      {items.map(([k, v]) => <div key={k} style={{
    display: 'flex',
    gap: '6px',
    alignItems: 'baseline'
  }}>
          <span style={{
    fontSize: '10.5px',
    fontWeight: 600,
    letterSpacing: '0.07em',
    textTransform: 'uppercase',
    opacity: 0.65
  }}>{k}</span>
          <span style={{
    fontWeight: 500
  }}>{v}</span>
        </div>)}
    </div>;
};

<Availability lang="en" route="Integrations → Google Calendar" permission="integrations.read; integrations.create" />

Google Calendar connects through **Connect with Google**. Use an account with access to the calendar where events will be created.

## Connect and configure

1. Open **Integrations → Google Calendar**.
2. Choose **Connect with Google**, select the account and complete authorization.
3. Return to ContactShip and check the connection.
4. Open the voice agent and add its Google Calendar tool.
5. Select the connection and review calendar, duration, concurrency and operating hours.
6. Test availability before confirming a test booking.

## Separate connection and availability

Connecting Google does not add the tool to every agent. Availability also depends on the tool's configured hours and parameters.

When confirming a booking, check the date, time zone and returned result. The agent's spoken reply does not replace confirmation that an event was created.

## Common problems

If the expected calendar is missing, check the connected account and its access. If the connection stopped working, review its status and reconnect when needed. If no slots appear, check duration, calendar and configured hours.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do I need a Google API key?">
    The catalog uses Google authorization. Do not paste a ContactShip API key into that flow.
  </Accordion>

  <Accordion title="Is this configured in Agenda?">
    Configure the Google Calendar tool in the agent. The Agenda module is separate.
  </Accordion>

  <Accordion title="Can the agent confirm an appointment without checking availability?">
    Instruct it to check first and confirm only after the tool returns the booking result.
  </Accordion>
</AccordionGroup>

## See also

* [Voice tools](/en/voice-agents/tools)
* [Agenda](/en/contacts/agenda)
