Listora

A moderated local directory: search, a map, 10 listing types, member submissions, reviews, claims and a dashboard.

Plugin

Listora

A moderated local directory: search, a map, 10 listing types, member submissions, reviews, claims and a dashboard.

  • Category: directory
  • Status: available
  • Version: 0.6.3
  • Price: Unknown
  • Source: Official plugin registry
  • Install method: Sandboxed registry plugin
  • Verified: 2026-10-21
  • Compatibility: Not stated in the public registry profile
  • Maintainer: Wbcom Designs

Description

Listora turns an EmDash site into a local directory. Visitors search and browse listings on a map. Members add listings, write reviews, save favourites and claim a business. You approve everything in the admin before it goes live.

What you get

  • Directory and search. Keyword and location search, filters by type, category and city, grid and list views, a featured row and a map.
  • 10 listing types. From business and restaurant to event, job and real estate, each with its own fields and schema.org type.
  • Member submissions. A five-step form with a duplicate check, a blocked-word list and an hourly limit.
  • Reviews and claims. One review per member per listing, and an owner can claim their business. Both wait for approval.
  • Owner tools. Owners edit their listing, add photos, read visitors’ messages, reply to reviews and renew an expiring listing. Edits, photos and replies wait for your approval.
  • Photos and expiry. A gallery on each listing, and an optional number of days a listing stays live.
  • Import and export. Download listings as a spreadsheet, or add them from a CSV file as drafts, 100 at a time.
  • Moderation in admin. Queues for everything that waits, a dashboard card that counts it, and a Settings page.

How it fits together

Listora is the engine: routes, storage and the admin screens. An EmDash plugin cannot add pages to a site, so the public pages ship as a kit that one command copies in. Allow a developer ten minutes. See Installation.

Guests browse and message a listing. Adding, reviewing, saving and claiming need an account.

Permissions it asks for

  • Content (read, write, publish) and content types (read): listings are content on your site.
  • Categories (read, assign): the form offers your own categories.
  • Media (add): owner photos.
  • Email (send): a short notice to an owner when messages wait or a listing is about to expire. No visitor text is emailed, and each notice can be turned off.

Installation

Before you install

1. Your site needs a sandbox runner. Registry plugins run in a sandbox. Until the site has one, Admin, Plugins shows “No plugins configured” and there is no Registry in the menu.

  • Node: in your site, run npm install @emdash-cms/sandbox-workerd workerd, then add sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox", inside emdash() in astro.config.mjs.
  • Cloudflare: not supported yet. On Cloudflare Workers EmDash gives each plugin call 10 requests to the site, and several of this plugin’s pages and actions need more, so they fail. A release that fits is in progress. Node sites are not affected.

Stop the dev server and start it again. Registry now shows in the admin menu.

2. The plugin is the engine. Visitor pages come from its site kit. A registry plugin cannot add pages to your site. Until you copy the kit, its addresses (for example /listings/) show your site’s 404 page. That is expected. The kit copy below takes one command.

3. You need Node 22.16 or later for the npx emdash seed step.

Checked on EmDash 1.3.1 with the blog template on Node.

Install

  1. Admin, Registry, search Listora, Install, then accept the permissions.

  2. From your site’s root folder:

    kit="$(mktemp -d)" &&
      git clone --depth 1 \
        --branch v0.6.3 \
        https://github.com/wbcomdesigns/emdash-listora \
        "$kit/emdash-listora" &&
      "$kit/emdash-listora/scripts/add-to-site.sh" .
  3. Run the printed seed command. Restart the dev server.

  4. Add the printed menu links in Admin, Menus.

  5. Open Listora, Get started.

After each update, rerun step 2 with the new tag.

Full guide: https://github.com/wbcomdesigns/emdash-listora/blob/v0.6.3/docs/website/getting-started/install.md

FAQ

Why is /listings/ a 404 after install? An EmDash plugin cannot create pages. Run the setup command from Installation to add them to your site, then reload.

Can guests add listings or reviews? No. Guests browse and can message a listing. Adding a listing, reviewing, saving and claiming need a signed-in account, which keeps spam down and gives every listing an owner.

Do new listings go live straight away? Only if you turn off approval in Settings. With it on, which is the default, a listing waits in the queue until you approve it. Owner edits, photos and replies to reviews always wait for you.

Does it work in dark mode? Yes. The kit colours follow your site theme.

Does it send email? Two short notices to listing owners, if your site has email set up: messages are waiting, and your listing expires in seven days. Neither carries visitor text, and each can be turned off in Settings. Without email, owners still see everything in their account.

Is there a paid version? No. Everything here is free.

Can I show listings inside a blog post? Yes, with one extra step. The kit includes a Listings block for post and page text that you switch on in astro.config.mjs. The install guide has the lines to add.

Can I move listings in from a spreadsheet? Yes. A site admin can import a CSV file at /listings/import/. Rows are checked first and arrive as drafts, up to 100 per file.

Changelog

0.6.3

Copy the kit again after you update, from your site’s root folder:

kit="$(mktemp -d)" &&
  git clone --depth 1 \
    --branch v0.6.3 \
    https://github.com/wbcomdesigns/emdash-listora \
    "$kit/emdash-listora" &&
  "$kit/emdash-listora/scripts/add-to-site.sh" .
  • Fix: an approval cut off part way returns the listing or photo to the queue; More reviews has space above the review form; a damaged reviews link gets a plain message.
  • Improve: account tabs wrap on a phone; the account names the full review count past 10; Settings names /listings/import/ on a fresh site.

0.6.2

Copy the kit again after you update.

  • New: Get started gives the kit command for the installed version and the visitor addresses it adds.
  • Fix: lists no longer stop at 100 rows on a large site; sample listings in the queue approve; a stale second decision is refused; an empty directory says so; dark mode buttons pass 4.5:1.
  • Security: a new listing stores each field capped; the public health check writes nothing.
  • Improve: admin group named Listora, reviews page named Listing reviews.

0.6.1

  • Security: map popups show listing titles as plain text; emails are stored as plain addresses only. Copy the kit again after updating.
  • Fix: renewing and editing follow the listing’s current owner.

0.6.0

  • Security: website links must be a full http or https address; server-side calls run inside EmDash with no web request.
  • Improve: settings in tabs, Find and Load more on every admin list, all visitor wording in one file. Copy the kit again after updating.

Older versions: https://github.com/wbcomdesigns/emdash-listora/blob/main/CHANGELOG.md