=== SeatHive Event Ticketing ===
Contributors: seatwp
Tags: tickets, event tickets, event booking, qr code, check-in
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 3.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sell event tickets from your own site: ticket types, online payments, QR e-tickets, PDF tickets and mobile check-in. No commission per ticket.

== Description ==

SeatHive turns your WordPress site into a complete ticketing system — free, with no license key and no commission per ticket.

* **Ticket types** — Regular, VIP, Early bird, Family pack… each with its own price, quota, per-order limit and sales end date.
* **Fast 3-step checkout** — mobile friendly, with promo codes, taxes, fees and a waitlist.
* **Payments** — DOKU, Xendit (QRIS, virtual accounts, e-wallets), Stripe, PayPal, Mollie and pay at the venue. Money goes straight to your own merchant account.
* **One QR per guest** — every ticket carries the holder's name; the buyer receives all tickets in one PDF with the event details.
* **Complimentary tickets** — issue free or pay-at-the-door tickets from the dashboard.
* **Check-in from any phone** — green / amber / red answers, offline mode, and a live arrivals dashboard.
* **Reports** — bookings, attendee lists, CSV export, analytics and an activity log.
* **Your look** — colours, fonts and layout of the event page, checkout, receipt and door screens.
* Translation ready.

= Optional: Seating Map add-on =

Want buyers to pick their own seats? The separate **SeatWP Seating Map** add-on from https://seatwp.com/ adds a drag-and-drop Chart Builder, seat categories, ready-made venue layouts and a seat-picking checkout. See *SeatHive → Add-ons* in your dashboard. SeatHive itself never requires it — everything listed above is included for free.

== External services ==

SeatHive does not contact any outside service on a default install. Each service below is used only after you switch it on in *SeatHive → Settings* and enter your own account keys. The data listed is sent only at the moment described.

= DOKU (payment gateway) =

