Skip to main content
Fifteen ports, both ends visible

No middle layer. Just wires.

Every Event Schedule integration talks straight to the services you already run: your calendar or your own CalDAV server, your own Stripe or PayPal account, your own endpoint. Fifteen ports, each labelled with which way it runs, what makes data move, and which plan it is on.

Integration panel

15 ports

Google Calendar two-way sync both Free
Outlook 365 Microsoft Graph both Free
CalDAV your own server both Free
Stripe checkout + webhook both Free
Invoice Ninja invoice or pay link both Free
PayPal orders v2 + capture both Free
Payfast ZAR checkout + ITN both Free
Webhooks your endpoint out Pro
REST API you call us in Pro
Eventbrite import on demand in Pro
Web push OneSignal out Pro
Accommodation Stay22 map out Free
Meta ads boost a campaign out Pro
WhatsApp Twilio inbound in Ent
Google Wallet ticket pass + QR out Free

out = data leaves here · in = data arrives here

Google Calendar Outlook Microsoft 365 Nextcloud Radicale Fastmail Baikal Stripe PayPal Payfast Invoice Ninja Google Wallet Eventbrite Facebook Instagram WhatsApp Your endpoint

Direction

A wire has a direction. So does every port here.

Almost every integration question is really a direction question. So this is the first thing the labels tell you.

out

Data leaves here

Saving an event is the trigger, not a timer: that save is what pushes it to the calendars you have connected and POSTs it to your webhook URL. Nothing waits for a nightly batch.

in

Data arrives here

Google and Microsoft tell us when something changed; Stripe, Invoice Ninja, Payfast and Twilio report the same way. Where a service cannot tell us, we ask: CalDAV on a timer, Eventbrite when you press import. PayPal is asked on purpose, because the payment is taken by our own call when the buyer comes back. The REST API is inbound too, with your code doing the calling.

both

Two-way

Both of those on one port, with the loop guarded at each end so an edit that arrived from a calendar is not immediately pushed back out to it.

One honest difference: CalDAV has no notification standard, so its inbound leg is polled every fifteen minutes rather than pushed. Worth knowing before you pick a server.

The register

Fifteen ports, written down.

Every one of them is on this page in full: the direction it runs, what makes data move along it, and the plan it is on. No marketplace, no logos we merely admire, and the gaps people hit are spelled out further down rather than left for you to find.

The fifteen Event Schedule integration ports, with the direction each one runs, what makes data move along it, and the plan it is on
Port Wire What moves it Plan
Google Calendar both Saving an event writes it to Google straight away. Google notifies us back through a watch channel, and a sweep every fifteen minutes catches anything the channel missed. Free
Outlook / Microsoft 365 both The same shape over Microsoft Graph, with a change subscription inbound and a delta token so a resync does not re-read the whole calendar. Optional Teams meeting link. Free
CalDAV both or one Server URL, username, password. Outbound on save; inbound is polled every fifteen minutes, because CalDAV has no notification standard to subscribe to. Free
Stripe out then in Checkout runs on Stripe. On the hosted platform the charge is created on your own connected account, and the result returns as a signed webhook. A refund from the Sales page goes back out along the same wire, in full or in part. Selling starts free at twenty-five paid tickets a month per schedule; Pro takes the ceiling off. Free
Invoice Ninja out then in Either an invoice per sale, or a payment link the buyer completes on your Invoice Ninja install. A webhook marks the sale paid when it clears. A refund is only recorded here; you return the money in Invoice Ninja. Free
PayPal out then in The buyer approves on PayPal and the payment is taken by a call we make straight afterwards, so the ticket is issued on their return rather than waiting for a callback. A PayPal event CAN join the multi-event cart, unlike Payfast, because the whole order is taken as one payment, and a refund, full or partial, goes back against that payment. Installments are not supported. A selfhost operator can supply one account for the whole install, which an owner who connected their own keeps overriding. Free
Payfast out then in South African rand only, so it is offered on ZAR events and nowhere else. The buyer pays on Payfast and the sale is confirmed by an ITN callback. A Payfast event cannot join the multi-event cart or use installments, and a refund is made in your Payfast dashboard and only recorded here. A selfhost operator can supply one merchant account for the whole install, which an owner who connected their own keeps overriding. Free
Webhooks out Fourteen event types, POSTed as JSON to your URL with an HMAC-SHA256 signature. Five-second timeout, up to three tries, and every attempt logged. A selfhost left on the sync queue tries once. Pro
REST API in Full create, read, update and delete on schedules, sub-schedules, events and sales, plus read endpoints for feedback and fan content. Key in a header. Pro
Eventbrite import in Paste an Eventbrite private token, pick from the events it finds, and they arrive with their venues, ticket types and images. You press the button; nothing runs on a timer. Pro
Web push out The notifications you already get by email, repeated as browser and mobile push. Per device, opt-in, and only where the site operator has configured it. Pro
Accommodation map out Lodging near the venue on your public event pages, dated from the occurrence being viewed. Nothing is requested until the visitor consents. Free
Meta ads out Your event becomes a Facebook and Instagram campaign: you choose budget, dates, audience and placements. The ads run on the ad account of whoever operates your Event Schedule site. Pro
WhatsApp in Message the site's WhatsApp number, or send a photo of a flyer, and the event is created and answered with its link. Runs over the operator's Twilio account. Ent
Google Wallet out A buyer taps Add to Google Wallet and the pass is signed and sent to Google at that moment, never while a page or an email is rendering. It carries the ticket's own QR code, so it scans at the door like the ticket. Needs the site operator's Google Wallet issuer account. Free

