Sidcraft Commerce for Sidcraft Page Builder — Complete User Guide
An online store for Sidcraft Page Builder: products, digital downloads, event tickets, cart, checkout, coupons, reviews and PayPal payments. No WooCommerce needed.
Plugin by Suhaib Siddiqi · License GPL-2.0-or-later
1.Overview
Sidcraft Commerce turns Sidcraft Page Builder into a complete online store — no WooCommerce required. Products, orders, coupons, gift cards, event tickets and cart sessions are stored in your own WordPress database.
Prefer to watch? The Sidcraft Commerce video walkthrough on YouTube shows how to sell event tickets, deliver QR tickets and check in guests — without WooCommerce.
Feature highlights:
- Products designed visually in Sidcraft Page Builder (with a Product data panel for price, SKU, stock, badges and categories)
- Prices, sale prices, SKU, stock tracking, featured flag, image badges (HOT, POPULAR, Sale, Clearance) and an automatic Sold Out label
- Item options — sizes, extras, spice levels, special instructions — each choice optionally adding to the price
- Verified-customer reviews with star ratings, a rating breakdown and "Verified purchase" badges
- Coupons (percentage or fixed), gift cards (sold or issued by hand), shipment tracking
- Digital downloads with private per-buyer links, limits and expiry
- Events & ticketing — ticket types, tiered/dynamic pricing, attendee details, QR/barcode tickets, PDF tickets, calendar sync, check-in, CSV export
- Payments via PayPal (built in; Pay in 4, Venmo). Stripe, Razorpay, PayU India, Mercado Pago, Square, Mollie, Authorize.net and offline payments are available through Sidcraft Builder Pro
- Pages stay cacheable; cart/checkout are marked no-cache automatically
Requirements:
| Requirement | Value |
|---|---|
| WordPress | 6.3+ (tested up to 7.1) |
| PHP | 7.4+ |
| Sidcraft Page Builder | 0.15.0 or newer (required) |
| Sidcraft Builder Pro | Optional — unlocks more payment gateways |
If Sidcraft Page Builder is missing or too old, the plugin shows an admin notice and stops safely — nothing breaks.
2.Requirements & Installation
- Install and activate Sidcraft Page Builder (0.15+).
- Install Sidcraft Commerce:
- WordPress admin → Plugins → Add New → Upload Plugin → upload
sidcraft-commerce-for-sidcraft-page-builder-1.3.1.zip→ Activate, or - Unzip and upload the folder to
wp-content/plugins/, then activate.
- WordPress admin → Plugins → Add New → Upload Plugin → upload
- On activation the plugin creates its database table, default settings, and the Shop, Cart, Checkout, Order received and My downloads pages.
- Go to Store → Settings to set your currency, shipping, tax and payment methods.
- Under Store → Settings → Payments, enable PayPal and paste your PayPal email/Merchant ID. Use Sandbox (test) mode first, place a test order, then switch to live.
Uninstalling: use Plugins → Delete. By default your products, orders, coupons and gift cards are kept; only settings and temporary data are removed. See §19 to remove everything.
3.What Activation Creates
- Pages (auto-created, editable by you):
- Shop — product archive
- Cart — contains the Cart unit
- Checkout — contains the Checkout unit
- Order received — contains the Order Confirmation unit
- My downloads — contains
[sidccofo_downloads]
- Database table
{prefix}sidccofo_sessions— server-side cart sessions (7-day lifetime) - Scheduled job
sidcraft_commerce_cleanup(hourly) — cancels unpaid orders, cleans sessions, sends event reminders - Order statuses (custom, prefixed
sidccofo-): Pending payment, On hold, Processing, Completed, Disputed, Cancelled, Refunded
If a page already exists (re-activation), it is never overwritten. Page assignments live under Store → Settings → Pages.
4.The Store Admin Menu
Everything lives under Store in the WordPress admin menu:
| Menu | What it contains |
|---|---|
| Products | Product list ("dashboard"). Add New opens the Sidcraft Page Builder. Dismissible "Pro" card appears here. |
| Categories | Product categories (hierarchical) |
| Orders | All orders with statuses, history, refunds, shipments, downloads and tickets |
| Coupons | Discount coupons |
| Gift cards | Gift card codes, balances, recipients, history |
| Download log | Every order with downloads (who downloaded what, when) |
| Export catalog | Downloads products as JSON (no builder layout) |
| Settings | All store settings (tabs: General, Shipping & tax, Payments, Downloads, Emails, Events) |
Events (top-level menu):
| Menu | What it contains |
|---|---|
| Events | Event list + Add New Event (date, venue, ticket types…) |
| Attendees | Issued tickets list (per event, with check-in) |
| Check-in | Door-staff check-in screen (camera/USB scanner) |
| Settings | Links to the store Settings → Events tab |
Capabilities: store management requires manage_options (administrators). The Check-in screen can also be granted to staff via the sidccofo_check_in capability (see §15.9).
5.Store Settings
Store → Settings (edit.php?post_type=sidccofo_product&page=sidccofo-settings).
5.1 General tab
Store section
- Currency — store currency symbol/code
- Currency position — left / right / with space
- Decimals — number of decimal places (special handling for zero-decimal currencies like JPY and three-decimal currencies like KWD)
- Collect address — whether checkout asks for a shipping address
- Default country — used for shipping/tax before the customer picks one
- Hide out-of-stock products — remove them from grids
- Design products with Sidcraft Page Builder — ON by default. Turn off to add/edit products in the classic WordPress editor.
- Auto-insert buy box — ON by default. Adds rating → price → stock → Add to cart above the product content (skipped if your layout already has an Add to Cart unit).
- Show reviews on product pages — appends the reviews section below the description
- Publish verified reviews immediately — ON by default; turn OFF to moderate each review under Comments
Shipment tracking section
- Default carrier — preselected carrier on the order screen
- Your carriers — save custom carriers; can replace a built-in tracking link (use
{tracking_number}and{postcode}placeholders)
Pages section — assign the Shop / Cart / Checkout / Order received / My downloads pages (auto-assigned on activation)
Gift cards section
- Gift card expiry (months) — blank = never expires
Emails section
- From name — sender name on all store emails
- Admin email — override for "new order" notifications (default: site admin email)
5.2 Shipping & tax tab
Shipping zones
- Each zone = a group of countries + a flat rate
- A
*zone covers everywhere else - Free shipping over an amount — store-wide or per zone
- Countries outside every zone cannot check out and are not offered. The customer sees "Sorry, we don't ship to {country}."
- The cart shows "Add $X more for free shipping" when applicable
Tax
- Enable tax
- Prices entered include tax (or exclude — tax is added at checkout)
- Tax on shipping (on/off)
- Tax label — e.g. "VAT"
- Rate table — rows of Country / State (optional) / Rate / Label
- Tax appears as its own line (or "Includes … tax") in cart, checkout, confirmation, emails and admin, and is sent to the payment provider
- Note: even for virtual products, Country/State are still collected at checkout when tax is enabled
5.3 Payments tab
PayPal Standard (built in)
| Field | Purpose |
|---|---|
| Enable PayPal | Turn the gateway on at checkout |
| Title at checkout | What customers see (e.g. "PayPal") |
| PayPal email or Merchant ID | Your PayPal account |
| Sandbox (test) mode | Use PayPal's test environment |
| PDT identity token (optional) | Confirms return-from-PayPal payments |
| Invoice prefix | Default SC- |
Each section shows its webhook/return URL — PayPal webhooks are verified; refunds and disputes from PayPal are applied automatically. Supported currencies: AUD, BRL, CAD, CHF, CZK, DKK, EUR, GBP, HKD, HUF, ILS, JPY, MXN, NOK, NZD, PHP, PLN, RUB, SEK, SGD, THB, TWD, TRY, USD (filterable).
More gateways — Sidcraft Builder Pro. A dismissible card explains that Stripe (cards, Apple Pay, Google Pay, Klarna, Afterpay/Clearpay, Affirm), Razorpay, PayU India, Mercado Pago, Square, Mollie, Authorize.net and offline payments ship with Sidcraft Builder Pro. If you had these enabled before 1.3.0 your settings are preserved and return when Pro is active.
Card numbers never touch your site — customers pay on the provider's own secure page or buttons.
5.4 Downloads tab
Digital downloads
- File download method — Force download (resumable), X-Sendfile / X-Accel-Redirect / X-LiteSpeed, or Redirect
- Redirect as a last resort — fall back to redirect if the server method fails
- Open files in the browser — show PDFs/images inline instead of downloading
- Give access — As soon as the order is paid (default) or When the order is marked Completed
- Download links in order emails
- Past buyers get new files — files you add to a product later reach previous buyers
- Pause links of cancelled or refunded orders
Who can download
- Customers must be logged in
- Guests confirm their email — one-time email link before download
- Record IP addresses in the download history
File storage
- Uploads go to a protected folder
wp-content/uploads/sidccofo-downloads/(closed to direct visits on Apache/LiteSpeed; an nginxinternal;rule is shown on this page) - Add a random string to uploaded file names
- Allow files hosted elsewhere — remote URLs (Dropbox, S3…)
- More approved folders — textarea of extra server folders files may be served from (security allowlist)
5.5 Events tab
See §15 — sections: Events and tickets, Ticket delivery, Attendee file uploads, Zoom, WhatsApp messages.
6.Products
6.1 Creating a product
- Store → Products → Add New Product — this opens Sidcraft Page Builder.
- The Product data panel opens automatically on a new product (and can be reopened any time). It contains:
- Regular price and Sale price (sale must be lower than regular; the sale price shows above the struck-through regular price)
- SKU
- Stock tracking toggle + Quantity, or a manual Stock status (instock / outofstock)
- Image badge — HOT, POPULAR, Sale, Clearance (shows top-right on the product image). Products on sale show "Sale" automatically if no badge is chosen.
- Featured flag
- Categories
- Product image
- Short description (used in grids and quick view)
- Hide the automatic buy box — for fully custom layouts
- Item options (see §7)
- Virtual and Downloadable switches (see §8)
- Design the page with any Sidcraft units, then click Publish.
- Existing products show "Edit with Sidcraft Page Builder" on the product screen, in the Products list and in the admin bar. Append
?sidccofo-wp-edit=1to return to the WordPress editor instead.
Turn off Store → Settings → "Design products with Sidcraft Page Builder" if you prefer the classic WordPress editor.
6.2 Automatic buy box
On the frontend, a product without a builder layout (or without an Add to Cart unit) gets an automatic buy box above the content: rating → price → stock status → Add to cart. It is skipped when your layout already contains an Add to Cart unit, or when Hide the automatic buy box is ticked.
6.3 Stock behavior
- Orders reserve stock at placement — the reservation only succeeds while enough quantity remains, so two buyers can never both take the last unit.
- On hold and paid statuses reserve stock.
- An unpaid Pending payment order auto-cancels after 2 hours and returns stock.
- Cancelled and Refunded return the units that order still holds.
- Out-of-stock products get a dimmed image with a "Sold Out" overlay in grids, quick view and the product page.
6.4 Catalog export
Store → Export catalog downloads sidcraft-commerce-catalog-YYYY-MM-DD.json containing every product's title, description, categories, prices, SKU, stock and item options — without the builder layout. Products are also included in Tools → Export.
7.Item Options
Add option groups on a product (Product data → Item options, or the same field in the builder panel). One group per line:
Size*: Small | Medium +2 | Large +4
Extras [checkbox]: Cheese +1 | Bacon +2
Spice level [radio]: Mild | Medium | Hot
Special instructions [text]: Max 200 characters
| Syntax | Meaning |
|---|---|
Label*: … | * makes the group required |
[radio] | Buttons/chips (pick one) |
[checkbox] | Multiple choice |
[text] | Free-text box |
| (default) | Dropdown |
+2 on a choice | Adds 2.00 to the price |
| First line choice | Dropdown default; a required radio auto-selects the first choice |
Customer experience: choices appear on the product page with a running "With options: $X" price. Each unique combination becomes its own cart line; stock is checked across all lines; prices are recalculated on every request. Choices show in cart, checkout, order-received page, emails, the admin order screen and PayPal. Product grids show "Choose options" for products with options.
8.Digital Downloads & Virtual Products
8.1 Setting up a downloadable product
In the product's Product data box:
- Tick "Virtual — nothing to ship (no shipping cost or address at checkout)" (optional but usual).
- Tick "Downloadable — buyers get access to files".
- Add files: File name + File URL (use Upload / choose file for protected uploads, or paste an external URL if allowed) → Add file. Multiple files per product supported.
- Download limit — "Per file and per unit bought. Empty: unlimited."
- Download expiry (days) — "Links stop working this many days after purchase. Empty: never."
A cart containing only virtual products skips shipping costs and address fields (Country/State still appear if tax is enabled).
8.2 Where buyers get their files
- On the order-received page (once paid)
- In the order emails (if enabled)
- On the My downloads page (
[sidccofo_downloads]unit) — logged-in customers see files from all their orders - Access starts when the order is paid (or Completed, per setting), pauses on cancelled/refunded orders, and past buyers receive files you add later.
8.3 Managing downloads on an order
Open the order → Downloads box:
- Per-file table: Downloaded count, Downloads left, Expires, Status (Active/Revoked), Revoke button
- "Give access to the files of" — grant another product's files
- "Email the download links to {email}" — resend
- Full download history per order
Store → Download log lists every order with downloads.
8.4 Security notes
- Uploaded files live in
wp-content/uploads/sidccofo-downloads/with random names, blocked from direct browsing (Apache/LiteSpeed automatic; nginx rule provided). - Files are only served from approved folders and only in file types WordPress allows.
- Optional login requirement or email confirmation for guests; optional IP logging (included in WordPress's personal-data export/erase tools).
9.Gift Cards
9.1 Selling gift cards
- Create a product and tick "This product is a gift card" in Product data.
- Set preset amounts and/or allow a custom amount (with minimum and maximum).
- Buyers on the product page pick an amount, enter recipient name/email, a message, a sender and an optional send date.
- Once the order is paid, the recipient receives an email with the code — immediately, or on the chosen date.
9.2 Issuing cards by hand
Store → Gift cards → Add New: issue store credit, prizes, etc. This screen also shows balances, recipients and history, and lets you change a balance, resend the email, or disable a card.
9.3 Redemption
- A "Have a gift card?" field appears in the cart and at checkout.
- Multiple cards per order; each card pays up to its balance and keeps the rest.
- When cards (or a 100% coupon) cover the whole order, the checkout shows "Nothing left to pay: no payment method is needed." and no payment method is requested.
- Amounts are taken at order placement and returned if the order is cancelled or refunded; cards bought in a cancelled/refunded order are disabled.
- Gift cards are not charged tax or shipping, and coupons don't apply to them.
- Codes are protected against guessing (10 failed attempts per hour per visitor).
- Expiry: Store → Settings → Gift cards (default: never).
10.Coupons
Store → Coupons → Add New. The coupon title is the code.
| Field | Purpose |
|---|---|
| Discount type | Percentage of the (sale-priced) subtotal, or a fixed amount off |
| Amount | The value |
| Minimum spend (optional) | Order subtotal required |
| Expiry date (optional) | Coupon dies after this date |
| Usage limit (optional) | Max total uses |
Behavior: customers apply or remove one coupon in the cart or at checkout ("Have a coupon?" field; press Enter to apply). The discount appears as its own line in cart, checkout, confirmation, emails and the admin order; it reduces tax and counts toward free shipping thresholds; it is sent to PayPal as a discount. Usage is counted when an order is placed (On hold/Processing) and given back on cancel/refund.
11.The Customer Experience
11.1 Shop & product pages
- Product Grid unit shows cards with image, category chip, badge, title, star rating, price, Add to cart (or Choose options), a Sold Out overlay, and a Quick view button.
- Quick view opens a popup (loaded from the server) with image, rating, price, stock, short description, add-to-cart and a "View full details →" link.
- Single product page = your builder layout (or the theme's content) + the automatic buy box + reviews section.
11.2 Cart
- Cart is stored server-side per visitor (7-day cookie) and prices are always recalculated from the product.
- Line items show thumbnail, name, gift-card recipient/schedule, chosen options, unit price (with struck-through regular price on sale), and a quantity stepper (− / +, clamped to stock and purchase limits). × removes a line.
- Totals panel: subtotal, shipping quote, tax, coupon discount, gift cards, total; plus the coupon and gift-card forms.
- Buttons: Proceed to checkout and ← Continue shopping.
- The mini-cart badge fills in after page load, so cached pages stay accurate.
- The cart shows "Add $X more for free shipping" when a threshold is near.
11.3 Checkout
- Your details — First name*, Last name*, Email*, Phone, plus address fields (Address, Address 2, City, Postcode, Country, State) when address collection is on and the cart needs shipping. Country/State are dropdowns for supported countries; shipping and tax re-price instantly when they change.
- Create an account with this email (guests only) — WordPress emails a password-set link; the buyer is logged in and the order attaches to the new account (role
customer, orsubscriberif that role doesn't exist). Later logins with the same email attach earlier guest orders (placed on 1.0.9+). - Order notes (optional) — if enabled.
- Payment — radio list of enabled gateways (each with optional description and gateway-specific fields). If a gift card/coupon covers everything: "Nothing left to pay: no payment method is needed."
- Place order — the button shows Placing order…, then the customer is sent to the provider (or the confirmation page for free orders). Errors appear inline per field.
- Event tickets — an attendee-details step appears when the cart contains tickets (see §15.4).
11.4 Order received page
Shows the confirmation (Order Confirmation unit): items, options, totals, coupon, gift cards, tax, billing details, shipment tracking links, download links (for digital products) and ticket links/PDFs (for events). The link contains a private key — safe to share with the buyer only.
12.Orders, Refunds & Disputes
12.1 Order statuses
| Status | Paid? | Reserves stock? |
|---|---|---|
| Pending payment | No | No |
| On hold | No | Yes |
| Processing | Yes | Yes |
| Completed | Yes | Yes |
| Disputed | Yes | Yes (kept reserved) |
| Cancelled | No | No (units returned) |
| Refunded | No | No (units returned) |
"Paid" statuses drive stock deduction, sales recording, gift-card issuing and verified-review eligibility. Add-ons can register new statuses (e.g. Ready for pickup) each with its own color, paid flag and customer email.
12.2 Order screen boxes
- Items — products, options, quantities, prices
- Customer — billing details, account link, notes
- Order status (side) — status dropdown + actions
- Refund (side) — record a partial refund (amount + quantities to restock) or a full refund. A refund covering the order total marks the order Refunded and restores stock, coupon uses and gift-card balances.
- History — order notes/timeline
- Shipment tracking — see §13
- Downloads — see §8.3
- Event tickets — issue/email/PDF tickets (see §15)
12.3 Refunds & chargebacks from providers
- Stripe
charge.refundedand PayPalPAYMENT.CAPTURE.REFUNDEDrecord the amount once. Full amount → Refunded (stock/coupons/gift cards restored). Partial → stock returns only for quantities named on the order screen or in the provider payload. - Disputes: Stripe
charge.dispute.*and PayPal dispute events set the order to Disputed — stock stays reserved. A lost dispute marks the order Refunded; a won dispute restores the previous status.
12.4 Auto-cancellation
A Pending payment order unpaid after 2 hours is cancelled by the hourly job ("Unpaid for 2 hours.") and its stock returned.
13.Shipment Tracking
- Open an order → Shipment tracking box.
- Choose a carrier and enter the tracking number + date. Several shipments per order are supported.
- Automatic tracking links are built for: Australia Post, Canada Post, City-Link Express, DHL, DPD (UK/Europe), Fastway South Africa, FedEx, OnTrac, Parcelforce, Poczta Polska, InPost, DPD Polska, DHL Parcel Polska, GLS Poland, Royal Mail, SAPO, TNT Express (consignment & reference), UPS and USPS — or any carrier with a custom link (define your own under Settings → Shipment tracking → Your carriers).
- The customer receives a "Your order has shipped" email with a Track your package button; tracking also shows on the order-received page.
- Adding a shipment can mark the order Completed (the shipped email replaces the "order complete" email so the buyer gets one message, not two).
14.Reviews & Ratings
- Reviews are verified-purchase only: a customer clicks a star (on the rating unit, buy box or reviews section) and a "Rate & review" popup opens with that star pre-picked. They enter Order number, Order email and their review text.
- The order must be paid and contain the product; each order can review each product once. A wrong order number/email shows the same generic message (anti-enumeration), rate-limited to 10 failed attempts/hour per visitor, plus a hidden spam-trap field.
- Reviews display with a "Verified purchase" badge, the average, a 5-to-1 star breakdown and the review list. Product grids show stars + review count.
- Moderation: the setting "Publish verified reviews immediately" (ON by default) auto-publishes; turn it OFF to approve each under Comments (the Comments screen shows the stars and a link to the verifying order).
- The open WordPress comment form is closed on products; legacy comments are kept and still count toward the average.
- Averages/counts are cached on the product (rating average / rating count meta).
15.Events & Ticketing
15.1 Creating an event
Events → Add New Event. Meta boxes:
Event details
- Starts / Ends (date-time pickers; All-day event checkbox). Times use the site time zone (Settings → General). An end before the start is cleared with a notice.
- Venue, Address ("Street, city, country"), Latitude/Longitude, Show a map on the event page (default on)
- Online or hybrid event — join details go to ticket holders only: Join URL, Zoom fields, or Create the Zoom meeting for me (requires Zoom OAuth — see §15.10)
- Organiser, Organiser email, WhatsApp number, WhatsApp group link
- Capacity ("0 = no event-wide limit"), Stop selling when the event starts (default on), Show how many tickets are left
- Hide the automatic details and tickets — for layouts built in Sidcraft Page Builder
- Ask at checkout for — attendee mode: Nothing extra (buyer's name) / Name of each attendee (default) / Name and email / Name, email and phone
- Custom fields (asked for each ticket) — table of Label / Type / Choices (
A | B | C) / Help text / Required. Types: Text, Long text, Email, Phone, Number, Date, Dropdown, Choose one, Checkbox(es), File upload
Tickets — ticket types, see §15.2
Sales & check-in (side) — seats taken/issued/checked-in counters with progress bar, plus buttons: Attendees, Export CSV. "Save the event to start selling tickets."
The Events list shows When (sortable), Where, Sold and Checked in columns; past events get an Ended tag. Row actions: Attendees, Check-in.
15.2 Ticket types
Each event ships with one General admission type; add more with Add ticket type. Per type:
| Field | Notes |
|---|---|
| Ticket name | e.g. "Early Bird", "VIP" |
| Attendee type | Suggestions: Adult, Child, Student, Senior, Member, VIP |
| Price | 0 = free |
| Tickets available | 0 = no limit |
| Min per order / Max per order | 0 max = no limit |
| Sales start / Sales end | Optional sales window |
| Description | "What this ticket includes" |
| Dynamic pricing | Rules — see §15.3 |
Under the hood every ticket type is a hidden product placeholder, so the store's currency, taxes, coupons, gift cards, stock locking, refunds and every payment method work for tickets.
15.3 Dynamic pricing
One rule per line in the Dynamic pricing box:
until 2026-11-01: 20 Early bird
from 2026-12-10: 40 Door price
after 75%: 35
after 100 sold: 35
qty 5: 18 Group rate
| Rule | Meaning |
|---|---|
until DATE: price Label | This price until the end of that day (add a time: until 2026-11-01 18:00: 20) |
from DATE: price Label | This price from that day on |
after N%: price | Once N% of seats are taken (this type's limit, else event capacity) |
after N sold: price | Once N tickets of this type are taken |
qty N: price Label | Each ticket costs this when buying N or more of this type |
The last line that applies wins. Words after the price are shown to buyers. Invalid lines show "Not understood: …". Tiered prices by attendee type (Adult/Child/VIP…) are done with one ticket type per attendee type.
15.4 Checkout — attendee details
When the cart contains tickets, checkout shows an attendee step based on the event's Ask at checkout for mode, plus the event's custom fields (including file uploads, limited by Events → Settings → Attendee file uploads: allowed types default jpg, jpeg, png, gif, webp, pdf, doc, docx, max 5 MB). Files are stored privately — only store managers can download them. A "Use my details" button copies the buyer's name/email/phone into attendee rows.
15.5 Ticket issuance & emails
- Tickets (custom post type Attendees) are issued automatically when the order is paid (Processing/Completed). Each ticket gets a unique code (
K7QX-M4PZ-9RTW— no 0/O/1/I/L), a QR code and/or Code 128 barcode per the Code on tickets setting. - The buyer receives "Your ticket(s)" email with embedded QR codes, an optional PDF ticket attachment and an optional .ics calendar file. If Email each attendee their own ticket is on, attendees with their own email get a copy.
- Reminder emails ("See you soon") go out automatically N hours before the event (setting, default 24; 0 = off) via the hourly job. Force one per event with the remind action.
- Unpaid orders can still be forced with Issue tickets now on the order screen; Email tickets to the customer again and Download PDF are there too.
- Ticket holders get a private ticket page (
?sidccofo_ticket=CODE&k=SIG) showing the QR code, event info, online join details (hidden until issued), and Add to calendar links.
15.6 Refunds & cancellations
Cancelled/refunded orders cancel their tickets; partial refunds cancel just the refunded tickets. Individual tickets can be cancelled or restored from the ticket screen ("Cancel this ticket? It will no longer get in.").
15.7 Attendees management
Events → Attendees (the ticket list, filterable by event dropdown and status):
- Columns: Ticket, Attendee, Event, Ticket type, Order, Status (pill: valid / checked in / cancelled), Issued
- Bulk actions: Check in / Undo check-in
- Row actions: Check in / Undo check-in, PDF, Email ticket
- Export CSV —
attendees-<event>.csvwith ticket, status, type, attendee, order, buyer and one column per custom field
Single ticket screen: QR + code, editable attendee details, custom-field answers with file links, a check-in side box (Check in / Undo / Make valid again / Cancel ticket / Email this ticket again) and a collapsible History log.
15.8 Calendars & maps
- Add to Google Calendar and .ics links on event pages and the Event Details unit
- Subscription feed (
?sidccofo_events_ics=1, optional&cat=slug) that Google/Apple/Outlook calendars keep in sync - Maps: Google Maps (optionally with a Google Maps Embed API key) or OpenStreetMap (needs coordinates) or none — chosen in Events → Settings → Maps; per-event Show a map toggle
15.9 Check-in
Three ways, all using the same code:
- Any phone camera scans the QR → opens the ticket page → staff who are logged in see a Check in button.
- Events → Check-in screen — event filter (last 14 days), a code box ("Scan or type a ticket code") and Scan with camera (browser BarcodeDetector; USB barcode scanners type into the box). A This session log lists the shift's check-ins with Undo.
- Attendees list — row or bulk Check in / Undo check-in.
The Check-in screen is accessible to administrators and to users with the sidccofo_check_in capability — grant it to door staff with a role editor plugin. Results are announced live ("Checked in." / "Already checked in." / "This ticket was cancelled.").
15.10 Zoom
Events → Settings → Zoom: create a Server-to-Server OAuth app in the Zoom App Marketplace (scopes meeting:write:admin or meeting:write) and paste Account ID, Client ID, Client secret. Then the event's "Create the Zoom meeting for me (and keep its time in sync)" checkbox becomes available; the meeting URL/ID/passcode fill automatically on save. Pasting a meeting link manually works without any credentials.
15.11 WhatsApp (optional)
Events → Settings → WhatsApp messages: sends an approved WhatsApp Cloud API template to the buyer's phone when tickets are issued. Fields: Send tickets on WhatsApp, Phone number ID, Access token, Template name, Template language code (default en_US). Template variables: {{1}} first name, {{2}} event, {{3}} date, {{4}} ticket link. (Plain "Chat on WhatsApp" / "Share on WhatsApp" / group links need no setup.)
15.12 Event settings reference (Events tab)
| Setting | Default | Notes |
|---|---|---|
Event page address (ev_slug) | event | URL base → /event/<slug>/ |
| After "Get tickets" | Go to checkout | or cart / stay on page |
| Show tickets left | from setting | default for new events |
| Maps | Google Maps | Google / OpenStreetMap / None |
| Google Maps Embed API key | — | optional; maps work without it |
| Reminder email (hours before) | 24 | 0 = off |
| Code on tickets | QR code | QR / Barcode (Code 128) / both |
| Attach PDF tickets | on | |
| Attach a calendar file (.ics) | off | |
| Email each attendee their own ticket | off | when address differs from buyer |
| QR images in emails | Embedded | or Linked (for restrictive mail plugins) |
| Ticket colour | #7c5cfc | printed on PDF |
| Show the event image on PDF tickets | off | JPEG only |
| Ticket terms | — | printed at the bottom of the PDF |
| Allowed file types / Largest file (MB) | jpg, jpeg, png, gif, webp, pdf, doc, docx / 5 | attendee uploads |
16.Display: Units, Blocks & Shortcodes
Every feature can be shown three ways: as a Sidcraft Page Builder unit (design & style controls in the builder), a Gutenberg block, or a shortcode in any editor. Shortcode attribute names = unit control names (hyphens become underscores).
16.1 Commerce units
| Unit | Shortcode | Purpose & key controls |
|---|---|---|
| Product Grid | [sidccofo_product_grid] | source (all / on_sale / featured / category / ids), limit, columns (1–4), show_category, show_rating, show_add_to_cart, show_quick_view |
| Add to Cart | [sidccofo_add_to_cart] | button text, show quantity |
| Product Price | [sidccofo_product_price] | current product's price/sale display |
| Stock Status | [sidccofo_stock_status] | in/out-of-stock label |
| Product Rating | [sidccofo_product_rating] | stars + count; clickable ("Click a star to rate"); shows "Be the first to review" when empty |
| Product Reviews | [sidccofo_product_reviews] | list + verified form (limit) |
| Mini Cart | [sidccofo_mini_cart] | badge/count, optional total (show_total) |
| Cart | [sidccofo_cart] | full cart panel (dynamic page) |
| Checkout | [sidccofo_checkout] | full checkout (dynamic page) |
| Order Confirmation | [sidccofo_order_confirmation] | order-received content (dynamic page) |
| My Downloads | [sidccofo_downloads] | buyer's file library |
Fragment parts (rendered inside cart/checkout, not standalone): coupon form, gift-card form, gift-card redeem, item options, checkout summary, shipments. All units share Colour scheme and Accent colour style controls.
16.2 Event blocks & units
Blocks live in the Sidcraft Commerce block category (server-rendered, wide/full alignment supported):
| Block / Unit | Shortcode | Attributes |
|---|---|---|
| Event List | [sidccofo_event_list] | when (Upcoming/Past/All), category, limit (1–100), layout (Cards/List), columns (1–4), show image/summary/price, button_text ("Get tickets"), empty text |
| Event Calendar | [sidccofo_event_calendar] | category, start_month (YYYY-MM), show Subscribe links, list month's events |
| Event Details | [sidccofo_event_details] | event_id (0 = current event), show Add-to-calendar links, show organiser, show map |
| Event Tickets | [sidccofo_event_tickets] | event_id, heading ("Tickets"), button_text ("Get tickets") — the ticket selector |
| Event Map | [sidccofo_event_map] | event_id, height (160–900 px) |
| My Tickets | [sidccofo_my_tickets] | heading ("My tickets"), also list past events |
My Tickets shows tickets from the visitor's own orders and tickets bought for their email address — even as a guest.
[sidccofo_event_tickets event_id="123"]
[sidccofo_product_grid source="on_sale" limit="8" columns="3"]
16.3 Smart loading
Assets load only on pages that contain a unit (the plugin scans content). Cart/Checkout/Order-confirmation units are "dynamic" full-page units. Event Tickets blocks/units load the cart + events scripts. Pages stay cacheable; the mini-cart badge fills in after load.
17.Emails
All emails are HTML, sent with wp_mail, from the From name and admin email set under Settings → Emails.
| Trigger | Contents | |
|---|---|---|
| We've received your order | Order placed (→ On hold/Processing) | Items, options, totals, coupon, gift cards, tax, billing, download & ticket links |
| New order | Same, to the store owner | Admin copy |
| Payment received | On hold → Processing | |
| Your order is complete | → Completed | Skipped if a shipment email was just sent |
| Your order has shipped | Shipment added | Tracking links + Track your package button |
| Custom-status emails | e.g. Disputed, add-on statuses | Heading + message defined per status |
| Gift card email | Card paid (or on the send date) | Code, amount, message, expiry |
| Your ticket(s) | Tickets issued | QR codes, PDF ticket(s), .ics |
| Attendee copy | Per attendee (if enabled) | That person's ticket |
| See you soon (reminder) | N hours before the event | Tickets again |
Subjects use the format {Heading} (#{order id}). The sidcraft_commerce_email filter can alter or skip any store email; sidcraft_commerce_ticket_email does the same for ticket emails. Event email headings/intros are fixed translatable strings (not editable in admin); WhatsApp templates are the exception (see §15.11).
18.Caching, Performance & Theme Overrides
Caching compatibility
- Shop and product pages remain fully cacheable.
- The cart badge fills in after load using JS cookies (
sidccofo_items_in_cart,sidccofo_cart_hash) — cached pages show a correct count without being personalized. - Cart and Checkout pages send
DONOTCACHEPAGEautomatically (marked no-cache). - v1.3.1 performance work: cart loads all products in one batch; builder pages preload every product their units show; theme-override lookups happen once per request; hot options are autoloaded.
Theme overrides — copy any template from the plugin's templates/ folder into yourtheme/sidcraft-commerce/ (same sub-path, e.g. sidcraft-commerce/units/cart-panel.php, sidcraft-commerce/events/ticket-page.php, sidcraft-commerce/emails/order.php) and edit freely. Keep an eye on the changelog — updated templates are listed per release.
19.Export, Privacy & Uninstall
- Catalog export: Store → Export catalog → JSON (products, categories, prices, SKU, stock, item options — no builder layout).
- Attendees CSV: per event (see §15.7).
- Personal data: download IPs and history are included in WordPress's Tools → Export/Erase Personal Data flows. Attendee uploads and answers are stored privately.
- Uninstall: deleting the plugin removes settings, sessions and the cleanup cron, but keeps products, orders, coupons, gift cards, events and tickets. To remove everything, add to
wp-config.phpbefore deleting:define( 'SIDCRAFT_COMMERCE_REMOVE_ALL_DATA', true );
20.Developer Notes
Add-ons (full guide in docs/ADDONS.md, restaurant example in docs/example-addon.php): plugins can boot on sidcraft_commerce_loaded, add item options (sidcraft_commerce_product_options), register order statuses with a color, paid flag and customer email (Post_Types::register_order_status()), add checkout fields (text, textarea, select), block ordering outside opening hours, register new units, add settings sections/tabs, and hook cart, order, download and review events (sidcraft_commerce_order_status_changed, sidcraft_commerce_added_to_cart, sidcraft_commerce_checkout_errors, …).
Custom payment gateways (docs/example-gateway.php): extend \SidcraftCommerce\Payments\Gateway (the WC_Payment_Gateway equivalent), implement get_id(), get_default_title(), process_payment() and get_settings_fields(), then register via the sidcraft_commerce_gateways filter. Settings appear automatically on Store → Settings → Payments; ready-made return (/wp-json/sidcraft-commerce/v1/gateway/{id}/return) and webhook routes call your handle_return() / handle_webhook(); $order->payment_complete() marks the order paid.
REST API (sidcraft-commerce/v1): GET/POST cart, POST cart/add, cart/update, cart/location, cart/coupon (+ /remove), cart/gift-card, cart/redeem (+ /remove), GET quick-view/{id}, POST reviews, POST checkout, GET gateway/{id}/return, POST gateway/{id}/webhook, POST events/add, POST events/checkin, POST events/upload. Front-end JS exposes window.sidccofoCart, window.sidccofoCheckout and window.sidccofoCommerce.
wp-config.php constants: SIDCRAFT_COMMERCE_PAYPAL_CLIENT_ID, SIDCRAFT_COMMERCE_PAYPAL_SECRET, SIDCRAFT_COMMERCE_PAYPAL_WEBHOOK_ID (for Pro gateways), SIDCRAFT_COMMERCE_REMOVE_ALL_DATA.
21.Troubleshooting FAQ
Do I need WooCommerce? No. Only Sidcraft Page Builder (0.15+).
Where do customers find their files? Order-received page, order emails, and the My Downloads page — once the order is paid (or Completed, per setting).
Are downloads protected? Yes — protected uploads folder with random names, served only through private per-order links after limit/expiry checks. On nginx add the rule shown under Settings → Downloads.
Can I test payments before going live? Yes — PayPal Sandbox mode (and test keys for Pro gateways). Place a test order, then switch to live.
Do card numbers pass through my site? No — customers pay on the provider's page/buttons.
Does the plugin charge a fee? No — only your provider's normal fees.
What if two people buy the last item? Stock is reserved at order placement; the second buyer is told there isn't enough stock. Unpaid orders release stock after 2 hours.
How do gift cards interact with tax/shipping/coupons? Gift cards aren't charged tax or shipping, and coupons don't apply to them.
A customer's country can't check out. Countries outside every shipping zone can't be shipped to — add their zone (or the * zone).
Event tickets aren't issued. Tickets are issued when the order reaches a paid status (Processing/Completed). Use Issue tickets now on the order screen to force it.
Reminders not sending? Check Events → Settings → Reminder email (hours before) (0 = off) and that the event start time is within the window. Force with the per-event remind action.
Product URLs 404 after reactivating Sidcraft Page Builder. Permalinks repair themselves; if not, visit Settings → Permalinks and save.
Can I change how the store looks? Style units in the builder, or copy templates into yourtheme/sidcraft-commerce/.
How do I hand the Check-in screen to staff? Give them the sidccofo_check_in capability (role editor plugin) — no full admin access needed.
