Why teams switch to Astrocal

Most booking tools are built for end-users sharing a link. Astrocal is built for teams who need scheduling to behave like infrastructure: configurable via API, embeddable anywhere, and yours to brand completely.

๐Ÿ“…

No more double-bookings

Real-time Google Calendar FreeBusy checks run on every slot request. If your calendar's blocked, that slot disappears automatically.

โšก

Live in under 5 minutes

One OAuth screen connects your calendar. One script tag embeds the widget. First booking arrives before you've finished your coffee.

๐ŸŽจ

Your brand. Zero of ours.

CSS custom properties give you full control over colours, fonts, and layout. On paid plans, Astrocal branding is gone completely.

๐Ÿ’ณ

Payments at the point of booking

Stripe Connect built in. Collect a deposit or full payment when someone books, not when they show up. Auto-refund on cancellation.

๐Ÿ””

Webhooks on every event

Booking created, cancelled, rescheduled: your stack gets notified instantly. HMAC-signed, with automatic retry logic.

๐Ÿค–

AI-agent ready

The @astrocal/mcp-server package lets Claude, Cursor, and any MCP-compatible AI agent check availability and create bookings directly.

MCP docs โ†’

How it works

Up and running in three steps

Connect your calendar

One-click Google Calendar OAuth. Astrocal reads your FreeBusy data so the right slots are always available, with no manual blocking and no stale schedules.

Define your availability

Set your weekly hours, buffer times between meetings, and booking window. Works for one host or fifty, with round-robin assignment included.

Embed, share, or integrate

Use the booking link, embed the widget on your site, call the REST API, or let an AI agent handle it. Every booking fires a webhook and creates a calendar event automatically.


See it live

See it live. This is a real booking widget.

Blue
Violet
Emerald
Rose
--astrocal-primary: #2563eb

Every way to integrate

<!-- Add to any page -->
<script src="https://cdn.astrocal.dev/widget.js"></script>
<div id="booking"></div>
<script>
  Astrocal.open({
    eventTypeId: 'evt_abc123',
    target: '#booking'
  })
</script>

Simple, transparent pricing

Start for free. Upgrade as you grow. No hidden fees, no per-seat pricing.

Free

For prototyping

$0forever
  • 10 bookings/month
  • 1 calendar connection
  • 30 req/min API rate
  • Calendar sync
  • Email notifications

Starter

For small teams

$12/month
  • 50 bookings/month
  • 3 calendar connections
  • 60 req/min API rate
  • Everything in Free
  • Custom branding

Pro

Most Popular

For growing teams

$49/month
  • 500 bookings/month
  • 20 calendar connections
  • 500 req/min API rate
  • Everything in Starter
  • Priority support

Business

For scaling up

$199/month
  • 5,000 bookings/month
  • 100 calendar connections
  • 2,000 req/min API rate
  • Everything in Pro
  • Dedicated support

No per-seat pricing. Ever. See full pricing โ†’

Frequently asked questions

Yes. The free plan includes 10 bookings per month, full API access, Google Calendar sync, and the embeddable widget. No credit card required to start.
Calendly is an end-user scheduling tool. Astrocal is scheduling infrastructure: built to be embedded in your own product, called via API, and branded completely as yours. No per-seat pricing. Full API read/write access. MCP support for AI agents.
Yes, on the Starter plan and above. Use CSS custom properties to apply your brand. On paid plans, the 'Powered by Astrocal' attribution is removed entirely.
Yes. One-click OAuth connects your Google Calendar. Astrocal reads your FreeBusy data in real time and writes new bookings back as events automatically.
Yes. Stripe Connect is built in. Set a required deposit or full payment amount on any event type. Payments are SCA-compliant and support 135+ currencies.
A webhook fires, the calendar event is removed, and any Stripe payment is refunded automatically based on the cancellation policy you've set.