What it is: DOKU, an Indonesian payment gateway (virtual accounts, QRIS, e-wallets, cards). Used to take online payments when you select DOKU as your gateway.
What is sent and when: when a buyer clicks "Pay", the booking total, currency, invoice number, the buyer's name, email and phone number, and your site's return and notification URLs are sent to api.doku.com (api-sandbox.doku.com in test mode) to create the payment page. If a payment notification is late, the plugin asks DOKU for that order's payment status (invoice number only). Your DOKU Client ID and signed request headers are sent with each request.
Provided by PT Nusa Satu Inti Artha (DOKU): [Terms and conditions](https://www.doku.com/my/terms-conditions) · [Privacy policy](https://dashboard.doku.com/doku-agreement/privacy-policy)

= Xendit (payment gateway) =

What it is: Xendit, a payment gateway for Southeast Asia. Used to take online payments when you select Xendit.
What is sent and when: when a buyer clicks "Pay", the booking total, currency, invoice number, the buyer's name, email and phone number, and your site's return URLs are sent to api.xendit.co to create an invoice. Your Xendit secret key authenticates the request.
Provided by Xendit: [Terms and conditions](https://www.xendit.co/en/terms-and-conditions/) · [Privacy policy](https://www.xendit.co/en/privacy-policy/)

= Stripe (payment gateway) =

What it is: Stripe, a card and wallet payment processor. Used to take online payments when you select Stripe.
What is sent and when: when a buyer clicks "Pay", the booking total, currency, invoice number, ticket description, the buyer's email and your site's return URLs are sent to api.stripe.com to create a Checkout Session. Your Stripe secret key authenticates the request.
Provided by Stripe, Inc.: [Services agreement](https://stripe.com/legal/ssa) · [Privacy policy](https://stripe.com/privacy)

= PayPal (payment gateway) =

What it is: PayPal. Used to take online payments when you select PayPal.
What is sent and when: when a buyer clicks "Pay", your PayPal client ID and secret are exchanged for an access token, then the booking total, charge currency, invoice number and your site's return URLs are sent to api-m.paypal.com (api-m.sandbox.paypal.com in sandbox mode) to create the order; after the buyer approves, the order ID is sent again to capture the payment.
Provided by PayPal: [User agreement](https://www.paypal.com/legalhub/useragreement-full) · [Privacy statement](https://www.paypal.com/legalhub/privacy-full)

= Mollie (payment gateway) =

What it is: Mollie, a European payment provider. Used to take online payments when you select Mollie.
What is sent and when: when a buyer clicks "Pay", the booking total, charge currency, invoice number, description and your site's return and webhook URLs are sent to api.mollie.com to create the payment; when Mollie calls the webhook, the plugin reads that payment's status from api.mollie.com (payment ID only). Your Mollie API key authenticates each request.
Provided by Mollie B.V.: [User agreement](https://www.mollie.com/user-agreement) · [Privacy statement](https://www.mollie.com/privacy)

= Google Fonts =

What it is: Google Fonts, a web font library. Used only when you pick one of the Google Fonts in *Settings → Display* or in the event description editor.
What is sent and when: each time a page using that font is shown, the visitor's browser loads the font from fonts.googleapis.com / fonts.gstatic.com, which receives the visitor's IP address and browser details. The default font ("match the visitor's device") makes no outside request.
Provided by Google LLC: [Terms of service](https://developers.google.com/terms) · [Privacy policy](https://policies.google.com/privacy)

= Your own email (SMTP) server =

If you turn on *Settings → Email → Use SMTP*, booking emails (buyer name, email address, booking and ticket details) are sent through the mail server you entered, using the login you provided. Nothing is sent to us.

= Links only (no data is sent until the visitor clicks) =

The share buttons on the event page open WhatsApp (wa.me), Facebook and X with the event link, and "Add to Google Calendar" opens calendar.google.com with the event title, time and venue. The Add-ons screen links to https://seatwp.com/ . These are ordinary links: nothing is sent unless the visitor clicks them.

== Installation ==

1. Plugins → Add New → search for "SeatHive" → Install Now → Activate.
2. Follow the short setup (currency, payment, first event) or go to SeatHive → Events → Add New.
3. Add your ticket types, set your payment gateway in SeatHive → Settings and publish.

Coming from the older SeatWP plugin? Deactivate it first, then activate SeatHive: your events, bookings, tickets and settings move over automatically and old ticket links and QR codes keep working.

== Frequently Asked Questions ==

= Do I need a license key? =
No. SeatHive works fully without one. Only the optional Seating Map add-on is paid.

= Is there a commission per ticket? =
No. You only pay your payment gateway's own transaction fee.

= Does check-in work without internet? =
Yes. Prepare the scanner while online; it keeps scanning offline and syncs when the connection is back.

= How do I add seat maps? =
Install the SeatWP Seating Map add-on (SeatHive → Add-ons). If its plan ends, seat maps you already published keep selling; only the Chart Builder is hidden until you renew.

== Screenshots ==

1. The event page, with venue, date, starting price and a Buy Tickets button.
2. Buyers choose ticket types and quantities. Tickets are held while they check out.
3. The buyer confirms contact details, ticket holders and the payment method.
4. After payment every guest gets their own QR e-ticket, with a PDF download.
5. All orders in one list, with status, invoice number, export and resend.
6. Sales analytics: revenue, tickets sold, sales by ticket type and check-in progress.

== Changelog ==

= 3.3.1 =
* One order per checkout: a double click, a retried request or a second tab no longer creates a second order. The same order sent again returns the order that already exists (and the same payment page); a seat that is already in an open order of the buyer cannot go into another one.
* Settings → Display → "Seat map checkout": your own colours for the checkout buttons, text, backgrounds and the Back button, corners, and the timer / line under the buttons on or off.
* The line under the checkout buttons now says "Secure payment" and can be changed (seat map and tickets-only checkout).
* The phone field shows "Phone" instead of a sample number.
* Checkout buttons keep their look on themes that style every button (e.g. Hello Elementor), and hidden buttons stay hidden.

= 3.3.0 =
* New per-event "Checkout timer" setting (Event settings): choose how many minutes seats or tickets stay reserved during checkout (2–60, default 12).
* Add-ons page: new Seating Map plans (3 months, 1 year, Agency for 5 sites, Lifetime).
* When the checkout timer runs out, the buyer is sent back to the event page with a short note that the seats or tickets were released.

= 3.2.0 =
* Removed WhatsApp reminders (Fonnte and the add-on relay). Event reminders are sent by email; the old WhatsApp settings are cleaned up automatically.

= 3.1.0 =
* New name: SeatHive Event Ticketing (plugin slug: seathive). Same data, settings and links.
* If the earlier "Seat Ticketing" copy is still active, SeatHive waits and shows a notice instead of clashing with it.
* Admin screens and script handles now use the plugin's own "seatt-" prefix (old admin links redirect automatically).
* Readme: each external service is documented with what is sent, when, and links to its terms and privacy policy.

= 3.0.1 =
* Event page tabs: inactive tabs are now dark (themes such as Hello Elementor no longer turn them pink).
* New settings under Display → Event details page: "Tab text" and "Tab hover colour".
* Event pages (/events/…) no longer 404 right after installing or updating — permalinks are rebuilt automatically.

= 3.0.0 =
* New name: SeatHive (formerly SeatWP). Free, no license key, nothing locked.
* Seat maps and the Chart Builder moved to the optional SeatWP Seating Map add-on.
* New Add-ons screen.
* Data from the older plugin is moved over automatically; old links and QR codes keep working.
* All scripts and styles now load through the WordPress enqueue system.

== Upgrade Notice ==

= 3.1.0 =
New name: SeatHive Event Ticketing. Deactivate the earlier "Seat Ticketing" copy first; your data stays.

= 3.0.0 =
Deactivate the older SeatWP plugin before activating SeatHive — your data then moves over automatically.
