# Privacy Policy — maca Restu Pro

**Version:** 1.6  
**Last updated:** June 2026  
**Data controller for your site:** You (the restaurant / site owner)  
**Plugin provider:** Maca Development (maca.se)

This Privacy Policy describes how the **maca Restu Pro** WordPress plugin ("the Plugin") handles information. **You** remain the **data controller** for personal data collected from your guests through your website. Maca Development is a **processor** only where we operate the license API on maca.se, and otherwise provides software that runs on your server.

## 1. Data stored on your WordPress site

Depending on which features you enable, the Plugin may store the following **on your server** (database and uploads):

| Data | Purpose | Typical features |
| --- | --- | --- |
| Menu categories, PDF/image files, dish names, prices, descriptions, images | Display menus to guests | Core / Pro |
| Allergen labels linked to dishes | Guest information | Pro |
| Guest dish ratings (numeric score, dish ID, anonymous guest key, timestamp) | Show average ratings | Pro |
| Table orders (table number, dish lines, quantities, notes, status, guest token for order status) | Kitchen / waiter workflow | Pro |
| Order payment status (amount, currency, provider, online/manual method, external payment ID, timestamp) | Show paid orders | Pro (guest payments) |
| Payment settings (encrypted API keys, webhook secret, Swish merchant number, etc.) | Connect Stripe/Swish | Pro (Payments) |
| Table bookings (name, email, phone, date/time, party size, notes, table, status, guest token for cancellation) | Manage reservations | Pro |
| Physical tables (table number, seats) | Booking availability | Pro |
| Staff PIN (hashed) | Protect staff order pages | Pro |
| Backup ZIP files | Restore plugin data | Pro plugin |
| License key and last validation status | Unlock Pro features | Pro |
| Site chatbot index (text snippets and embedding vectors from your menu, hours, events, etc.) | Answer guest questions via AI search | Pro (Chatt) |
| OpenAI API key for site chatbot (encrypted) | Connect the guest chatbot to your OpenAI account | Pro (Chatt) |

The Plugin does **not** send guest orders, bookings, ratings, or guest payment details to maca.se by default. They remain in your WordPress database (and with your payment provider) until you delete them or uninstall the Plugin.

## 2. Technical data, cookies, and browser storage

When guests use the menu, QR page, or AJAX features, standard web server logs on **your hosting** may record IP addresses, user agents, and requested URLs. Table ordering and ratings may store **table numbers** and **order content** you configure. Table booking stores **contact details** that the guest submits in the booking form.

The Plugin may also use **cookies** and **browser localStorage** on the guest device:

| Key | Type | Purpose |
| --- | --- | --- |
| `maca_menu_lang` | Cookie | Stores the guest's menu language choice (local / English) |
| `maca_menulist_dish_voter` | Cookie | Anonymous key so the same guest can rate a dish only once |
| `maca_menulist_table_order_*` | localStorage | Temporary cart before the order is sent to staff |
| `maca_menulist_guest_order` | localStorage | Guest token used to follow order status (until the order is closed or deleted) |

**Guest order recovery (Guest QR):** If you enable **order status for guests**, staff on the waiter/kitchen view can show a **Guest QR** code. The link points to your QR menu with the URL parameter `maca_order=` containing the guest order token. When the guest scans or opens the link, the token is saved in localStorage and order status is shown. The token in the URL may appear in the address bar, server logs, and sharing history — treat the link as a **secret access key** (similar to a booking cancellation link). Only show the QR to the correct guest at the table.

**QR image for staff:** The Guest QR modal loads the QR image from **api.qrserver.com** (same service as the admin QR Codes page). The staff browser contacts that service when the modal opens; no guest personal data is sent beyond the encoded URL to your own site.

You should mention this in your own privacy notice for the restaurant.

If you enable **CAPTCHA** (e.g. Google reCAPTCHA or Cloudflare Turnstile) for table booking, the selected provider may process technical data under its own privacy policy.

## 3. License validation (maca.se)

If you enter a Pro license key, the Plugin contacts the **maca.se license API** to activate, deactivate, or periodically verify the key.

**Sent to maca.se:** license key, your site URL (`home_url`), and related validation metadata.  
**Purpose:** verify entitlement for this installation.  
**Legal basis (for Maca Development as processor):** performance of the license agreement with you.

Purchase receipts and billing for **Pro license** Stripe Checkout are handled by **Stripe** according to Stripe's privacy policy. See [maca.se/restu-pro/](https://maca.se/restu-pro/) for purchase terms. This does **not** apply to guest payments on your restaurant website.

## 4. Guest payments (Stripe / Swish)

