Classified ads script: 7 things to check before you pick one
Last updated

Classified ads scripts all show the same screenshots: a grid of ads, a category menu, a post button. The differences appear a month after launch, when one member posts the same bike forty times, when a buyer works out where a seller lives by moving the search pin, when two people both think the seller accepted their offer, or when a paid "top" ad stays up after the ad was removed for fraud. This guide lists seven things worth testing before you choose a self-hosted classifieds script, and how Hagglo, built on Laravel 12 and Filament 4 with a Flutter app, handles each one.

1. Does free posting have limits that hold?
If posting is free, you need a quota, and a quota that can be beaten by tapping publish on two phones is not a quota. Ask what the window is, what happens at the limit, and what a rejected ad costs the seller.
In Hagglo each root category has its own free allowance over a rolling 30 days. When it is used up, the member can use a pack credit (packs can be tied to a category, and the one that expires first is spent first) or wait for the next slot. The check runs under a lock on the member, so two parallel publishes on the last slot give one success. Pausing, renewing and editing cost nothing, and an ad rejected at first review gives its slot back.
2. Who stops spam before a human sees it?
A script that sends every ad to a queue will bury your moderators. A script that publishes everything will bury your buyers. Look for scoring, with reasons a moderator can read.
Hagglo adds up points: matching rules (keywords, links, phone numbers, patterns), a phone number or link in the description, a price far from the category median, and a member who has few approved ads. A low score goes live, a high one waits, and a rule can reject outright. There are three modes: auto, review everything, and post-moderate. The queue shows the score reasons next to the ad, and a rules tester lets staff paste text to see what would fire.

3. Does the "near me" search give away where people live?
Radius search needs coordinates, and coordinates in the API are a privacy leak. Check the public JSON, the map pins and the paging data.
Hagglo shows a pin shifted by a stable amount (300 m by default), returns distances in whole kilometres, and snaps the search centre and radius. The paging cursor is encrypted, so it cannot be used to read exact distances. Only the owner sees the exact pin. Phone numbers stay hidden until a signed-in buyer reveals one, with a daily cap and a log.

4. Can buyers and sellers haggle without confusion?
A chat box is not enough for a marketplace named after bargaining. You need offers that follow turns and a clear answer to "who got it?".
In Hagglo an offer lives inside the conversation. The other side can accept, counter or decline, a new offer replaces the old one, and unanswered offers expire. Accepting reserves the ad for that buyer for a set number of hours, and a second accept on the same ad is refused. The seller can release the reservation, and marking the ad sold lets them choose the buyer, who can then rate them.

5. Is chat safe by default?
Scams live in chats. Look for blocking, rate limits and some pattern checks, and make sure a moderator can see flagged threads.
Hagglo limits new chats per hour, soft-locks a member who pastes the same text into many chats, flags messages that point to off-platform payment or contact, and inserts a safety note. Flagged messages are delivered and listed for moderators, who can warn or ban. A ban removes the member's ads and clears their reservations.
6. How does paid promotion behave when things go wrong?
Promotion is how most classifieds sites earn, so test the odd cases: an ad still in review, a rejected ad, an ad sold the next day, a bump bought while another runs.
Hagglo sells bump, featured, top and urgent packages. A bump repeats on a schedule, featured is a badge and outline, and top uses paid slots at the head of the results. A promotion bought on an ad in review waits for approval and is refunded if the ad is rejected. Staff removal without fault is refunded pro rata, and a sale or deletion by the seller is not refunded. Card money counts only after a successful payment event, and a repeated event is ignored.

7. Is there a mobile app, and how was it tested?
Ask whether the app is a real project you can build, what it needs from the server, and what it was tested against.
Hagglo includes a Flutter app (apps/user) for buying, selling and chatting. It starts in demo mode with its own mock data, and two build flags point it at your server. It passed analysis and 68 tests, and builds as a debug Android package and for the iOS simulator. It was tested against the mock and API responses captured from the backend, not on physical devices and not against a live backend, so plan your own device pass.
See it in action
The video tour goes from the 3D marketing site through search, an ad, chat and offers, to selling, promoting, moderation and the admin map of districts.
What else to compare
- Reports: reports pause an ad when enough distinct verified members flag it, a dismissed report lowers the reporter's trust, and staff actions go to a log.
- Admin: roles for admin, moderator, finance and content; categories and dynamic fields; locations; packages, orders and refunds; and reports on new ads, approval time, sold rate and revenue.
- Languages: English, plus an Arabic translation that covers the main screens but not every string. The admin panels are English only.
- What is not included: payments between users and delivery. Money moves only for promotions, ad packs and wallet top-ups.
- What was not verified: the Stripe, PayPal and Razorpay drivers, push and SMS were not run with live accounts, and Lighthouse was not run.
- Quality: Hagglo 1.0.0 shipped with 201 Pest tests (4,125 assertions), Larastan level 6 with no errors, a headless-browser pass over 134 pages and an installer test from the zip.
Instead of a live demo, the listing has 66 grouped web screenshots, 47 app screenshots and two video tours, and the "How it's built" section explains the architecture.
Price tag swarm — Toy goods hang from swinging cardboard price tags over a tilted cobalt map, and the tags sway as the pointer moves.
Drift — Pins drop on the map while the goods swing, with a search bar right under the headline.





