1. Plugin Overview
EC Events is a complete events management plugin for WordPress. It covers the full event lifecycle — creating and publishing events, importing from Eventbrite, displaying events with calendar and list views, accepting attendee enquiries via a built-in chatbot, and sending email campaigns to registered attendees.
Key capabilities at a glance:
- Events, Venues, Organizers — dedicated post types with rich custom fields
- Recurring Events — weekly, biweekly, monthly or custom day patterns
- Eventbrite Import — one-click sync of live events from your Eventbrite account
- Calendar & List views — switchable month calendar and chronological list
- Category pages — automatic SEO-optimised archive pages per event category
- Shortcodes — embed filtered event lists anywhere on your site
- Chatbot — AI-assisted visitor chatbot that answers event queries
- Email Campaigns — send event announcements to attendee lists
- Google Business Profile — auto-post events to GBP locations
- Event Manager role — staff access without admin privileges
3. Plugin Settings
Go to Events → Settings. Three tabs are available:
General Tab
- Events per page — number of events shown per page on archive and category pages. Default: 10.
- Navigation button colour — colour picker for pagination and navigation buttons. Uses a CSS variable so it applies site-wide on event pages.
- Archive default — toggle to show upcoming events only (hides past events on archive pages).
- URL Slugs — customise the URL prefix for events, venues, organizers and categories. After changing, visit Settings → Permalinks and click Save.
- Default view — whether archive pages open in List or Month view by default.
- Auto-trash — automatically move past events to trash after a set number of days.
License Tab
Enter your EC Events PRO license key. See the License section.
4. Creating Events
4.1 Event Fields
Open Events → Add New. The Event Details meta box (right sidebar) contains all event-specific fields:
| Field | Notes |
|---|---|
| Start Date / Time | Required. Used for ordering and display. |
| End Date / Time | Optional. If omitted, treated as same-day. |
| Timezone | Defaults to your WordPress site timezone. |
| All Day | Tick to hide time display. |
| Venue | Link to a Venue record. Type to search existing venues. |
| Organizer | Link to an Organizer record. |
| Cost / Price | Free text — enter a price range, "Free", or leave blank. |
| Website | External link for tickets or more information. |
| Event Status | Scheduled, Cancelled, Postponed, Sold Out. |
| Eventbrite Event ID | Auto-filled on import. Used to prevent duplicate imports. |
4.2 Event Status
| Status | Meaning |
|---|---|
| Scheduled | Default — event is upcoming and active. |
| Cancelled | Event will not take place. Shown with a Cancelled label. |
| Postponed | Date not yet confirmed. Shown with a Postponed label. |
| Sold Out | Event is full. Ticket links remain visible. |
4.3 Recurring Events
The Recurrence meta box (right sidebar on event edit screen) lets you generate a series of instances from a single parent event.
- Repeat — Weekly, Biweekly, Monthly, or custom days of the week.
- Generate up to — maximum number of instances to create (up to 52).
- End Date — stop generating instances after this date.
Click Update to save the parent event and generate all instances. Each instance is a separate post with its own date, URL, and featured image inherited from the parent.
4.4 Recurring Events imported from Eventbrite
Eventbrite imports bring in the parent event only — instances are not imported automatically. After import, open the parent event, set the Recurrence settings (frequency, count, end date), and click Update to generate instances.
5. Event Categories
Go to Events → Event Categories. Categories organise your events and power the automatic archive pages and chatbot city/topic matching.
5.1 Creating Categories
- Name — displayed as the page title on the category archive page.
- Slug — used in the URL. Example:
seattle-wa→/dance-classes-in/seattle-wa/. - Description — shown as a paragraph under the heading on the category page. Write a short SEO-friendly description of events in this category.
5.2 Category Pages vs Shortcode Pages
Category pages are automatically created by WordPress and are the recommended way to display events. They are better for SEO than shortcode pages because Google treats taxonomy archives as topical hubs, and every event post links back to its category automatically.
| Category Page | Shortcode Page | |
|---|---|---|
| SEO | ✓ Topical hub, strong internal linking | Regular page |
| Pagination | ✓ Built-in | All events on one page |
| Maintenance | Zero — auto-updates | Zero — auto-updates |
| Best for | Main city/topic listing pages | Embedded lists (homepage, landing pages) |
5.3 Events Per Page
Go to Events → Settings → General → Events per page to control how many events appear per page on archive and category pages. This overrides the WordPress global reading setting.
6. Venues
Venues are reusable records linked to one or more events. Go to Events → Venues → Add New.
Fields: Name, Address, City, State/Region, Postcode, Country, Phone, Website, Google Maps URL.
On import from Eventbrite, venues are matched to existing records first by Eventbrite ID, then by name similarity (85% match threshold). Manually created venues are matched by name.
7. Organizers
Organizers are reusable records representing the person or company running an event. Go to Events → Organizers → Add New.
Fields: Name, Email, Phone, Website.
On import, organizers are matched to existing records by name.
8. Archive & Category Pages
8.1 Category Pages
Each event category automatically gets an archive page at a URL like /events/category/your-slug/ (the base URL depends on your slug settings). These pages show all upcoming events in that category, paginated by the Events per page setting.
To customise a category page:
- Category description — go to Events → Event Categories, edit the category, and add a description. It appears as a paragraph under the heading on the page.
- Template override — copy
wp-content/plugins/ec-events/templates/event/archive-events.phptowp-content/themes/your-theme/ec-events/event/archive-events.php. The plugin checks for this file first. Plugin updates will never overwrite your customised version.
8.2 List View and Month View
All archive and category pages include a view switcher in the top-right corner. Users can toggle between:
- List view — chronological list of upcoming events grouped by month, with pagination.
- Month view — calendar grid showing events on their dates. Click an event pill to go to the event page. Hover over an event to see its featured image.
When switching between views, the currently selected month is preserved. If you are viewing September in month view and switch to list view, you will see September's events.
Use the ‹ and › arrows to navigate months. Navigation stays on the current category page — it does not jump to the main events archive.
9. Shortcodes
Use shortcodes to embed a filtered event list on any page or post.
9.1 [ec_events] — Event List
Basic usage: [ec_events]
Available attributes:
| Attribute | Default | Description |
|---|---|---|
| category | (all) | Category slug or comma-separated list of slugs. Example: category="london,birmingham" |
| limit | 10 | Maximum number of events to show. |
| view | list | Display as list or month. |
| months | (all) | Show events within the next N months only. Example: months="3" |
| past | no | Set to yes to include past events. |
Examples:
- All upcoming events (default):
[ec_events] - Events in two specific categories:
[ec_events category="london,manchester"] - Next 3 months only, limit 6:
[ec_events months="3" limit="6"] - Past events:
[ec_events past="yes" limit="20"]
9.2 [ec_venue] — Single Venue
[ec_venue id="123"] — displays the details of a specific venue by its post ID.
10. Eventbrite Import
10.1 Setup
- Go to Events → Eventbrite Import.
- Enter your Eventbrite Private Token (from your Eventbrite account → Account Settings → Developer Links → API Keys).
- Click Save Token.
- Optionally set a default event category to assign to all imported events.
10.2 Running an Import
Click Import Now to fetch all live events from your Eventbrite account. The plugin imports only events with live status — draft, ended, and cancelled events are skipped.
The import results screen shows:
- How many events were imported or updated
- How many were skipped (already exist)
- Any events where the category could not be matched — with a dropdown to assign a category manually
Re-importing is safe — existing events are updated rather than duplicated. Status changes on Eventbrite (e.g. an event is cancelled) are synced on re-import.
10.3 Recurring Series After Import
Eventbrite imports bring in the parent event only, not individual occurrences. After importing a recurring series:
- Open the parent event in wp-admin.
- In the Recurrence sidebar box, set the frequency (Weekly, Monthly, etc.), the number of instances to generate, and the end date.
- Click Update.
Instances are generated and automatically inherit the parent's category, venue, organizer, featured image, and cost.
10.4 Pre-Import Checklist
- Make sure events are in live status on Eventbrite before importing.
- Create your event categories first so the category matcher can assign them during import.
- Set a featured image on each event in Eventbrite or add it manually after import.
- For recurring series, note the frequency and end date — you'll need them when setting up recurrence after import.
11. Chatbot
The built-in chatbot answers visitor questions about your events directly on the page. It appears as a chat bubble in the bottom corner of event pages.
11.1 How It Works
When a visitor sends a message, the chatbot checks the following in order and returns the first match:
- FAQ match — checks the message against your configured FAQ entries and their keywords. FAQ always takes priority.
- Category match — detects city or category names in the message and returns matching upcoming events.
- Tag match — matches event tags (e.g. "beginner", "outdoor", "family").
- Title keyword search — searches event titles for meaningful words in the message.
- AI response — if AI is enabled and an API key is configured, sends the query to Claude or OpenAI.
- Default reply — a configurable fallback message if nothing matches.
11.2 Chatbot Settings
Go to Events → Chatbot → Settings tab:
| Setting | Description |
|---|---|
| Enable Chatbot | Show or hide the chat bubble on event pages. |
| Chatbot Title | Text shown in the chat header. |
| Welcome Message | First message shown when the chat opens. |
| Input Placeholder | Placeholder text in the message input field. |
| Brand Colour | Colour of the chat bubble and send button. |
| Start Open | Open the chat automatically when the page loads. |
| Lead Capture | After answering, offer to collect the visitor's name, phone and city. |
| Fallback Message | Reply when no match is found and AI is disabled. |
| AI Provider | Claude (Anthropic) or OpenAI. Paste the API key to enable. |
11.3 FAQ Tab
Go to Events → Chatbot → FAQ tab. Each FAQ entry has:
- Question — displayed as a label in the admin list.
- Keywords — comma-separated words or phrases. The chatbot matches these against visitor messages. Use multi-word phrases for precision (e.g.
book a ticketinstead of justbook). - Answer — the response returned to the visitor. Supports basic HTML.
refund policy will only match messages that contain both words together, preventing accidental matches on common single words.11.4 Query Log Tab
Go to Events → Chatbot → Query Log tab. Shows the last 200 visitor messages with timestamp, message text, and how it was matched (FAQ, City, Tag, Keyword, AI, or Fallback). Use this to identify common questions that are not being answered well and create new FAQ entries for them.
12. Email Campaigns
Go to Events → Email Campaigns to send event announcements to your attendee list.
- Templates — create reusable email templates with event placeholders.
- Attendees — manage your subscriber/attendee list.
- Send — select a template, choose recipients, and send or schedule.
- History — view sent campaigns with open and click tracking.
Email is sent via your WordPress mail configuration (wp_mail). For reliable delivery, install a transactional email plugin (e.g. WP Mail SMTP with SendGrid or Brevo).
14. User Roles
EC Events adds an EC Events Manager role for staff who need to manage events without full administrator access.
| Capability | Administrator | EC Events Manager |
|---|---|---|
| Create / edit / delete events | ✓ | ✓ |
| Manage venues and organizers | ✓ | ✓ |
| Manage event categories | ✓ | ✓ |
| Run Eventbrite import | ✓ | ✓ |
| Send email campaigns | ✓ | ✓ |
| View chatbot FAQ and Query Log | ✓ | ✓ |
| Change chatbot AI settings | ✓ | ✗ |
| Change plugin settings | ✓ | ✗ |
| Manage license | ✓ | ✗ |
| Access WordPress core settings | ✓ | ✗ |
To assign the role: go to Users → All Users, edit a user, and change their Role to EC Events Manager.
15. License
Go to Events → Settings → License tab. Enter your EC Events PRO license key (format: EEV-PRO-XXXX-XXXX-XXXX) and click Activate.
A valid license is required to receive plugin updates. The license is validated against the EC Digital license portal and is tied to your domain. Contact support@ec-digital.com if you need to transfer your license to a new domain.
16. Support
EC Events is developed and supported by EC Digital Services.
- Email: support@ec-digital.com
- Website: www.ec-digital.com
When contacting support, please include:
- Your EC Events version number (visible in Events → Settings → License tab)
- Your WordPress version
- A description of the issue and steps to reproduce it
- Any relevant PHP error log entries
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); to wp-config.php. The log file is at wp-content/debug.log.