PB Gig Diary

Description

PB Gig Diary is a WordPress plugin built by working musicians, for working musicians. It keeps your gig diary, setlists, song library, and Google Calendar in sync — from a single, straightforward admin interface.

Whether you’re a solo artist managing your own bookings or a booking agency handling multiple acts, PB Gig Diary brings everything together in one place. No spreadsheets, no double-entry, no missed dates.

Free features

  • Gig listings shortcode — add [pb_gig_diary] to any page to display upcoming and past gigs automatically
  • Venue management — store venue details, addresses, and contact information
  • Artist management — manage one artist per free install
  • Status tracking — confirmed, provisional, cancelled, and private gig statuses
  • Hide from website — keep gigs in your diary without publishing them publicly

Premium features (paid licence required)

Starter — Google Calendar sync, artist shortcodes, import/export

Pro — Unavailability tracking, hidden fees and private notes, style editor

Studio — Songs library, setlist builder with drag-and-drop, public setlist pages, timing calculator, share setlist with band

Agency — All Studio features for up to 5, 15, or 50 artists from a single install, REST API for publishing to band websites

Key features (paid)

  • Google Calendar sync — add or update a gig and the calendar updates automatically. Cancellations handled too.
  • Setlist builder — build setlists with drag-and-drop ordering, copy sets between gigs, mark songs as played or dropped
  • Timing calculator — enter your start time, gap between songs, and break between sets — projected finish time updates live
  • Public setlist pages — every gig with a public setlist gets its own shareable page at /setlist/{id}/
  • Songs library — full song catalogue with keys, durations, and original artists. Publish your repertoire via shortcode.
  • Share setlist — one click generates a formatted text setlist ready to paste into WhatsApp or email
  • Import / Export — CSV import and export for gigs, venues, artists, and songs
  • Style editor — customise colours, fonts, and layout of your public gig listings without touching code
  • Multi-artist (Agency) — manage multiple acts from one install with full data separation

Shortcodes

  • [pb_gig_diary] — full upcoming and past gig listing
  • [pb_gig_diary upcoming_only="yes"] — upcoming gigs only
  • [pb_gig_diary past_only="yes"] — past gigs only
  • [pb_gig_diary count="5"] — next 5 upcoming gigs
  • [pb_gig_diary year="2025"] — all gigs from a specific year
  • [pb_gig_diary artist="haarlem"] — filter by artist slug (Agency)
  • [pb_artist_repertoire] — full song repertoire (Studio+)
  • [pb_artist_setlist gig_id=123] — embed a setlist on any page (Studio+)

For booking agencies

PB Gig Diary Agency lets you manage all your acts from a single WordPress install. Each artist’s data is fully separate. Gig listings and repertoires can be published to individual band websites via the REST API and free companion plugin.

Add a gig once — it appears on your agency site, the artist’s own website, and their Google Calendar automatically.

Privacy

PB Gig Diary does not collect any personal data from your website visitors. Licence validation communicates with api.keygen.sh to verify your licence key. No visitor data is sent to any third party.

External Services

PB Gig Diary (free version) does not connect to any external service, API, or third party. All gig, venue, and artist data is stored entirely in your WordPress database. No data is sent anywhere outside your own site.

Blocks

This plugin provides 2 blocks.

  • Next Gig Displays a compact line showing your next upcoming gig — ideal for a footer or sidebar on block-based themes.
  • Gig List Display upcoming and past gigs from PB Gig Diary.

Installation

  1. Upload the pb-gig-diary folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Navigate to Gig Diary Gigs to add your first gig
  4. Add [pb_gig_diary] to any page to display your gig listings
  5. To unlock premium features, purchase a licence at purebaltic.co.uk/gigdiary and enter your key under Gig Diary Settings Licence

FAQ

Does the plugin work without a licence?

Yes — the free version includes the core gig listings shortcode with no licence required. Purchase a licence to unlock Google Calendar sync, setlists, songs library, and more.

Will my plugin stop working when the licence expires?

No. Your plugin continues to work indefinitely. After 12 months, updates and new features require a renewal at 50% of the original price — but everything you have keeps working.

Can I use the plugin on multiple sites?

Each licence covers one WordPress installation. For multiple sites, purchase a licence per site, or consider an Agency licence which supports multiple artists.

What happens if I need to move to a new server?

Deactivate your licence in the plugin settings, then reactivate it on your new server. Licences are machine-based and can be transferred.

Does it work with my theme?

Yes — PB Gig Diary works with any WordPress theme. The gig listings use minimal styling that inherits from your theme, with optional style customisation available on Pro and above.

What version of WordPress and PHP do I need?

PB Gig Diary requires WordPress 6.3 or above and PHP 8.1 or above.

