Venyall
Setup & Operations Manual
Sell your own tickets with Stripe: event calendar, box office, artist payouts and settlement reporting for independent music venues. This manual takes a new venue from a blank WordPress site to a working ticketing system, then explains how to run a show night and settle up.
Venyall turns your own WordPress website into your box office. Fans buy tickets on your site, the money goes straight into your own Stripe account, and your staff run the door and settle the show from screens built for that job. No third-party ticketing platform, no per-ticket cut, and you keep the customer relationship.
Every card is charged by Stripe. Ticket money lands in your Stripe balance and Stripe pays it out to your bank on its normal schedule. Your website never holds money and never sees a card number, which keeps you out of card-compliance obligations. Artists you pay through Venyall receive a Stripe transfer into their own connected account.
| Item | Notes |
|---|---|
| A WordPress website | WordPress 6.0 or newer, PHP 7.4 or newer, with an administrator login. Any normal host works. |
| A Stripe account | Free to open at stripe.com. Stripe takes a percentage of each sale; there is no monthly fee. Have your bank details ready. |
| An email-sending plugin | WP Mail SMTP or FluentSMTP (both free). Without one, most hosts' ticket receipts get blocked by Gmail and Outlook. This is the single most common support problem. |
| Optional: a Stripe card reader | A Stripe Terminal reader (the S700 is what this was built with) if you want to take walk-up card payments at the door. |
| Optional: a tablet for the door | Any tablet or laptop with a browser. The door screen is a web page. |
| About one hour | Steps 1–5 in Part 3 get you selling tickets. Everything after that is optional and can wait. |
https://yoursite.com/wp-admin with an administrator account.venyall-3.0.0.zip, then Install Now.



Everything venue-specific lives under Ticketing in the WordPress admin. There are nine tabs. This part covers the four you must fill in; Part 8 covers the optional ones.

9.75. Enter 0 if you do not collect tax on tickets.3 = 3 AM); the time of day a show's door price replaces its advance price; and a default room capacity for shows that do not set their own (0 = no limit).{tip_amount} in the wording. Fill in the "second ask" fields only if you want one more polite pitch after a "No thanks".{venue_name} and {event_title} are filled in for you.6:00 PM, 9:00 PM. The upcoming-shows audit (Part 5) flags any show whose doors are at a different time, which catches typos like 8:00 AM.ticket_purchase event with orderValue and orderId to the data layer for tag-manager triggers. Promoters and bands add their own pixel on the show itself (Part 5), and every pixel listed gets every event.
pk_live_) and the Secret key (starts sk_live_; Stripe shows it once when you reveal it). Paste both into the Stripe tab and save.
https://yoursite.com/wp-json/venyall/v1/stripe-webhookpayment_intent.succeededwhsec_), and paste it into Ticket fulfilment secret.…/wp-json/venyall/v1/connect-webhook listening for account.updated and charge.refunded, and paste its secret into Artist onboarding secret.…/wp-json/venyall/v1/recording-paid listening for checkout.session.completed, secret into Recording purchases secret.tml_) into Terminal location ID.pk_test_/sk_test_ and will not take real money. Use live keys on your real site; if the card form refuses to load, the usual cause is mixing a test key with a live key.
Set the subject line of the ticket email and the artist invitation, and write your ticket policy (refunds, transfers). The policy appears on the thank-you screen and in the receipt email. Placeholders such as {event_title} and {venue_name} are filled in automatically.

Choose a colour preset for the public screens (event grid, calendar, checkout) or set your accent, background and text colours to match your site. Staff screens have a separate light/dark palette because they are working tools, not your storefront. The calendar colours by time of day (daytime, early, prime, private) are adjustable here too.
Venyall's screens live on ordinary WordPress pages. You put one shortcode (a short tag in square brackets) on each page and the plugin fills the page with that screen. Create these pages first; the checkout and staff pages are required, the rest are recommended.
| Page (suggested title) | Put this on the page | What it shows |
|---|---|---|
| Events | [venue_events] | The public grid of upcoming shows with posters and Get Tickets buttons. Usually your home page or main menu item. |
| Calendar | [venue_calendar] | A month calendar of shows. |
| Tickets (required) | [venue_checkout] | The Buy Tickets form. Every show links here automatically. |
| Staff Dashboard (required) | [venue_staff_dashboard] | The calendar, event editor and door/settlement screen for your team — one page does all three. |
| Sales | [venue_sales_dashboard] | Live sales, tips, sales tax, payables, bank transfer advisor (managers only). |
| Artist Directory | [venue_artist_directory] | Staff list of every band, with invite/onboarding status. |
| Artist Portal | [venue_artist_portal] | The page a band opens from the private link you send them. |
| Bar | [venue_bar_dashboard] | 30-day bar performance (needs the Google Sheets add-on). |
| Sound Crew | [venue_sound_crew_calendar] | Where Sound Crew accounts land (recordings add-on). |



