Version 1.3.1

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:

Requirements:

RequirementValue
WordPress6.3+ (tested up to 7.1)
PHP7.4+
Sidcraft Page Builder0.15.0 or newer (required)
Sidcraft Builder ProOptional — 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

  1. Install and activate Sidcraft Page Builder (0.15+).
  2. 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.
  3. On activation the plugin creates its database table, default settings, and the Shop, Cart, Checkout, Order received and My downloads pages.
  4. Go to Store → Settings to set your currency, shipping, tax and payment methods.
  5. 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

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:

MenuWhat it contains
ProductsProduct list ("dashboard"). Add New opens the Sidcraft Page Builder. Dismissible "Pro" card appears here.
CategoriesProduct categories (hierarchical)
OrdersAll orders with statuses, history, refunds, shipments, downloads and tickets
CouponsDiscount coupons
Gift cardsGift card codes, balances, recipients, history
Download logEvery order with downloads (who downloaded what, when)
Export catalogDownloads products as JSON (no builder layout)
SettingsAll store settings (tabs: General, Shipping & tax, Payments, Downloads, Emails, Events)

Events (top-level menu):

MenuWhat it contains
EventsEvent list + Add New Event (date, venue, ticket types…)
AttendeesIssued tickets list (per event, with check-in)
Check-inDoor-staff check-in screen (camera/USB scanner)
SettingsLinks 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

Shipment tracking section

Pages section — assign the Shop / Cart / Checkout / Order received / My downloads pages (auto-assigned on activation)

Gift cards section

Emails section

5.2 Shipping & tax tab

Shipping zones

Tax

5.3 Payments tab

PayPal Standard (built in)

FieldPurpose
Enable PayPalTurn the gateway on at checkout
Title at checkoutWhat customers see (e.g. "PayPal")
PayPal email or Merchant IDYour PayPal account
Sandbox (test) modeUse PayPal's test environment
PDT identity token (optional)Confirms return-from-PayPal payments
Invoice prefixDefault 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

Who can download

File storage

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

  1. Store → Products → Add New Product — this opens Sidcraft Page Builder.
  2. 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)
  3. Design the page with any Sidcraft units, then click Publish.
  4. 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=1 to 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

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
SyntaxMeaning
Label*: …* makes the group required
[radio]Buttons/chips (pick one)
[checkbox]Multiple choice
[text]Free-text box
(default)Dropdown
+2 on a choiceAdds 2.00 to the price
First line choiceDropdown 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:

  1. Tick "Virtual — nothing to ship (no shipping cost or address at checkout)" (optional but usual).
  2. Tick "Downloadable — buyers get access to files".
  3. 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.
  4. Download limit — "Per file and per unit bought. Empty: unlimited."
  5. 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

8.3 Managing downloads on an order

Open the order → Downloads box:

Store → Download log lists every order with downloads.

8.4 Security notes

9.Gift Cards

9.1 Selling gift cards

  1. Create a product and tick "This product is a gift card" in Product data.
  2. Set preset amounts and/or allow a custom amount (with minimum and maximum).
  3. Buyers on the product page pick an amount, enter recipient name/email, a message, a sender and an optional send date.
  4. 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

10.Coupons

Store → Coupons → Add New. The coupon title is the code.

FieldPurpose
Discount typePercentage of the (sale-priced) subtotal, or a fixed amount off
AmountThe 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

11.2 Cart

11.3 Checkout

  1. 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.
  2. 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, or subscriber if that role doesn't exist). Later logins with the same email attach earlier guest orders (placed on 1.0.9+).
  3. Order notes (optional) — if enabled.
  4. 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."
  5. 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.
  6. 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

StatusPaid?Reserves stock?
Pending paymentNoNo
On holdNoYes
ProcessingYesYes
CompletedYesYes
DisputedYesYes (kept reserved)
CancelledNoNo (units returned)
RefundedNoNo (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

12.3 Refunds & chargebacks from providers

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

  1. Open an order → Shipment tracking box.
  2. Choose a carrier and enter the tracking number + date. Several shipments per order are supported.
  3. 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).
  4. The customer receives a "Your order has shipped" email with a Track your package button; tracking also shows on the order-received page.
  5. 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

15.Events & Ticketing

15.1 Creating an event

Events → Add New Event. Meta boxes:

Event details

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:

FieldNotes
Ticket namee.g. "Early Bird", "VIP"
Attendee typeSuggestions: Adult, Child, Student, Senior, Member, VIP
Price0 = free
Tickets available0 = no limit
Min per order / Max per order0 max = no limit
Sales start / Sales endOptional sales window
Description"What this ticket includes"
Dynamic pricingRules — 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
RuleMeaning
until DATE: price LabelThis price until the end of that day (add a time: until 2026-11-01 18:00: 20)
from DATE: price LabelThis price from that day on
after N%: priceOnce N% of seats are taken (this type's limit, else event capacity)
after N sold: priceOnce N tickets of this type are taken
qty N: price LabelEach 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

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):

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

15.9 Check-in

Three ways, all using the same code:

  1. Any phone camera scans the QR → opens the ticket page → staff who are logged in see a Check in button.
  2. 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.
  3. 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)

SettingDefaultNotes
Event page address (ev_slug)eventURL base → /event/<slug>/
After "Get tickets"Go to checkoutor cart / stay on page
Show tickets leftfrom settingdefault for new events
MapsGoogle MapsGoogle / OpenStreetMap / None
Google Maps Embed API key—optional; maps work without it
Reminder email (hours before)240 = off
Code on ticketsQR codeQR / Barcode (Code 128) / both
Attach PDF ticketson
Attach a calendar file (.ics)off
Email each attendee their own ticketoffwhen address differs from buyer
QR images in emailsEmbeddedor Linked (for restrictive mail plugins)
Ticket colour#7c5cfcprinted on PDF
Show the event image on PDF ticketsoffJPEG only
Ticket terms—printed at the bottom of the PDF
Allowed file types / Largest file (MB)jpg, jpeg, png, gif, webp, pdf, doc, docx / 5attendee 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

UnitShortcodePurpose & 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 / UnitShortcodeAttributes
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.

EmailTriggerContents
We've received your orderOrder placed (→ On hold/Processing)Items, options, totals, coupon, gift cards, tax, billing, download & ticket links
New orderSame, to the store ownerAdmin copy
Payment receivedOn hold → Processing
Your order is complete→ CompletedSkipped if a shipment email was just sent
Your order has shippedShipment addedTracking links + Track your package button
Custom-status emailse.g. Disputed, add-on statusesHeading + message defined per status
Gift card emailCard paid (or on the send date)Code, amount, message, expiry
Your ticket(s)Tickets issuedQR codes, PDF ticket(s), .ics
Attendee copyPer attendee (if enabled)That person's ticket
See you soon (reminder)N hours before the eventTickets 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

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

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.

↑ Top