Is there a trial?

A 14-day full-feature trial is available. In the meantime, the free version gives you a taste of the plugin with no licence required.

How does Google Calendar sync work?

You connect a Google Calendar during setup using a Google service account. When you add or update a gig in WordPress, PB Gig Diary automatically creates or updates the corresponding event in your calendar. Cancellations are handled too.

Where can I get support?

Visit purebaltic.co.uk/gigdiary for documentation and support, or use the support forum on WordPress.org.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“PB Gig Diary” is open source software. The following people have contributed to this plugin.

Contributors

Translate “PB Gig Diary” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.7.38

  • Fixed: two false-positive “unescaped DB parameter” warnings (class-gig-repository.php’s get_upcoming/get_past, uninstall.php’s table-drop loop) that had already been diagnosed and suppressed in the commercial build, but never propagated to this build — found via a fresh Plugin Check run, confirmed by cross-checking suppression-comment counts between both builds for every shared file.

3.7.37

  • Added: one-time, idempotent migration carrying over existing values from the mr_-prefixed options renamed in 3.7.36 to their new pbgd_-prefixed names
  • (includes/class-activator.php)

3.7.36

  • Fixed: iCal feed’s UID line and the gig-listing widget’s time fragment were missing context-appropriate escaping — found in WP.org’s second review round. The UID now uses the same ical_escape() helper already applied to SUMMARY/LOCATION/DESCRIPTION elsewhere in the same feed; the widget time is now wrapped in esc_html().
  • Changed: all remaining mr_-prefixed option names and form-field/HTML-id names renamed to the pbgd_ prefix (mr_artist_name, mr_default_age_restriction, mr_default_country, plus several more found via a full sweep, not just the three the reviewer named as examples). No existing installs affected — confirmed with no live customers on these option names before renaming.
  • (includes/class-feeds.php, public/class-widget.php, admin/class-admin-settings.php, admin/views/page-settings.php, admin/class-admin-page.php, includes/class-config.php, includes/class-activator.php, uninstall.php)

3.7.35

  • Changed: setlist “Start time” control (dead code in this build, but kept in sync with the commercial build for consistency) updated to match the same fix — read-only, live-derived from the gig’s Start time field rather than an independently-editable, never-actually-saved snapshot

3.7.34

  • Changed: four global functions (gd_render_table, gd_map_url, gd_address_line, gd_extras in public/views/gig-table.php and gig-helpers.php) renamed to the pbgd_ prefix — found via a fresh Plugin Check run, missed by the earlier prefix rename since that pass specifically targeted pb_-prefixed names and never searched for gd_-prefixed ones
  • Changed: suppressed a “development function” warning on the intentional, gated error_log() call added for uninstall.php’s failure logging, with an explanatory comment rather than removing the diagnostic

3.7.33

  • Fixed: a failed DROP TABLE during uninstall (e.g. a database user without DROP privilege) now logs to debug.log instead of failing silently — found via a real install where the mr_gigs/mr_venues/mr_artists tables survived a full deactivate+delete cycle while most options were correctly removed, which only makes sense if the table drop failed without anyone knowing

3.7.32

  • Fixed: uninstall.php wasn’t cleaning up several option rows (mr_default_song_gap, mr_default_set_break, plus a few defensive entries) — found via a real install, confirmed the uninstall mechanism itself works correctly, this was specifically about two settings orphaned by the 3.7.30 removal that were never added to the cleanup list

3.7.31

  • Changed: Help tab no longer references any feature absent from this build — removed the Google Calendar Setup and Import sections (both reduced to a one-line “requires a paid licence” message anyway), removed Fee/Private notes/Unavailability rows from reference tables, removed a Google Calendar mention from the Getting Started steps and the artist name field’s description, and removed the now-pointless tier badge from the Shortcodes table since every remaining shortcode is free

3.7.30

  • Critical: Fee, Private notes, and Band Members Unavailability tracking removed entirely from this free version, rather than left unrestricted as in 3.7.27. Per the agreed feature set, these are Starter-tier-and-above features in the commercial product and should not appear in the free version at all — distinct from, and a step beyond, simply ensuring they weren’t tier-gated.
  • Removed: the “Add Unavailability” button, the Unavailability tab on the Gigs list, and the per-gig “Who is unavailable” member picker (and its now-unused settings field)
  • Removed: two orphaned Setlist-only settings (“Default gap between songs”, “Default break between sets”) that had no working consumer in this version
  • Fixed: a stale admin notice that still referenced unavailability tracking and hidden fees as Pro-exclusive — both are correctly Starter-tier and the wording was out of sync with the commercial build