/door-pos/./door-pos/ address for the door screen.

Staff log in with normal WordPress accounts but never see the WordPress admin: they land on the staff dashboard and cannot install plugins, change settings or edit your site. There are four roles, each scoped to a job.

| Role | Can do | Give it to |
|---|---|---|
| Box Office | Open the door screen. Check people in, sell walk-ups, print the settlement sheet. | The tablet at the door. One shared account for the device is fine. |
| Venue Staff | Everything above, plus create and edit events, invite artists, view dashboards. | Bookers and anyone who puts shows on the calendar. |
| Venue Manager | Everything above, plus settle shows and send money to artists. | Whoever pays the bands. Keep this list short. |
| Sound Crew | See the crew calendar and log recordings. No door list, no money, no event editing. | Freelance engineers (recordings add-on). |


Open your Staff Dashboard page (the one with [venue_staff_dashboard]) while logged in. The left side is the month calendar; the right side is the event editor.

Repeating shows. Tick This event repeats to create a weekly or monthly run. Later, saving or deleting any date in the run opens a popup listing every future date with a checkbox (all ticked), so a new door time or poster can go to the whole run or only to the dates you leave ticked. Older runs that were only linked by name get the same popup, matched by title, and are linked properly the first time you apply a change.
Finding a show. The search box above the calendar lists every matching show on any date: upcoming ones first (green), then past ones (red). Click one to open it.
Next to the calendar search box is Audit next month. It replaces the calendar with one table of every show from today through the next 31 days, with the things that go wrong before a show highlighted:
A show that is right as entered but still red (an unusual door time that is correct, say) can be ticked checked ok on its row, which turns its flags off and marks it with a green tick. A ticket price of 0 means a free show: it shows as FREE SHOW here, "Free Show" on the public grid and "Free" on the show page, with no buy button and no fee flag. A blank price is still flagged, because that is a show nobody has priced yet.
Every field in the table is editable in place: title, date, doors, end time, prices, production fee, the waived box, capacity and hidden. Change as many rows as you like; the counter at the top shows how many are unsaved, and Save all changes (or any row's Save button) writes all of them at once. The browser warns you before leaving with unsaved rows.

[venue_events]). Each card links to the show's own page and its Buy Tickets form. A poster is generated automatically if the show has none.
[venue_calendar]).
[venue_checkout]). Quantity, name, email, then the card. The buyer is asked to confirm their email address before the card is charged — mistyped emails were the number-one reason receipts "never arrived".On the door tablet, open https://yoursite.com/door-pos/ and sign in with the Box Office account once — it stays signed in. The screen takes over the whole browser window and is built for fingers, not a mouse. It shows tonight's shows in the dropdown and switches to the next show automatically an hour before doors. The clock in the corner is venue time, even if the tablet is set to another zone.

/door-pos/. Left: walk-up sales and comp counters. Right: the will-call list with one line per ticket. A green heart marks a buyer who added a tip.| Button | What it does |
|---|---|
| Check In | Marks that ticket as arrived. Multi-ticket orders show as "1 of 3", "2 of 3"… so a group can arrive separately. Tap again to undo. |
| Search names | Filters the list as you type (an on-screen keyboard appears on tablets). |
| Log Cash Sale | Enter how many walk-ups paid cash at the door price. Counts toward capacity and the settlement. |
| Connect Reader | In the top bar beside Refresh Data. A red dot means this screen is not paired with the card reader; green with "Reader Connected" means it is. Press it to pair, or to drop a stale pairing and pair again. The screen also keeps trying by itself every few seconds, so a reader that was still starting up when the computer came on connects on its own. If it cannot, the button tells you why (no reader found, or the reader is in use by another device). |
| Charge Card | Only with the card reader add-on. Enter the quantity; tax and card fee are added and the reader lights up. "Reader Disconnected" means the reader is asleep or not on the same Stripe location. |
| Guest List / Band Members / Regulars | Tap + and − to count comps. These feed the headcount but not the money. |
| Support Pass Check-In | If you sell a season pass (Part 8), pass holders are checked in here, once per pass per show. |
| Past Shows | Load an earlier show to review or reprint it (read-only). |
| Print Summary | Prints the end-of-night sheet: sales, comps, cash vs. card, and the artist's pay. |
How the card reader connects. The Stripe reader is an internet reader: it joins your wifi and reports itself to Stripe, and the door screen never talks to it directly. The screen asks Stripe which readers are at your location and asks Stripe to pair it with one. So the reader must be on, finished starting (a minute or two) and showing its home screen, and the screen has to ask after that. Any computer, tablet or laptop that opens /door-pos/ and signs in as the box office pairs the same way, with no cables or drivers; press Connect Reader if it has not paired itself. Only one screen should be charging cards at a time, so if the door computer is replaced by a tablet, finish on one device before switching. If the button keeps saying no reader was found, check the reader in the Stripe Dashboard under Terminal → Readers: it should show Online, at the location entered under Ticketing → Stripe.
From the staff dashboard, open the show and click Door Dashboard & Settlement. This is the manager's screen for closing out a show. It needs the Venue Manager role because the buttons on it move money.

