Hauntsby Spectral Web Services Start a calendar

Every event in town, on your site, automagically.

Your readers already know their favorite haunts. Haunts keeps track of what's on at all of them — and turns it into a calendar embed for your site, an RSS feed, and a weekend roundup you can paste straight into your newsletter.

Made for Ghost, by a certified Ghost expert. Works anywhere you can paste an embed.

A friendly ghost in a purple witch hat, presenting a monthly events calendar

Built for local news sites, neighborhood newsletters, libraries, chambers, and anyone else who keeps a town informed.

How it works

Local calendars are a chore. This is the part you can hand off.

A ghost in a deerstalker cap, peering through a magnifying glass

Add your haunts. Walk away.

A haunt is anywhere in town that puts on events — the library, the brewery with the Tuesday trivia night, the community theater, the parks department, the record store that does in-stores, the guy who runs the pickup soccer league out of a Google Calendar.

Add one once and Haunts checks it forever. ICS feed, Google Calendar, Meetup, Eventbrite, or a venue page that hasn't been redesigned since 2011 — if they announce it somewhere, we can watch it.

A ghost in a hard hat, carrying a toolbox and a wrench

One embed. That's the whole install.

Paste a snippet into a Ghost page and you have a calendar. No theme surgery, no plugin, no third-party account for your readers. And it works just as happily on WordPress, Squarespace, or anything else that takes an embed.

A ghost in a witch hat, typing away at a keyboard

It writes the boring half of your roundup.

Star the events you want featured. Haunts hands you a clean, formatted summary — venue, time, link — and you add the part only you can write, which is the reason anyone should go.

And an RSS feed, because of course. Pipe events into your newsletter, your Slack, or whatever automation you've rigged up.

See it live

This is a real Haunts calendar, live right now.

The events belong to Petaluma Voice, a local news site in Sonoma County, California. Their curator picks the sources; Haunts does the rest.

Now haunting: Petaluma, California

Rounding up the usual haunts…

The exact two lines behind the calendar above:

<script async src="https://calendar-caddie.pages.dev/haunts.js"></script>
<haunts-calendar embed="petaluma-events-calendar"></haunts-calendar>

Pricing

Pay what fits where you are.

Prices are in alpha, like the fresh coat of paint on everything else here. What won't change: there's a real free tier, and nothing jumps to $99 the moment you succeed.

Free

for the small and scrappy

$0 / forever

  • 5 haunts
  • ICS + Google Calendar feeds
  • Featured events + the copy-paste weekend roundup
  • Community submissions
Start free
Most popular

Regular

for calendars doing real work

$5 / month

  • 30 haunts
  • Events from libraries, government meetings, ticketing platforms, reservation systems, web pages, and more
  • AI dedupe and event categorization
  • 🪄 Haunt wizard - paste the link and let us figure it out
Get the roundup

Local Legend

the whole town, in one calendar

$10 / month

  • Unlimited haunts
  • Everything in Regular
  • Priority scraper requests
  • Social media events
  • Let us find and configure your haunts!
Take the whole town

If a venue's website is a disaster, just ask.

Some places still post events as a JPEG on a page from 2011. Send me the URL and I'll take a look.

For now these buttons take you to the Spectral Web Services tools dashboard, where Haunts lives while it gets its own front door.

FAQ

Before you paste a script tag into your site…

How often does Haunts check for new events?

Every haunt, every night — new events are on your calendar by morning. If something big drops and you can't wait for the nightly run, hit the refresh button and the haunt rescrapes right away.

Can I really haunt anything?

A few sites block automation, and we respect that. Everyone else is fair game.

What happens when a haunt breaks — a feed dies, a venue redesigns their site?

Haunts keeps checking — a dead feed just means no new events from that haunt until it's back. And when a redesign breaks a scraper, I fix the scraper.

Can I hide an event or fix a typo?

Yes! Hide any event, override any detail a source got wrong, fix a typo — your fix survives the next nightly check.

Can I add my own events?

Absolutely! You can do this directly in Haunts, or set up a calendar (such as Google Calendar) you manage and add that as a haunt.

Will this slow my site down? Does it set cookies?

No and no. It's one script tag, loaded asynchronously after your page renders — your content never waits on it. No cookies, no trackers, no visitor identifiers — nothing that needs a consent banner. The only thing it stores is a reader's own view preference (list vs. cards), in their own browser.

What if the same event shows up on three calendars?

That's town life — the venue posts it, the chamber reposts it, someone puts it on Meetup. Haunts compares incoming events and folds lookalikes into one listing. (That's why we run AI dedupe.)

Where does Haunts work?

Haunts was built for Ghost, but works fine on any platform that will let you add some html and load JavaScript. You can find Haunts early adopters on Ghost, Beehiiv, XenForo, and more.
Currently, uploading custom images (instead of using the ones provided by the feed) requires Ghost.

Your town is busier than your calendar says it is.

Start with one haunt. Add the rest whenever you feel like it.

Start a calendar

Free, no card, about five minutes.

Like a ghostwriter, but for your calendar.