Selfhosted installs resolve to the top tier, so every port above is on from the first boot. On the hosted platform, Pro is $5 a month and Enterprise, which the WhatsApp port needs, is $15.

Calendar ports

Your calendar, or your own server.

Three ports, all free on every plan, all two-way, and all with the direction under your control per schedule.

The setting people ask about first

What happens when you delete it there

For a schedule that imports from a calendar, you choose what an outside deletion means. It is one setting with three answers, and it is the difference between a tidy calendar and a missing show.

Keep it The default. The event stays in Event Schedule and your calendar is simply tidier than your schedule. Mark cancelled Hidden from the public schedule, still there for you, and reversible. Delete it Gone. Except where the event has ticket sales or a running ad boost, in which case it is hidden instead.

How calendar sync works is the longer version, and the user guide walks through the actual screens.

Money ports

The money never lands here.

All four payment ports terminate in an account you own, and all four are open on the free plan, which sells twenty-five paid tickets a month per schedule before Pro takes the ceiling off. Event Schedule charges zero platform fees on ticket sales on every plan, which is only possible because it is not in the middle of the transaction.

Stripe

Free

Checkout runs on Stripe's own page. On the hosted platform the charge is created on your connected account, so payouts arrive on your Stripe schedule, and the confirmation returns to us as a signed webhook.

Fees Stripe's processing fee. Nothing from us. Methods Whatever you have enabled in your own Stripe dashboard. Selfhost Your own Stripe keys, used directly. Refunds Full or partial, from the Sales page, sent back through Stripe.
Stripe payments

Invoice Ninja

Free

Point Event Schedule at your Invoice Ninja install with an API token and URL. Useful when the buyer is an organisation that needs a document rather than a receipt.

Invoice mode An invoice is raised per sale and the buyer pays it. Pay-link mode The buyer goes to an Invoice Ninja payment link and chooses quantities there. Back to us A webhook marks the sale paid when the payment clears. Refunds Recorded here, not sent. Return the money in Invoice Ninja.
Invoice Ninja invoicing

Not a wire

Two of the payment options are deliberately not integrations, and it is better that you know which.

Cash The sale is recorded with your own payment instructions attached. Nothing is called, nothing confirms itself. Payment URL Send buyers to any link you already use. It is a signpost, not a connection, so you reconcile it yourself.

Free registration with a capacity limit needs no payment port at all, and works on every plan.

PayPal and Payfast

both Free

Two more ports out to a buyer and back again, on every plan. Both let a selfhost operator supply one account for the whole install, which an owner who connects their own keeps overriding.

PayPal The buyer approves at PayPal and the payment is taken by a call we make on their return, so the ticket is issued there rather than waiting for a callback. It can join the multi-event cart; it cannot be used for installments. Refunds, full or partial, go back through PayPal. Payfast South African rand only, so it is offered on ZAR events and nowhere else, confirmed by an ITN callback. It can join neither the cart nor installments, and a refund is made in your Payfast dashboard.
PayPal payments

If the money currently lands at Eventbrite

in Pro

There is one import port, and it points at Eventbrite. It runs when you press the button, not on a timer, so it is a move rather than a running sync.

Credential An Eventbrite private token you paste in. It is used for that import and never stored. What comes The events you tick, with their venues, images and ticket types, prices and quantities. What does not Past orders and attendees. Sold tickets stay where they were sold, so run the two in parallel until the last one is scanned.