How the math works. The gross pool is online sales + card walk-ups + cash walk-ups (face value, before tax and fees). The venue takes its production fee out of the cash drawer first; whatever cash is left goes to the band in hand. If the drawer did not cover the fee, the rest of the fee comes out of the online/card money, and the band's remaining share is paid through Stripe. The Unpaid Balance box is what the band is still owed electronically.
Recordings. If the sound crew uploaded recordings for the show, a Recordings table sits under Band Payouts: each file, the engineer who recorded it, the tier, and whether the band has bought it yet (green YES with the amount and download count, amber NOT YET with the price, blue COMP for a free one). It is read-only here; comping and settling the engineer happen on the crew calendar and the Sales dashboard.
Refunds are made from inside Venyall, not by hand in Stripe, so the will-call list, the capacity count, the artist's payout, the tips and the sales-tax month all drop the ticket at the same moment the money goes back. A refunded ticket is never deleted: it stays on record, flagged, and simply stops counting.
One buyer. On the settlement screen (Door Dashboard & Settlement), every name on the will-call list has a Refund button. It offers two choices:
A whole show. In the event editor, next to Delete, is Cancel show & refund tickets. It refunds every online charge and every box-office card sale for that show through Stripe, takes every ticket (including comps) off the list, emails every buyer whose refund went through, closes ticket sales, and marks the show Cancelled on the public grid, both calendars and the show page. The show itself stays in your calendar (grey, marked CANCELLED) so the record is there; delete it when you are done with it, or Undo cancellation if the show is back on. The wording of the cancellation email is on the Emails tab.
Deleting a show with tickets sold does the same refunds first and only moves the show to the Trash once every refund has gone through. If Stripe refuses a refund (a closed card, an outage), that show stays live with its buyers still on the list, you see exactly which refund failed and why, and pressing the button again retries only the ones that failed.
Repeating shows. Saving or deleting a date that belongs to a repeating series opens a list of every future date in the run, each with a checkbox (all ticked to start). Untick the dates you want left alone. For a delete, each date shows how many paid tickets it has and how much would be refunded, so you can see the money before you press the button.
charge.refunded event (Appendix). Without that, use Remove from list only afterwards.The Sales page ([venue_sales_dashboard]) is the manager's money screen. It is organised into five numbered sections in the order you use them.

A one-line summary of the last 24 hours. Click Show all sales to expand the full list of recent orders (buyer, event, quantity, tip).
Lifetime totals: tickets sold, face value, tips, and service fees fans did not pay. Press Rebuild from Stripe and it reads every charge in your Stripe account in chunks (with a progress readout), so it covers your whole history including card-reader walk-ups at the door, not just what the website recorded. Cash sales, passes, comps and refunds are left out. The table breaks sales down by ticket price with online and door counts; the service fee per ticket boxes are editable, with presets for common ticketing-company fee structures, so you can show what fans saved against any competitor. Download CSV gives one row per ticket.
Stripe pays your balance to your bank, but not all of that balance is yours: some is owed to artists for shows not yet settled, and advance sales for upcoming shows are spoken for. The transfer advisor reads your live Stripe balance, subtracts Hold for bands, and shows Safe to transfer now. The steps on screen are the right order:
Below the steps, Played shows still holding money back lists any show whose band has not been fully paid through Stripe. If you paid one in cash, click Paid in cash and it stops being held. Mark all before this date settled clears old shows in one go when you first start.
One row per month: taxable online tickets and card walk-ups, tax due, and cash door sales for reference (not taxed). After you file and pay the state, click Mark filed on that month and enter the date, amount and confirmation number. Nothing is ever erased — the record is permanent, with Undo filing for mistakes and a Download CSV button for your accountant.
Tips (venue revenue), venue cuts, support-pass sales and what is owed to recording engineers, each with a Clear/Settle button. Every clear is written to Payables History with the amount, date and who did it.
The list of engineers that appears in the recording form (recordings add-on).
All of these are switched on under Ticketing → Add-Ons. Leave them off until you need them; the plugin is a complete online ticketing system without any of them.

