{"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-08-16T13:41:37","modified_gmt":"2026-08-16T13:41:37","slug":"lineweb-restaurant-orders","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/lineweb-restaurant-orders\/","author":23285232,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.4","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-08-16 13:41:37","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":34,"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"}},"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"],"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}},"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."}},"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."}],"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>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 20 or newer, 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=\"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.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:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342966"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/linewebdigital"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342966"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342966"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342966"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342966"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342966"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}