Event Schedule compared with Eventbrite goes through the rest of the move.

The terminal block

Two spare terminals, for wires we did not build.

There is no Zapier app. Instead there is one wire out and one wire in, both general purpose, both documented, both on the Pro plan.

out

Webhooks

Pro

Fourteen event types, POSTed as JSON to a URL you own. Subscribe to all of them or pick the ones you care about.

Signature HMAC-SHA256 of the body in an X-Webhook-Signature header, keyed on a secret you can regenerate. Retries Five-second timeout, up to three attempts, backing off about thirty seconds then about sixty. A selfhost left on the sync queue sends once. Log Every attempt kept with its status, response and duration, and a test button to fire one on demand. Safety Private and reserved addresses are refused and redirects are not followed, so a webhook cannot be aimed inside the server.
Webhook reference
in

REST API

Pro

Create, read, update and delete schedules, sub-schedules, events and sales from your own code, plus read endpoints for post-event feedback and fan content.

Auth A key in an X-API-Key header. Only a hash of it is stored, and you can give the key an expiry date. Rate Three hundred reads and thirty writes a minute, counted per address. Shape JSON in, JSON out, with the same encoded identifiers the app's own URLs use. Pairs with The webhook opposite: it tells you something happened, this reads or changes it.
API reference

Operator ports

Five ports the site operator holds the key to.

These five need a credential that belongs to whoever runs the Event Schedule site, not to your schedule. If one of them is missing, that is why.

out

Web push

Pro

The notification emails you already receive, repeated as browser and mobile push through OneSignal. On top of email, not instead of it.

  • Per device: enable it on the phone and the laptop separately
  • Opt-in, and off until you turn it on
  • On iPhone and iPad, the site has to be on the home screen first
out

Accommodation map

Free

A Stay22 map of lodging near the venue on your public event pages, with the dates taken from the occurrence being viewed. Free on every plan, off by default.

  • Nothing is requested until the visitor consents or clicks
  • Suppressed for past events, embeds and password-gated pages
  • Add your own affiliate ID and the commission is yours
out

Facebook and Instagram ads

Pro

Boosting turns an event into a Meta campaign. The ads run on the ad account belonging to whoever operates the site, so there is no Meta login for you to connect and no ad manager to learn.

  • Facebook and Instagram feeds, Stories and Reels
  • Budget by the day or for the whole run, with your own audience
  • The boost is paid for here rather than to Meta

Event boosting

in

WhatsApp

Ent

The one port where a message becomes an event. Send text or a photo of a flyer to the site's WhatsApp number and the event is created on your default schedule, with a reply carrying its link.

  • Runs over the operator's Twilio account, on the Enterprise plan
  • Only a phone number verified on your own account can create anything
  • The flyer you sent becomes the event's image

Creating events over WhatsApp

out

Google Wallet

Free

A convenience for the people holding your tickets. Buyers get an Add to Google Wallet button on their ticket page, their order page and the confirmation email, and the pass carries the same QR code as the ticket, so the free door scanner reads it like any other.

Credential A Google Wallet issuer account belonging to the site operator. Without one, no button appears and nothing is sent to Google. Trigger The buyer tapping the button. The call to Google happens then, never while a page or an email is being rendered. After saving The pass is a snapshot. A cancelled or refunded ticket stays on the phone but is refused at the door, because the scanner checks the live sale.

Wallet passes in the user guide

Or hold the keys yourself

Selfhosting? You are the operator

Run your own install and all five of those keys are yours to add, alongside your own Google, Microsoft and Stripe credentials. Every port in the register is on, because a selfhosted install resolves to the top tier. An install that is not eventschedule.com can also share its public events with the eventschedule.com listings, which an admin switches on and each schedule can opt out of.

Selfhost installation guide

Unterminated

Ports that are not there.

You came here to find out whether this fits your stack. That answer is worth as much when it is no, so here are the four gaps people hit.

No streaming-platform integrations

An online event carries one link field. Mark the event as online and paste the URL to wherever you are streaming, whether that is Zoom, Meet, YouTube or something else entirely. Nothing is created for you and nothing is read back. The single exception is Outlook: turn on Teams meetings and the join link is written into that same field for events with no venue.

No Zapier or Make app

There is no listing in either directory. The general-purpose route is the terminal block above: a signed webhook out on fourteen event types, and the REST API in. Both accept a plain HTTP client, so an automation tool that can POST and receive JSON can be wired up without a connector.

No accounting or CRM sync

