{"id":342966,"date":"2026-08-16T13:41:47","date_gmt":"2026-08-16T13:41:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lineweb-restaurant-orders\/"},"modified":"2026-09-08T09:35:15","modified_gmt":"2026-09-08T09:35:15","slug":"lineweb-restaurant-orders","status":"publish","type":"plugin","link":"https:\/\/cl.wordpress.org\/plugins\/lineweb-restaurant-orders\/","author":23285232,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Lineweb Restaurant Orders","header_author":"Andrew Matia \/ Lineweb","header_description":"A self-hosted QR menu and restaurant ordering system for delivery, pickup, and dine-in, with card or cash payments and no commissions.","assets_banners_color":"f9f7f6","last_updated":"2026-09-08 09:35:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/drewmt\/lineweb-restaurant-orders","header_author_uri":"https:\/\/www.lineweb.gr\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":187,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"linewebdigital","date":"2026-08-16 13:41:37","revision":3649776},"1.1.0":{"tag":"1.1.0","author":"linewebdigital","date":"2026-09-08 09:35:15","revision":3686307}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3649776,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3649776,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3649776,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3649776,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3649776,"resolution":"1","location":"assets","locale":"","width":430,"height":932},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3649776,"resolution":"2","location":"assets","locale":"","width":430,"height":932},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3649776,"resolution":"3","location":"assets","locale":"","width":430,"height":932},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3649776,"resolution":"4","location":"assets","locale":"","width":1440,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3649776,"resolution":"5","location":"assets","locale":"","width":1440,"height":1000},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3649776,"resolution":"6","location":"assets","locale":"","width":1440,"height":1000},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3686307,"resolution":"7","location":"assets","locale":"","width":390,"height":1040},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3686307,"resolution":"8","location":"assets","locale":"","width":1512,"height":1200},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3686307,"resolution":"9","location":"assets","locale":"","width":390,"height":1040}},"screenshots":{"1":"Mobile-first menu with promotional banners, food photography, and category navigation.","2":"Product variants, extras, dietary information, and notes.","3":"Delivery, pickup, dine-in, tips, and payment checkout.","4":"Order management and status workflow.","5":"Store, payment, notification, privacy, and PWA settings.","6":"QR-code generator.","7":"Scheduled pickup selection on mobile, with store-local availability.","8":"Preparation time, pickup intervals and temporary ordering pause.","9":"The accepted pickup time in private customer order tracking."}},"plugin_section":[],"plugin_tags":[72293,43684,1373,23280,5349],"plugin_category":[45],"plugin_contributors":[275980],"plugin_business_model":[],"class_list":["post-342966","plugin","type-plugin","status-publish","hentry","plugin_tags-food-ordering","plugin_tags-online-ordering","plugin_tags-qr-code","plugin_tags-restaurant-menu","plugin_tags-stripe","plugin_category-ecommerce","plugin_contributors-linewebdigital","plugin_committers-linewebdigital"],"banners":{"banner":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/banner-772x250.png?rev=3649776","banner_2x":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/banner-1544x500.png?rev=3649776","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/icon-128x128.png?rev=3649776","icon_2x":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/icon-256x256.png?rev=3649776","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-1.png?rev=3649776","caption":"Mobile-first menu with promotional banners, food photography, and category navigation."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-2.png?rev=3649776","caption":"Product variants, extras, dietary information, and notes."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-3.png?rev=3649776","caption":"Delivery, pickup, dine-in, tips, and payment checkout."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-4.png?rev=3649776","caption":"Order management and status workflow."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-5.png?rev=3649776","caption":"Store, payment, notification, privacy, and PWA settings."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-6.png?rev=3649776","caption":"QR-code generator."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-7.png?rev=3686307","caption":"Scheduled pickup selection on mobile, with store-local availability."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-8.png?rev=3686307","caption":"Preparation time, pickup intervals and temporary ordering pause."},{"src":"https:\/\/ps.w.org\/lineweb-restaurant-orders\/assets\/screenshot-9.png?rev=3686307","caption":"The accepted pickup time in private customer order tracking."}],"raw_content":"<!--section=description-->\n<p>Lineweb Restaurant Orders gives restaurants, caf\u00e9s, and takeaway businesses a self-hosted QR menu and online food ordering workflow inside WordPress. Customers can order delivery, pickup, or dine-in directly from the restaurant's own website. There are no commissions, paid feature gates, trials, or Pro upsells.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>Food items, categories, variants, extras, dietary labels, allergens, and featured items.<\/li>\n<li>Delivery, pickup, and optional dine-in table ordering.<\/li>\n<li>Optional scheduled pickup with preparation time and store-local time slots.<\/li>\n<li>A temporary pause for new orders while keeping the menu visible.<\/li>\n<li>Server-authoritative cart validation and totals.<\/li>\n<li>Cash payment and optional Stripe card payments.<\/li>\n<li>Order management, statuses, printable receipts, sound alerts, and aggregate reports.<\/li>\n<li>Customer order-status tracking protected by an opaque order token.<\/li>\n<li>QR-code generation and an optional, menu-scoped progressive web app.<\/li>\n<li>Optional Twilio WhatsApp order notifications.<\/li>\n<li>Configurable retention and anonymization of completed order personal data.<\/li>\n<\/ul>\n\n<p>For the complete ordering experience, create a page and select the <strong>Food Menu App View<\/strong> page template. The <code>[snaporder_restaurant_menu]<\/code> shortcode provides a lightweight menu catalogue inside a normal theme page.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Lineweb Restaurant Orders works without an external service when cash payment is used. The following optional integrations are contacted only after a site administrator enables and configures them.<\/p>\n\n<h4>Stripe<\/h4>\n\n<p>Stripe is used to process card payments. The browser loads Stripe.js from <code>https:\/\/js.stripe.com\/<\/code> and sends card details directly to Stripe. The plugin sends the authoritative order amount, currency, WordPress order ID, and an idempotency key to <code>https:\/\/api.stripe.com\/<\/code>. Stripe returns payment identifiers and statuses; Lineweb Restaurant Orders does not store full card details.<\/p>\n\n<ul>\n<li>Stripe Terms: https:\/\/stripe.com\/legal\/ssa<\/li>\n<li>Stripe Privacy Policy: https:\/\/stripe.com\/privacy<\/li>\n<\/ul>\n\n<h4>Twilio<\/h4>\n\n<p>Twilio is used only when WhatsApp notifications are enabled. Lineweb Restaurant Orders sends the configured sender number, customer phone number, and the relevant order\/status message to <code>https:\/\/api.twilio.com\/<\/code>.<\/p>\n\n<p>Twilio sender and customer numbers must use international E.164 format, for example <code>whatsapp:+14155238886<\/code>.<\/p>\n\n<ul>\n<li>Twilio Terms: https:\/\/www.twilio.com\/en-us\/legal\/tos<\/li>\n<li>Twilio Privacy Notice: https:\/\/www.twilio.com\/en-us\/legal\/privacy<\/li>\n<\/ul>\n\n<p>Lineweb Restaurant Orders does not send telemetry, usage analytics, or marketing data to Lineweb or the plugin author.<\/p>\n\n<h3>Support and custom development<\/h3>\n\n<p>For questions about the included plugin features, use the WordPress.org support forum. For restaurant-specific integrations, workflows, or custom development outside the included scope, visit <a href=\"https:\/\/www.lineweb.gr\/\">www.lineweb.gr<\/a>.<\/p>\n\n<p>Lineweb Restaurant Orders is created and maintained by Andrew Matia \/ Lineweb.<\/p>\n\n<h3>Development and source<\/h3>\n\n<p>Lineweb Restaurant Orders ships its runtime assets locally. To reproduce them, install Node.js 24, run <code>npm ci<\/code>, and then run <code>npm run build<\/code> from the plugin directory.<\/p>\n\n<p>The build compiles <code>tailwind.input.css<\/code> to <code>assets\/css\/app.css<\/code> and uses <code>tools\/copy-vendor-assets.mjs<\/code> to copy the pinned Lucide and QRCode.js files and licenses. Exact dependency versions are recorded in <code>package-lock.json<\/code>; the release includes these asset sources and excludes installed development dependencies.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>lineweb-restaurant-orders<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate Lineweb Restaurant Orders.<\/li>\n<li>Add categories and food items from the WordPress admin menu.<\/li>\n<li>Open Lineweb Restaurant Orders settings and configure branding, opening hours, order types, and at least one payment method.<\/li>\n<li>Create a page and select the <strong>Food Menu App View<\/strong> page template.<\/li>\n<li>Optional: configure Stripe, Twilio, QR codes, data retention, and PWA settings.<\/li>\n<\/ol>\n\n<p>For Stripe, add the webhook URL displayed in Lineweb Restaurant Orders settings to the Stripe dashboard and subscribe it to <code>payment_intent.succeeded<\/code>, <code>payment_intent.payment_failed<\/code>, and <code>payment_intent.canceled<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20scheduled%20pickup%20work%3F\"><h3>How does scheduled pickup work?<\/h3><\/dt>\n<dd><p>Enable Scheduled pickup under Settings &gt; Opening Hours, set the preparation time and a pickup interval, and review the weekly schedule. Pickup customers can choose ASAP or a time within the next 24 hours. The checkout refreshes available times and the server validates them again before creating the order. The accepted time appears in customer tracking, merchant order details and the printable receipt.<\/p>\n\n<p>Times use the WordPress site timezone, including overnight hours and daylight-saving changes. This first version does not reserve capacity per slot or accept new orders while the store is closed. Existing orders keep their accepted time if settings change later.<\/p>\n\n<p>Pause new orders temporarily stops new submissions without cancelling existing orders or payment confirmations. Uncheck the option to resume; there is no automatic resume timer.<\/p><\/dd>\n<dt id=\"is%20there%20a%20pro%20version%20or%20a%20paid%20feature%20gate%3F\"><h3>Is there a Pro version or a paid feature gate?<\/h3><\/dt>\n<dd><p>No. Lineweb Restaurant Orders is a complete free plugin. It contains no Pro upgrade screen, trial, remote feature lock, or upsell notice.<\/p><\/dd>\n<dt id=\"does%20lineweb%20restaurant%20orders%20trust%20prices%20submitted%20by%20the%20browser%3F\"><h3>Does Lineweb Restaurant Orders trust prices submitted by the browser?<\/h3><\/dt>\n<dd><p>No. The browser submits product, variant, extra, and quantity selections. The server reloads the catalogue data and calculates the canonical total before an order or Stripe PaymentIntent is created.<\/p><\/dd>\n<dt id=\"are%20card%20details%20stored%20in%20wordpress%3F\"><h3>Are card details stored in WordPress?<\/h3><\/dt>\n<dd><p>No. Stripe.js sends card details directly to Stripe. WordPress stores the Stripe payment reference and verified payment status only.<\/p><\/dd>\n<dt id=\"does%20lineweb%20restaurant%20orders%20delete%20data%20when%20it%20is%20removed%3F\"><h3>Does Lineweb Restaurant Orders delete data when it is removed?<\/h3><\/dt>\n<dd><p>Not by default. Products, orders, settings, and reports are preserved. An administrator must explicitly enable permanent data removal before deleting the plugin.<\/p><\/dd>\n<dt id=\"where%20is%20customer%20data%20stored%3F\"><h3>Where is customer data stored?<\/h3><\/dt>\n<dd><p>Order contact, delivery, cart, notes, total, and payment-status data are stored in the site's WordPress database. Site owners can configure automatic anonymization for completed, rejected, and failed orders.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added optional pickup scheduling with preparation time, configurable intervals and server-validated store-local times.<\/li>\n<li>Added a pause-new-orders setting that preserves existing order retries and payment confirmations.<\/li>\n<li>Displayed accepted pickup times in token-protected tracking, merchant screens and printable receipts.<\/li>\n<li>Added overnight, daylight-saving and real WordPress ordering regression tests.<\/li>\n<li>Verified WordPress 7.1 compatibility.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Preserved the current menu page when redirecting customers to order tracking on sites using plain permalinks.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Adopted the distinctive <code>snaporder<\/code> prefix across plugin identifiers and added a safe migration for existing 1.0.0 installations.<\/li>\n<li>Moved frontend, PWA, QR, receipt, and admin scripts and styles into properly enqueued assets.<\/li>\n<li>Updated the bundled Lucide icon library.<\/li>\n<li>Restored promotional banner management and its admin fields.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Includes the complete free feature set described above, with no Pro gates or upgrade prompts.<\/li>\n<li>Uses server-authoritative totals, verified Stripe PaymentIntents, token-protected tracking, scoped permissions, local UI assets, and configurable privacy controls.<\/li>\n<\/ul>","raw_excerpt":"A self-hosted QR menu and restaurant ordering system with delivery, pickup, dine-in, Stripe or cash payments, and no commissions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342966"}],"author":[{"embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/linewebdigital"}],"wp:attachment":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342966"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342966"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342966"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342966"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342966"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}