3.7.29

  • Fixed: gig form’s Age restriction dropdown was missing the “All Ages/Licensed” preset, even though it’s the site-wide default set in Settings — new gigs were defaulting into the free-text “Other…” field instead of a clean preset match

3.7.28

  • Changed: AJAX action/hook names renamed to use the same distinctive prefix (pbgd_) as the rest of the plugin’s identifiers — completes the naming-consistency work from 3.7.27

3.7.27

  • Critical: removed all tier-based gating of built-in functionality (hidden fees/private notes fields, unavailability tracking, and a leftover free-tier artist restriction) in response to WordPress.org review feedback — none of this plugin’s functionality is restricted by licence tier
  • Removed: passwordless “magic login” link feature entirely — Gig Editor role now uses standard WordPress login only
  • Fixed: explicit sanitisation added on an admin notice value (output was already escaped, but input sanitisation was missing)
  • Fixed: all inline <script>/<style> tags moved to properly enqueued external files
  • Changed: internal function and constant names renamed to use a longer, more distinctive prefix (pbgd_/PBGD_) to avoid any possible naming collision with other plugins — no functional or stored-data changes, this is a code-level rename only

3.7.26

  • Fixed: “Translation loading triggered too early” notice (WordPress 6.7+) — plugin bootstrap moved from the plugins_loaded hook to init

3.7.25

  • Changed: Fee and Private notes fields on the gig form are now a Starter-tier feature, matching the commercial version — they no longer appear in this free version, and any value submitted for them is not saved. If you were already using these fields, that data is preserved in the database but will be cleared the next time you save that gig while running this free version.
  • Changed: comparison table updated to show Hidden fees & private notes under Starter rather than Pro

3.7.24

  • Fixed: removed leftover premium-feature code that should not have shipped in the free version, including a reference that could trigger an error if accessed directly
  • Added: new “Go Premium” tab under Settings, with a feature comparison table and links to the free trial and pricing
  • Added: “Go Premium” link in the main menu
  • Changed: Unavailability tracking now correctly shown as a Starter-tier feature, not Pro
  • Improved: input sanitisation and nonce handling across several admin screens

3.7.23

  • Help tab: CSS Class Reference is now collapsed by default
  • Settings: artist-filter shortcode example correctly limited to tiers that support it

3.7.21

  • Added: new “Next Gig” Gutenberg block for block-based themes that don’t have the classic Widgets screen — available on every tier, same data as the existing shortcode/widget

3.7.20

  • Fixed: Gig List block failing to appear in the block inserter on some block-based themes

3.7.0

  • WP Plugin Checker compliance pass: bundled third-party JS/CSS locally instead of loading from a CDN; various output-escaping fixes

3.6.4 — 3.6.9

  • Fixed iCal feed time labels showing an incorrect hour offset
  • Added bulk delete for gigs and venues

2.9.0

  • Gig list period filter — All, Upcoming, Past with correct sort order
  • Default age restriction dropdown in General settings
  • Artist name in General settings now syncs to Artists table
  • DB schema fixed for fresh installs

2.8.4

  • Self-hosted update mechanism — automatic updates via purebaltic.co.uk
  • Flatpickr date/time picker bundled locally (WP.org compliance)
  • All translatable strings corrected
  • readme.txt and LICENSE.txt added

2.8.0

  • WordPress.org compliance fixes
  • Pure Baltic branding — admin menu icon and page heading icons
  • WordPress.org banner and icon assets

2.7.5

  • Stripe/Keygen commercial infrastructure
  • Pricing grid with Buy Now buttons on licence tab
  • Upgrade and downgrade warnings

2.6.x

  • Setlist timing calculator — start time, gap between songs, break between sets, projected end time
  • Recording URL field with YouTube and SoundCloud auto-embed on public setlist page
  • Share setlist button in admin setlist builder
  • Feature gating per tier (Starter/Pro/Studio/Agency)
  • Automatic permalink flush on version change

2.5.x

  • Public setlist pages at /setlist/{gig_id}/
  • View setlist link on public gig listings
  • Repertoire shortcode [pb_artist_repertoire]
  • Setlist shortcode [pb_artist_setlist gig_id=123]
  • Artist slug field in General settings

2.4.x

  • Setlist builder with drag-and-drop ordering
  • Copy set between gigs
  • Position-aware song insertion
  • Set label editing

2.3.x

  • Songs library — full CRUD with active/inactive filter
  • Songs import and export via CSV
  • Song duration in H:MM:SS format

2.2.x

  • Google Calendar colour palette corrected to match Google API
  • Unavailability tracking with band member assignment
  • Inline venue editing with fee and timing columns

2.0.x

  • Multi-artist support with agency licence
  • Per-artist Google Calendar configuration
  • Artist filter on gig listings

1.0.0

  • Initial release