Invoice Ninja is the only invoicing wire, and there is nothing that pushes sales into a ledger or contacts into a CRM. What exists instead is a Pro sales export to CSV, including the answers to any custom questions, plus the sale webhooks if you would rather have the data arrive as it happens.

No conflict detection

Two-way sync copies events between calendars. It does not compare them, and nothing on this page will warn you that you have accepted two things at the same hour. If a clash matters, the calendar you already read every morning is still the place you will spot it.

Free forever. Upgrade when you're ready.

Zero platform fees on ticket sales, on every plan. The only deduction is your payment processor's own.

Free
$0 forever, no card

Everything you need to publish a schedule, and enough selling to find out whether you need more.

  • Unlimited events, sub-schedules and recurring dates
  • Two-way Google, Outlook and CalDAV sync
  • 25 paid tickets a month, each one scanned at the door

No expiry, and no card asked for.

Pro Most picked
$5 per month

The ceilings come off, and the rest of the selling kit arrives with them.

  • Unlimited ticket sales and the live check-in dashboard
  • Promo codes, add-ons, passes and gift cards
  • The REST API, webhooks, and no Event Schedule branding

7-day free trial, cancel any time.

Enterprise
$15 per month

For a room with a seating chart, a team, and a domain of its own.

  • Reserved seating, drawn once and reused every date
  • Your own domain, and up to five team members
  • Internal and unlisted events, and 1,000 newsletter recipients

Included free on every selfhosted install.

Frequently asked questions

What people ask before they wire anything up.

Which integrations are free?

Two-way calendar sync with Google Calendar, Outlook or Microsoft 365 and any CalDAV server is free on every plan, and so are the nearby-accommodation map and Google Wallet passes, which the site operator switches on. So are the four money ports, Stripe, PayPal, Payfast and Invoice Ninja: selling starts free at twenty-five paid tickets a month per schedule, with zero platform fees on every plan. Pro at $5 a month takes that ceiling off and adds webhooks, the REST API, web push, Eventbrite import and ad boosting. Creating events over WhatsApp is the one Enterprise port, at $15. Selfhosted installs resolve to the top tier, so every port is on from the first boot.

Is the calendar sync really two-way?

Yes, and you choose the direction per schedule: import only, export only, or both. Outbound happens when you save an event. Inbound arrives through a Google watch channel or a Microsoft Graph change subscription, backed up by a sweep every fifteen minutes. CalDAV inbound is polled only, because CalDAV has no notification standard to subscribe to.

Where does the ticket money actually go?

Into an account you own. With Stripe on the hosted platform the charge is created on your own connected account, so payouts land on your Stripe schedule and you pay Stripe its processing fee and nothing else; a selfhosted install uses your own Stripe keys directly. PayPal and Payfast pay into the account you connect, and Invoice Ninja into the gateway behind your Invoice Ninja company. Event Schedule takes zero platform fees on any of them.

Can I refund through an integration?

Through two of them, on every plan. A Stripe or PayPal sale is refunded from the Sales page, in full or in part, and the money goes back through the provider before the sale changes; a partial refund leaves the sale paid and its tickets valid. For Payfast, Invoice Ninja, a payment link or cash, the Sales page offers Mark as Refunded instead, which records the refund without moving money, so you return it wherever it was paid.

Can I connect a tool that is not on this page?

That is what the terminal block is for. A webhook POSTs to any URL you own on fourteen event types, signed with HMAC-SHA256 so you can verify it came from us, and the REST API lets your own code read and write schedules, events and sales with a key in an X-API-Key header. There is no Zapier or Make app; those two ports are the general-purpose route, and both are on the Pro plan.

Do you integrate with Zoom, YouTube or Twitch?

No, and it is worth being plain about it. An online event carries one link field: mark the event as online and paste the URL to wherever you are streaming. The one place that field gets filled in for you is Outlook, where turning on Teams meetings writes the join link into it for events that have no venue.

What happens if I delete an event in my calendar?

You decide, per schedule. An event deleted in the calendar you import from can be kept in Event Schedule, marked as cancelled so it is hidden but reversible, or deleted outright. Events that have ticket sales or a running ad boost are hidden instead of deleted, so a stray drag in a calendar app cannot take a sold show with it.

Free forever

Pick a port. Wire it up.

Calendar sync, the accommodation map and your first twenty-five ticket sales a month are free forever. $5 a month takes the ticket ceiling off and adds webhooks, the API, push and the imports. Nothing is taken from the door on any plan.

.eventschedule.com
Get started free

No credit card required