If you enable **guest payments** under **maca Restu → Payments**:

| What | Where it is stored / processed |
| --- | --- |
| API keys and webhook secret | Your WordPress server (encrypted in the database) |
| Guest choice (pay online / pay with server) | Your WordPress database (`payment_method` on the order) |
| Payment initiation and card/Swish data | **Stripe** and/or **Swish** (or your bank/partner) — only for online payment |
| Webhook messages | Sent to your site (`/wp-json/maca-menulist/v1/payments/…`) to update payment status |
| Payment metadata on orders | Your WordPress database (amount, status, provider, external ID, `paid_at`) |
| Email for order confirmation (optional) | **Not stored** in WordPress — passed through Stripe Checkout for sending after payment only; includes line spec and VAT breakdown; **not** an official tax receipt |

**maca.se** does **not** receive guest payment details. You are the data controller toward guests; Stripe/Swish are often **independent controllers** or **processors** under your agreement with them — follow their documentation.

**International guests:** With **Stripe**, guests paying with **foreign cards** can often pay even when they are not in Sweden (currency and methods depend on your Stripe account, e.g. SEK). **Swish** is typically limited to users with Swedish Swish. Mention this in your own privacy notice.

Stripe may process data outside the EU/EEA (e.g. the United States) with appropriate safeguards per their policy.

## 5. Site chatbot / Chatt (OpenAI)

If you enable **Chatt** under **maca Restu → Chatt** and provide your own **OpenAI API key**:

| What | Where it is stored / processed |
| --- | --- |
| OpenAI API key | Your WordPress server (encrypted in the database) |
| Search index (text chunks + embedding vectors from menu, opening hours, events, booking rules, menu footer, and optional WordPress pages) | Your WordPress database |
| Guest questions and short conversation history in the browser | Sent from the guest browser to your server; only the current question and recent turns are used server-side |
| Relevant text snippets retrieved from the index + the guest question | Sent from **your server** to **OpenAI** (your account) to generate an answer |

**maca.se** does **not** receive guest chat questions or OpenAI traffic. Billing for indexing and chat goes to **your OpenAI account**.

The chatbot is designed to answer from **indexed restaurant content only** (not live bookings or orders). For booking-related questions, the chat may show a **booking button** (opens the booking form or booking page) and up to **three clickable links** to indexed pages (menu, events/news, WordPress pages). No extra personal data is sent to OpenAI beyond the guest question and relevant index text. Do not enable it if you cannot inform guests that questions may be processed by OpenAI under your account.

OpenAI may process data outside the EU/EEA depending on their services and your settings. Follow [OpenAI's privacy policy](https://openai.com/policies/privacy-policy) and configure usage limits in your OpenAI dashboard.

## 6. Your obligations as site owner

You must:

- Provide a **privacy notice** to guests if you collect orders, bookings, ratings, or other personal data.
- Have a **legal basis** under GDPR (e.g. legitimate interest or contract) for processing guest orders and bookings.
- Respond to **data subject requests** (access, erasure, etc.) for data stored by the Plugin.
- Configure retention: delete old orders when no longer needed; use backup retention settings responsibly.
- Keep wp-admin, staff PINs, and backups secure.

## 7. Retention and deletion

- **Orders, bookings, and ratings:** kept until you delete them in wp-admin or remove the Plugin.
- **Backups:** kept according to your retention setting; stored under your uploads directory.
- **License data:** stored in WordPress options until you deactivate/remove the key or uninstall.
- **Site chatbot index:** kept until you rebuild or uninstall; guest questions are not stored in the database by default (only processed for the answer).
- **Uninstall:** deleting the Plugin via WordPress runs `uninstall.php`, which removes plugin tables and options (including acceptance records and license storage).

## 8. International transfers

License validation may process data on servers located in the EU/EEA or other countries where maca.se or its hosting providers operate. We aim to use appropriate safeguards where required by law.

## 9. Security

We design the Plugin to store data locally and use WordPress security APIs (nonces, capabilities, sanitization). You are responsible for server hardening, HTTPS, strong admin passwords, and limiting access to staff order URLs and PINs.

## 10. Children

The Plugin is intended for restaurant use. It is not directed at children. You must comply with age-limit rules for alcohol service in your jurisdiction.

## 11. Changes to this Policy

We may update this Policy when features or legal requirements change. A new **version number** may require renewed acceptance in **maca Restu → Terms & Privacy**.

## 12. Contact

**Site owner / data controller:** your restaurant — use the contact details you publish on your website.

**Plugin provider:** Maca Development — [https://maca.se](https://maca.se)

For privacy questions about license purchases or maca.se services, contact us via maca.se.
