Skip to content
LazyFrog

Customer support

Helpdesk and ticketing for customer support

A contact form that opens a ticket, a staff inbox with status and assignment, replies emailed to the customer, a private status page per ticket, and reminders when a ticket waits too long.
The live demo of helpdesk and ticketing for customer support: its home page

What you get

  • Tickets from a contact form
  • A staff inbox with status and assignment
  • Replies emailed to the customer
  • A private status page per ticket
  • Reminders for tickets waiting too long

The prompt

Change the names, prices and details to yours. Your AI needs LazyFrog connected first: two minutes.

Use LazyFrog to build a helpdesk for my online shop: customers write in through a contact form, my team answers tickets from an inbox, and each customer gets a private page to follow their ticket.

The live demo

What Codex built from that prompt on 13 November 2026, in about 5 minutes, then published as an example. Try it: what you add is put back every night.

View the live apphelpdesk-demo.lazyfrog.app
Demo sign-ins
Support teamteam@example.comhelpdesk123
The full spec

The same app with every detail named: the pages, fields and tables. Use it when you want exactly this app; the short prompt leaves those choices to your AI.

Use LazyFrog to build a helpdesk for my small online shop's customer support. Customers write in through a form at /contact (name, email, subject and message, with a hidden empty field that catches bots and a limit of a few tickets an hour per visitor), which opens a ticket and shows the customer the link to its status page; nothing is emailed automatically to the address typed into the form, since anyone can type someone else's. Tickets go in a table called tickets (subject, customer_name, customer_email, status as open, waiting or solved, assignee_email, public_token, created_at, last_staff_reply_at) and the conversation in messages (ticket_id, author as customer or staff, body, created_at, email_status). Each ticket has a status page at /t/<public_token> (a random token of at least 128 bits, never the ticket's id) where the customer sees the conversation and the status and can reply. My staff work under /staff, protected with LazyFrog's protected pages (I'll choose the password in the portal): the inbox at /staff (?status=open, waiting or solved), and each ticket's page with the conversation, a reply box, its status and who it's assigned to. A staff reply is saved, emailed to the customer through my own email provider with the status link, and its email result kept with the message (the reply is saved and shown even while email isn't set up). Staff are a table called staff (name, email); start with two, first-line@example.com and billing@example.com. Add a JSON API: POST /api/tickets with {"name", "email", "subject", "message"} answers 201 with {"id", "public_token"}; POST /staff/api/tickets/<id>/reply with {"body", "status"} and POST /staff/api/tickets/<id>/assign with {"assignee_email"} answer the ticket as JSON; GET /staff/api/overdue lists the open tickets with no staff reply for longer than the reply target (24 hours unless I set another on /staff/settings). One cron job every 15 minutes emails me (the owner) the tickets that have just gone past the target, each ticket once. Start with six example tickets across the statuses, one of them "Delivery address change", opened two days ago and never answered.

The full spec was built and checked on LazyFrog on 31 October 2026. It took about 4 minutes.