tml_…) into the Stripe tab.
If your bar closeout lives in a Google Sheet, paste its published-CSV link and the column numbers on the Add-Ons tab. The door list and the Bar page then show bar sales, headcount and average spend per show, so you can see whether a show actually made money. The Show types settings decide which columns a daytime, early, late or Sunday show reads from; the defaults match a typical two-show night.

[venue_bar_dashboard]): 30 days of shows with bar sales, headcount and average spend.If you record shows, bands can buy the recording from their portal. On the Add-Ons tab set your formats and prices (for example Multitrack Audio $50, Program + Audio $150, Full A/V $250) and what the engineer earns per sale. Add the recording-paid webhook in Stripe. Purchases mark themselves paid, the band gets the download link, and the Sales dashboard tallies what each engineer is owed.
The download window. A recording stays available for a set number of days after it is uploaded: 21 unless you change Download window on the Add-Ons tab. When the crew adds a recording the band is emailed the portal link, the price and the deadline. One reminder goes out a few days before the deadline (Remind the artist, 5 days by default) unless they already have their files. The band's portal shows "Available until…" with the days left, and after the deadline it can no longer be bought. Wording for both emails is on the Emails tab.
What happens at the deadline. Once a day Venyall goes through the recordings that have passed their window:
The Recordings on the drive list, under the crew calendar and on the Sales dashboard, shows every recording still stored, its size, deadline and state, with +7 days to extend one, Clear now, and Mark deleted for one you removed by hand.
Without this, the crew uploads to Drive, sets the folder to "Anyone with the link", pastes the link into the portal, and someone deletes expired recordings by hand and ticks them off. With it, the crew only drags a folder into Drive and picks it from a list: the size fills in, the link stays private until the band pays, and expired recordings are cleared for you.
The connection uses a Google service account: a robot identity that you create and share your Recordings folder with. Nobody stays signed in and nothing expires.
.json file downloads. Keep it private: it is a password..iam.gserviceaccount.com). In Drive, right-click the Recordings folder → Share, paste that address, set it to Editor, and share.2026-10-01 Blue Band, and drag it from the SSD into the Recordings folder in Finder. Drive uploads it in the background and picks up where it left off if the Mac sleeps. Half a terabyte takes about eleven hours on a 100 Mbps upload line, so leave it overnight. Drive needs working space on the Mac while it uploads; if the internal disk is small, point Drive's cache at the SSD under Drive's Preferences → Settings → Local cached files directory.Recordings from before you connected. Automatic clearing only applies to recordings uploaded after the connection was switched on. Older ones are never swept away on their own; they sit on the list marked "uploaded before auto-clear" until you press Clear now on each.
Where cleared recordings go. Google only lets a file's owner put it in the trash. On an ordinary Drive the robot cannot do that, so it closes the link and moves the folder into _Expired - safe to delete inside Recordings. Open that folder now and then, select everything, delete, and empty the trash: that is the step that frees the space. If Recordings lives in a Workspace shared drive and the robot is a Content manager there, it trashes expired recordings itself and Google removes them after 30 days.
For the band. A big recording is a Drive folder, and Google's own "Download all" struggles above a few gigabytes. Tell bands to open the folder, choose Add shortcut to Drive, and pull it down with Google Drive for desktop, or download the files one at a time.
Create users with the Sound Crew role and pick the Sound Crew page under Pages & Shortcodes. Crew log in and land on a calendar of upcoming shows; each show opens the band's portal with the recording form. They cannot see the door list, money or event editing.

