A normal directory waits. A buyer searches, scrolls through listings, picks a few and sends the same message to each of them. It works, but it puts all the effort on the person with the money.
A reverse marketplace flips the order. The buyer writes down what they need once, and the businesses that could do the job find out and reply with a quote. Wedding photographers answering a date, caterers answering a headcount, contractors answering a job description. The directory stops being a phone book and starts producing leads.
Listora Pro has this built in, under the name Post a Need. This guide covers the whole flow: what a buyer submits, what you moderate, how vendors are matched, what quotes cost, and what happens when a request ends. Two things up front. It’s a Pro feature, and it’s switched off by default, so you’ll have to turn it on before you see any of it.
Switching it on
In Listora Pro’s features list, look for Reverse Listings (Post a Need), under the marketplace group. New installs have it off. Tick it and the plugin registers a “need” content type, an admin moderation queue, two blocks and a public page for browsing requests.
The two blocks are the part you’ll place on pages: one for the form buyers use to post a need, and one that lists open needs in a grid. Needs also live at a /needs/ address, and if you create your own page with that slug the plugin lets your page own it, so you don’t end up with two competing lists.
The matching settings sit under Settings, Credits, in a section for the needs marketplace. I’ll point at them as we go.
What a buyer submits
A request has the same shape as a small job brief. The buyer chooses the type of listing they need (which ties it to the vendors you already have), a location, a budget range, a deadline and how urgent it is.
- Budget: a minimum and maximum, plus a currency. The budget can be counted as a fixed amount, per hour or per day, and fixed is the default. That setting exists because a bare “18 to 25” left vendors guessing whether it meant an hour or the whole job.
- Urgency: flexible, normal or urgent.
- Deadline: an optional date after which the request closes itself.
- Phone number: optional. It isn’t shown publicly. It’s shared later, and only with the vendor the buyer picks.
You can also cap how many active requests one buyer may have. The setting is for the number of pending and open requests per member, and zero means no limit, which is the default. Beyond the cap, the form tells them to close an active request before posting another. A developer filter lets you set different caps per role, so a paid member can post more than a free one.
Moderation comes first
Every new request is saved as pending. Nothing appears publicly and no vendor is emailed about it until a person approves it.
When a buyer submits, the plugin emails your moderators. You review requests in the Needs Moderation screen, where each one can be approved or rejected. A rejection carries a note, and the buyer gets an email that includes your reason, so they know what to fix.
That gate matters for a marketplace. It’s what stops spam, requests that are really adverts, and anything you don’t want your vendors to see. It also means you control how fast leads go out, because nobody gets alerted until you press approve.
How vendors are matched
On approval, two emails go out. The buyer is told their request is live, and the matching vendors are told about it.
Matching is by type and place. The plugin finds published listings of the type the buyer asked for, and when the request has a location, it keeps only those inside a radius. The default radius is 25 kilometers, it’s a setting under the needs marketplace section, and developers can change it with a filter. The results are ordered by rating first and distance second, and a single request matches at most 50 listings.
Two details avoid awkward surprises:
- No location means match by type only. If a request has no coordinates, every published listing of that type is a candidate, ordered by rating.
- One email per owner. A vendor with three matching listings gets one notification, not three.
The matching reads the same search index and location table that power the directory’s own search, so it doesn’t run a slow query across all your listings each time.
What a vendor does next
A vendor answers from their own listing. They write a message, pick which of their listings they’re responding with, and send the quote. A few rules protect everyone:
- A message is required, so empty quotes don’t go through.
- A vendor can only respond with a listing they own, and never to their own request.
- One listing can answer a given request once.
- A closed request no longer accepts quotes.
- If either member has blocked the other, the response is refused, whichever way the block goes. The error doesn’t say who blocked whom.
That last rule exists because a request is the one place in Listora where members repeatedly hear from other members. There’s no private messaging system, so a vendor who keeps replying to everything a buyer posts is the realistic harassment risk. Blocking is checked on the server, not only in the form.
What a quote costs
By default, nothing. The per-response cost starts at zero credits, so a new site sends quotes for free.
If you want to charge, set a cost under the needs marketplace settings. Charging relies on Listora’s credit system being available, and each quote then needs that many credits in the vendor’s balance. If they’re short, the error says how many they need and how many they have, and invites them to top up.
The mechanics are careful about money. The balance check and the reservation happen together under a lock per vendor, so two quotes sent at the same moment can’t both pass the check and overdraw the account. The credits are held, the quote is saved, and then the hold is turned into a charge. If something fails along the way, the hold is released so the vendor isn’t charged for a quote that didn’t send.
One policy to be clear about with vendors: credits spent on a quote are not refunded. If the request later closes, expires or goes to someone else, the vendor’s credits stay spent. The reasoning in the code is that the credits bought the lead. State that in your vendor terms before you set a price.
The buyer decides
The buyer is emailed when a quote arrives and reviews quotes from their request. They can accept one or reject others.
Accepting a quote does several things at once. The request is marked fulfilled, every other waiting quote is closed, and each of those vendors is told another quote was chosen. The accepted vendor then gets the buyer’s contact details: the account email, plus the phone number if the buyer entered one. Nobody else sees them. That’s deliberate, because contact details are the thing a buyer is least willing to publish.
A buyer can also close their own request at any time. That has the same effect on the waiting quotes: they close and their vendors hear about it. And if a buyer edits a request that already has quotes, each vendor with a waiting quote gets one email about the change, so nobody is quoting for a job that has moved.
When a request ends by itself
Requests don’t pile up forever. A request with a deadline closes when the date passes. One without a deadline stays open for 30 days by default. That number is a setting, and zero means such requests never expire.
A daily background job does the sweeping. When a request expires, the buyer gets an email and every waiting quote is closed with the vendor told why. The effect is that your marketplace stays current without anyone cleaning it.
What to check before you launch
A marketplace with no vendors or no buyers looks dead on day one, so a few preparation steps help.
- Seed the directory first. A request matches nothing if you have no listings of that type nearby.
- Decide the radius. Twenty-five kilometers suits a city. A national service might need a bigger radius or no location at all.
- Decide whether quotes cost credits. Free is a good start while you build supply.
- Write the rules for vendors: how fast to reply, that credits aren’t refunded, and what happens when two businesses quote.
- Staff the moderation queue. Requests wait until someone approves them.
If you’re still choosing a model, classifieds, marketplaces and directories explains how the three differ, and how directory websites make money covers the revenue options that credits plug into.
Test it with three accounts
Use one buyer, one vendor with a listing and an admin.
- Switch on Reverse Listings and place the post-need block on a page.
- As the buyer, post a request with a location near your test listing. Confirm it is pending and not public.
- As the admin, check the moderator email arrived, then approve it. Confirm the buyer and the vendor are both emailed.
- As the vendor, send a quote. If you’ve set a cost, confirm the balance dropped by that amount.
- As the buyer, accept the quote. Confirm the request shows fulfilled and the vendor gets the buyer’s contact details.
- Post a second request, let a deadline pass, and confirm it expires and the buyer is emailed.
For developers
The feature fires hooks at each step. You can veto a new request, a response, an acceptance or a rejection by returning an error from the matching before-filter, and you can listen to the published, fulfilled, closed and expired events to push data into a CRM or a chat tool. The email subjects each have a filter, and so do the radius, the response cost, the default expiry and the per-user cap. All of this is Pro.
The Listora features page lists everything else in the plugin, Free vs Pro shows exactly what needs Pro, and the pricing page has the plans.