Ticketing, email campaigns, CRM, revenue intelligence, QR check-in, abandoned checkout recovery, referral tracking, waitlists, event templates, automation, and a headless API — all built, all live, all included from day one. Not a roadmap. Not a prototype. Production infrastructure handling real events and real payments.
Individual capabilities across 12 feature domains — ticketing, campaigns, CRM, revenue intelligence, check-in, automation, security, theming, localisation, and a complete headless API. Every one live and in production.
True isolation means every client company gets a separate Bunny Database instance. There’s no shared schema, no row-level filtering, no risk of cross-tenant data leaks. A bug in client A’s account physically cannot touch client B’s data.
Each company gets its own Bunny Database (LibSQL/SQLite). The platform DB stores only encrypted metadata — no event, order, or attendee data is ever shared across tenants.
Each company’s database token is encrypted with AES-256-GCM before being stored in the platform DB. Tokens are decrypted in memory per request — never stored in plaintext.
Tenant resolution happens on every request via the Host header. The correct company is identified by matching against custom_domain or subdomain in the platform DB, cached for 5 minutes.
New company provisioning calls the Bunny Database API, creates the isolated DB, runs the full schema, seeds admin credentials, and returns ready-to-use login details — all in under 10 seconds.
One Edge Script deployment handles unlimited companies. There’s no per-tenant infrastructure to manage. Add a new company row and they’re live.
Every admin action is recorded in a tenant-scoped audit log. Who changed what, when, and from which IP. Non-repudiation baked in from day one.
Every touchpoint — the public ticketing site, checkout, ticket confirmation, QR code email, and admin dashboard — is fully branded per client. There’s no “powered by” badge, no shared domain, no indication they’re using third-party infrastructure.
Each client connects their own Stripe or SumUp account. When a ticket is purchased, payment flows directly to the client — not through us. We never hold, process, or take a cut of their ticket revenue.
Full Stripe Checkout integration with webhook-verified payment confirmation. Supports all Stripe payment methods. Configuration stored encrypted per tenant.
SumUp checkout for clients who prefer it. The same pluggable provider interface — just a different payment button. Mix and match across your client base.
Provider keys and secrets are stored AES-256-GCM encrypted per company. Decrypted only during payment operations — never logged, never exposed in API responses.
Every incoming webhook is verified against the provider’s signature before any action is taken. Replay attacks are rejected. Idempotency keys prevent double-processing.
Adding a new payment provider means implementing a three-method TypeScript interface: createCheckout, handleWebhook, createRefund. That’s it.
Zero-value orders bypass the payment provider entirely. Confirmation emails, QR codes, and attendee records are created identically — no special case handling needed.
Two layers of email: automated drip sequences tied to event timing, and manual blast campaigns to targeted audience segments. Both run through the client’s own Mailgun account.
Configure email sequences for each event: “send 7 days before”, “send on the day”, “send 3 days after”. Reusable templates with personalisation tokens for attendee name, event details, and ticket info.
Send a one-off campaign to any audience segment — all attendees, a specific event’s guests, or a CRM segment like “lapsed customers”. Subject, body, filter, fire.
Every blast generates a unique campaign ID. When an attendee clicks through and buys, the order is tagged. Revenue Intelligence shows exactly how much each campaign drove.
Instant booking confirmation with ticket summary and QR code. Reminder emails sent automatically before events. All using the client’s own sending domain.
Create and save email templates once, reuse across events. Personalisation tokens: {{name}}, {{event}}, {{date}}, {{venue}}, {{ticket_type}}.
When a sold-out event gets a cancellation, waitlisted attendees receive an automated email with a time-limited claim link. First come, first served, fully automated.
When an attendee enters their details but doesn’t complete the purchase, qwikr.events triggers an automated three-stage recovery sequence: at 30 minutes, 4 hours, and 20 hours. Each message is fully customisable and can include a discount code. Sent count, recovery rate, and attributed revenue are all tracked.
Multiple ticket types per event, flexible sale windows, capacity management, discount codes, comp tickets, ticket transfers, and custom attendee fields. The full set from day one.
Create Early Bird, General, VIP, Group, and any custom ticket types per event. Each type has its own price, capacity, sale window, and attendee fields.
Set a start and end time for each ticket type. Early Bird closes automatically at the right moment. Sales stop when capacity is reached or the window closes — no manual intervention.
Percentage or fixed-value discounts. Per-code usage limits. Expiry dates. Codes can be restricted to specific ticket types or events. Full reporting on redemptions.
Issue complimentary tickets to any attendee directly from the dashboard. Full audit trail. Comp orders bypass payment processing but follow the same QR code and confirmation flow.
Attendees can transfer their ticket to someone else via a secure tokenised link. The original ticket is voided and a new one issued to the transferee. Full check-in integrity maintained.
Define custom questions per ticket type: dietary requirements, t-shirt size, company name, accessibility needs. Answers captured at checkout, exported with attendee CSV.
When an event sells out, attendees can join the waitlist. Cancellations trigger automatic waitlist notifications. Claim links expire after a configurable window.
Generate unique referral links per attendee. Track how many tickets each referral drove. Reward your best promoters with discount codes or comp tickets.
Export the full attendee list for any event, including custom field answers, ticket types, order values, check-in status, and referral data. One click, clean spreadsheet.
Save any event as a reusable template — including all ticket types, pricing, capacity, sale windows, attendee questions, and drip email configuration. Recurring events (monthly nights, weekly sessions, annual fixtures) are created in seconds. Templates can be updated independently of events already created from them.
A lightweight CRM built around event history. Every customer’s attendance record, spend, notes, and tags are in one place. Audience segments are calculated automatically so you always know who to target.
Revenue Intelligence is a layer of analytics built on top of your real order and campaign data. No third-party tracking scripts, no GDPR headaches, no BI tool to configure. Everything lives in your client’s isolated database and answers the questions that matter.
Every email campaign generates a campaignId that’s tracked through checkout. See exactly how much revenue each blast generated, how many orders it drove, and the conversion rate.
18 months of cohort analysis. See which monthly cohorts retained well, which churned early, and how retention trends have changed over time. Data per event and across the whole account.
Six pre-calculated audience groups: lapsed, new, high-value, single-event, repeat, and at-risk. Segment counts update on demand. Each segment is blastable in one click.
Customers whose average purchase frequency has dropped are automatically flagged. Re-engage them before they lapse — not after.
Attribution is tracked per event as well as at the account level. See which events drove the most returning customers, not just the most first-time buyers.
All analytics data is derived from first-party order data in the client’s own isolated database. No third-party tracking scripts, no cookies, no cross-domain data sharing.
Venue staff scan QR codes using their phone’s camera. No app install, no dedicated hardware, no Wi-Fi dependency for the QR code itself. The check-in interface is a web page — open it, scan, done.
The check-in page works on any smartphone, tablet, or laptop with a camera. iOS, Android, desktop — no app to install, no account required for scanning staff.
Check-in credentials are completely separate from admin credentials. Hand them to venue staff without any risk. Rotate them after the event with one click.
QR codes are HMAC-signed. Forgery is impossible. Duplicate scans are rejected with a clear “already checked in” status — no double admissions.
Admins see a live count of attendees checked in vs total tickets sold. Drill down to individual attendee check-in times from the dashboard at any point.
Staff can search by name or email on the check-in page for attendees whose phone battery is dead. Manual check-in with a full audit trail.
Check-in tokens are scoped to a specific event. Staff at Event A can’t accidentally check in tickets for Event B.
Every feature is available via a clean JSON API. The included frontend templates are a starting point — replace any part of them, or build something entirely your own. The platform is the API, not the UI.
Idempotency-Key headers. Safe to retry on network failure without double-charging or double-provisioning.
Timed reminders, drip sequences, abandoned checkout recovery, and job retry queues all run automatically. An operations dashboard gives you a live view of everything that’s happened — and a clear signal if anything needs attention.
Every event automatically triggers two reminder emails to ticket holders: 48 hours before and 2 hours before. No manual scheduling. No forgetting. Attendees arrive prepared and on time.
Three-stage automated recovery sequence at 30 minutes, 4 hours, and 20 hours after abandonment. Each email is fully customisable and can include a discount code to close the sale. Sent counts, recovery rates, and revenue attributed to recovery are all tracked.
Configure time-based email sequences per event: “send 7 days before”, “morning of”, “3 days after”. Runs fully automatically for every event. No per-event setup once the template is configured.
If any outbound email (confirmation, campaign, recovery, reminder) fails to deliver, it is captured in a retry queue. Failed jobs are visible in the dashboard. Retry any job individually with one click. Nothing is silently lost.
A live dashboard view of all automation activity: reminder sends, drip sequences, abandoned recovery, job queue depth, and customer profile build status. Know immediately if any automation has stalled or fallen behind.
Every admin action — campaign sent, ticket comped, automation triggered, settings changed, job retried — is logged with actor, timestamp, IP, and context. Queryable from the dashboard. Essential for multi-staff accounts.
AES-256-GCM encryption at rest for all credentials, HMAC-signed QR codes and webhook payloads, scoped JWT authentication, edge-native global deployment, and idempotent writes throughout. The security model is baked into the architecture — not bolted on.
Every payment provider key, database token, and API secret is encrypted with AES-256-GCM before being stored. Secrets are decrypted in memory at request time only — never logged, never stored in plaintext, never exposed in any API response.
Every ticket QR code contains an HMAC-SHA256 signature. Forgery is cryptographically impossible. Duplicate scans are rejected with a clear “already checked in” status. You cannot check in a ticket that wasn’t issued by the platform.
Every incoming Stripe and SumUp webhook is verified against the provider signature before any action is taken. Replayed or tampered requests are rejected before they touch the database. Idempotency keys prevent double-processing on retries.
Three completely separate auth layers: admin JWTs (HS256) for dashboard access, scoped check-in tokens for venue staff (no admin rights, rotatable post-event), and platform JWTs for operator access. A compromised check-in token cannot touch orders, settings, or customer data.
All public endpoints (checkout, events, waitlist) are rate-limited per IP and per tenant before the request reaches the database. Abuse is blocked at the edge. Configurable thresholds per route. Brute-force credential attacks are throttled at the API layer.
The entire platform runs on Bunny Edge Scripting, deployed to Bunny’s global network of Points of Presence. Requests are served from the nearest PoP. No traditional servers, no cold starts, no single region as a single point of failure. Sub-50ms response times globally.
Each company gets a fully separate Bunny Database instance. There is no shared schema, no row-level isolation to misconfigure, no risk of a query accidentally returning another tenant’s data. Physical separation at the database layer, not the application layer.
Checkout, campaign send, and all mutation endpoints accept idempotency keys. Network failures and retries never result in double charges, double sends, or duplicate attendee records. Safe to retry any operation from any client.
Beyond logo and colour, the platform supports multiple page layout templates, configurable typography, custom CSS injection, per-tenant locale, timezone, and currency. Every public-facing page adapts completely to each organiser’s brand identity.
Primary colour, accent colour, text colour, background colour, font stack, logo URL, and custom CSS URL are all stored per tenant. Every page — ticketing site, checkout, emails — inherits the brand automatically. Changes take effect immediately.
Each tenant can select from multiple pre-built layouts for the homepage, event listing pages, and individual event pages. Layout templates control structure (hero-first, editorial, balanced, focused) independently of brand colours and fonts.
Button style (pill, rounded, square), card density (compact, comfortable, spacious), hero style (soft, bold, minimal), and header layout are all configurable per tenant. The same platform presents completely differently for a boutique jazz night and a large music festival.
Beyond the brand token system, organisers can provide a hosted CSS file that is loaded on every public page. Complete override capability for edge cases: custom fonts, layout adjustments, promotional banners, bespoke widget styling.
Currency, timezone, and locale are configurable per tenant. Event dates and times display correctly in the organiser’s local timezone. Currency symbols and formatting adapt to the configured locale. Multi-currency support is independent of the payment provider.
Organisers configure their ticketing homepage headline, subheadline, and eyebrow text directly from the dashboard. Homepage sections (search, categories, featured events) are individually toggle-able. The homepage can be built around the brand voice, not a generic template.
Provisioning takes 10 seconds. Everything above is available from the moment your account is created — nothing to configure, nothing to wait for.