[venue_sound_crew_calendar]).Create an event for it (any date), and put its ID in Evergreen product event ID under Pages & Shortcodes → Advanced. It skips the sales cutoff, shows "Ongoing" instead of a date, and pass holders are checked in from the door screen's Support Pass button. Pass sales are tallied separately on the Sales dashboard.
| Symptom | Cause and fix |
|---|---|
| Receipt emails do not arrive | Almost always your host being blocked by Gmail/Outlook, not the plugin. Install WP Mail SMTP and connect a real mailbox. Check the buyer's spam folder. |
| The card form does not appear on the Tickets page | Publishable key missing, or a test-mode key on a live site. Check the Stripe tab. |
| Show times, cutoffs or the door screen are hours off | The Venue time zone is not set (Selling Tickets tab). The Status tab warns about this. |
/door-pos/ shows "Page not found" | Settings → Permalinks → Save Changes once. |
| Door screen says "Reader Disconnected" | Wake the reader; make sure it is registered to the location whose ID is on the Stripe tab and on the same network. The cash button still works. |
| A card was charged but no ticket appeared | You get an alert email immediately with the charge ID and buyer details; add them to the list by hand from the event editor. If it happens twice, contact your host. |
| An artist is stuck on Pending | They have not finished Stripe's form, or the connect-webhook is not set up. Click the Pending badge in the directory to check live. |
| Staff see "Security check failed" | The page sat open too long or is cached. Reload. Exclude the staff pages from your caching plugin. |
| A payout is refused | The screen never sends more than the show took in. If Stripe refuses, your balance may not be available yet (takes a couple of days). |
| Staff land on the WordPress dashboard instead of the staff page | Pages & Shortcodes → Staff dashboard is not set. |
| Shortcode | Screen | Who can see it |
|---|---|---|
[venue_events] | Public event grid | Everyone |
[venue_calendar] | Public month calendar | Everyone |
[venue_checkout] | Buy Tickets form | Everyone |
[venue_staff_dashboard] | Calendar + event editor + door/settlement | Venue Staff and up (settlement: Manager) |
[venue_staff_calendar], [venue_event_editor], [venue_door_list] | The three parts of the staff dashboard on separate pages, if you prefer | Staff / Staff / Manager |
[venue_sales_dashboard] | Sales, tax, payables, bank transfer | Venue Manager |
[venue_transfer_advisor] | Bank transfer panel on its own page | Venue Manager |
[venue_artist_directory] | Band directory and invitations | Venue Staff and up |
[venue_artist_onboarding] | Invite-a-band form on its own | Venue Staff and up |
[venue_artist_portal] | Band's private page (opened with their link) | Anyone with the link |
[venue_bar_dashboard] | 30-day bar performance | Venue Staff and up |
[venue_sound_crew_calendar] | Crew calendar | Sound Crew and up |
[venue_recordings event_id="123"] | Recordings panel for one show | Sound Crew and up |
| Address | What it is |
|---|---|
https://yoursite.com/door-pos/ | The box office kiosk. Bookmark it on the door device. |
https://yoursite.com/wp-json/venyall/v1/stripe-webhook | Stripe webhook: ticket payments (payment_intent.succeeded) |
https://yoursite.com/wp-json/venyall/v1/connect-webhook | Stripe webhook: artist account status (account.updated) and refunds made in the Stripe dashboard (charge.refunded) |
https://yoursite.com/wp-json/venyall/v1/recording-paid | Stripe webhook: recording purchases (checkout.session.completed) |
https://yoursite.com/tv/ | A full-screen poster page for a lobby TV or signage player (Yodeck, a Chromecast, a Raspberry Pi): the next show. /tv/?show=2 for the one after, /tv/?rotate=10 to cycle every upcoming poster ten seconds each, /tv/?rotate=10&from=6&count=10 for shows 6 to 15. Updates itself as shows come and go. All listed on the Status tab. |
https://yoursite.com/wp-json/venyall/v1/posters | The raw poster feed (JSON) behind the TV page, for your own signage pages. ?limit=20 for more than five. |
| Done when… | |
|---|---|
| ☐ | Plugin installed and activated; WP Mail SMTP installed and connected |
| ☐ | Selling Tickets tab: venue name, time zone, emails, tax rate, card fees saved |
| ☐ | Stripe tab: publishable + secret key saved; ticket webhook created in Stripe and its secret pasted |
| ☐ | Pages created: Events, Calendar, Tickets, Staff Dashboard, Sales (+ Artist Directory / Portal if paying artists) |
| ☐ | Pages & Shortcodes tab: each page selected; Settings → Permalinks saved once |
| ☐ | Staff accounts created with the right roles; two-factor on for managers |
| ☐ | Status tab shows nothing missing |
| ☐ | $1 test purchase: thank-you screen, receipt email, will-call entry, Stripe charge — all four confirmed, then refunded |
| ☐ | Door device signed in at /door-pos/ and staying signed in |
Shows and bands are WordPress "Events" and "Bands (Payouts)" entries. Tickets are one row per ticket in a table the plugin creates. Settlements, payout ledgers and recordings are saved on each show. All settings are on the Ticketing screens. Deactivating the plugin leaves everything in place; deleting it only removes data if you tick "delete data on uninstall" first.
Venyall · venyall.com · This manual describes plugin version 3.0.