Skip to content
HEY GEORGE · CUSTOMER SETUP GUIDE

Install once.
Keep repeat orders on schedule.

Subscription Orders for WooCommerce · PayFast + Stitch · commercial package v0.4.0

Using your plugin after installation

Read the How to use Subscription Orders guide for product rules, frequencies, discounts, branding, customer controls, basket amendments, payment recovery and procurement.

1. Get your ZIP and activation key

  1. Sign in at heygeorge.co.za/plugins/.
  2. Open My account → My plugins. Paid access appears after PayFast confirms your payment, not merely when the browser returns.
  3. Click Download plugin to save hey-george-subscriptions-0.4.0.zip.
  4. Open Show key and copy your activation key. It covers one production website. Keep the key private.

The same plugin ZIP is delivered to purchasers. Your personal activation key stays in your account; it is not bundled in the ZIP or sent as an email attachment.

You may extract a copy of the ZIP to read this guide. Upload the original, complete plugin ZIP into WordPress.

2. Install and activate on WordPress

Before starting: a public HTTPS WordPress website, WooCommerce active, WordPress 6.5+, PHP 8.1+ with OpenSSL and mbstring, ZAR currency and classic WooCommerce Cart/Checkout pages. Subscription order totals must be at least R5.

  1. Back up your website and test on staging first.
  2. Go to Plugins → Add New Plugin → Upload Plugin.
  3. Choose the ZIP, click Install Now, then Activate Plugin.
  4. Go to WooCommerce → Hey George Subscriptions → License.
  5. Paste your Hey George activation key and click Activate license. Confirm the website and paid access shown.
  6. Use [woocommerce_cart] on your Cart page and [woocommerce_checkout] on your Checkout page. This release does not support WooCommerce Blocks checkout.

WooCommerce is required; a paid WooCommerce Subscriptions extension is not. Official PayFast or Stitch gateway plugins are optional for ordinary one-off orders. This plugin provides its own subscription payment methods and settings.

Your Hey George licence is separate from payment-provider credentials. You still need an approved merchant account with each provider you enable. Customer card details are collected on the provider's hosted payment page.

3. Configure payments and subscription products

  1. Open PayFast settings and/or Stitch settings. Begin in sandbox mode.
  2. PayFast: enter the matching Merchant ID, Merchant Key and security passphrase. Recurring API use needs the security passphrase in both sandbox and live modes.
  3. Stitch: use an Express Client ID and Client Secret with recurring-consent access. Register the exact redirect and webhook URLs shown by the plugin. Add the webhook's Svix signing secret.
  4. In WooCommerce → Settings → Payments, enable the subscription methods you want customers to choose. Both can be enabled; one provider is chosen per subscription checkout.
  5. Open Categories or Products and set eligible items, frequencies and optional discounts. Product rules override category rules; products are not subscribed globally by default.
  6. Use Product page branding to set your label, image, colours and information popup.

Allow the public HTTPS payment notification endpoints through maintenance, login, caching and anti-bot protection. A return page alone does not confirm a payment.

When switching to live payments

Complete sandbox acceptance tests first. Use your approved live provider credentials and live modes. Ask your website administrator to back up and edit wp-config.php, adding this once before its “stop editing” line:

define('HGSO_ALLOW_LIVE_PAYMENTS', true);

This is a live-payment configuration gate, separate from the scheduler below. Never add sandbox credentials to live settings. Further provider-specific details are in INSTALLATION.md.

4. Keep renewals running without website visitors

WordPress's usual scheduler wakes when the site is visited. That can delay due orders on a quiet website. For a subscription store, configure the hosting scheduler to run once per minute. You do not need a Hey George hosted scheduling subscription when your hosting plan provides cron jobs.

Adding code to a page, a theme or the plugin cannot wake an idle server by itself. The job below belongs in the hosting control panel or server crontab. If you prefer, send HOSTING-SCHEDULER.txt to your hosting provider.

Option A — hosting control panel

  1. Open your hosting panel's Cron Jobs / Scheduled Tasks section. The wording varies between hosts.
  2. Add a job for this website's hosting user. Set every time field to *, or choose every minute.
  3. In its Command field, paste the command below. Replace YOUR-DOMAIN with your own website, including the WordPress subdirectory if applicable.
  4. Ask your host to confirm the installed curl path. If the HTTP request is blocked by site protection, ask them to use the local PHP alternative instead.
/usr/bin/curl --fail --silent --show-error --max-time 50 'https://YOUR-DOMAIN/wp-cron.php?doing_wp_cron' >/dev/null 2>&1

If the panel has separate time fields, enter only the command above in Command; do not include the five asterisks there.

Option B — full Linux crontab line

* * * * * /usr/bin/curl --fail --silent --show-error --max-time 50 'https://YOUR-DOMAIN/wp-cron.php?doing_wp_cron' >/dev/null 2>&1

Local PHP alternative — your hosting provider fills in the paths

* * * * * /PATH/TO/WEBSITE-PHP /ABSOLUTE/PATH/TO/WORDPRESS/wp-cron.php >/dev/null 2>&1

Use the PHP version and extensions that support this WordPress website, and run as its hosting user. The paths are host-specific; do not paste these placeholder paths unchanged.

Only after the external job is verified

WordPress recommends stopping the visitor-triggered runner once its external replacement works. Your administrator may add this once in wp-config.php before the “stop editing” line:

define('DISABLE_WP_CRON', true);

Do not add this before confirming the external job runs. Keep visitor cron enabled while testing if no replacement exists. Do not create two external jobs for the same site. Keep the one-minute job running and monitor failed actions; an offline server, blocked request, payment decline or provider outage can still delay an order.

Reference: WordPress: connect WP-Cron to the system task scheduler.

5. Confirm unattended renewal before going live

  1. Complete a sandbox subscription checkout and confirm the WooCommerce order is paid via a verified provider notification.
  2. Open the active sandbox subscription and choose Schedule sandbox renewal in 2 minutes.
  3. Do not visit the storefront, click a renewal button or manually run cron during the waiting period.
  4. After at least three minutes, check that a new renewal order exists and the sandbox payment was confirmed. Check the scheduled actions and notification logs for failures. The order/payment timestamps and hosting cron logs must show it ran before your return to WordPress; that return visit could otherwise wake a delayed visitor-triggered job.
  5. If it did not run, ask your host to inspect the scheduled task, PHP/curl paths and exit result. A blank wp-cron.php response alone does not prove the renewal was processed.
  6. Verify the store's own transactional emails reach the inbox, then perform a separately authorised controlled live payment/renewal before launch.

Do not schedule the same store orders separately inside PayFast or Stitch. This plugin schedules the store's renewals; creating another provider schedule can cause duplicate billing.

6. Downloads, support and updates

Return to your Hey George account to download the supplied release, copy your key, review connected websites or cancel future Hey George licence renewals. A confirmed cancellation keeps already paid access until its expiry; it does not refund an earlier payment.

Support and product updates are included while your Hey George plan is active. This release supplies updates through the account download; do not assume WordPress will offer an automatic in-dashboard update until an update feed is provided.

Existing store-customer renewals and subscription management continue if your Hey George plan expires. New subscription purchases and new licence activations require paid access. Your WooCommerce customers' subscriptions are separate from your Hey George software subscription.

Support: info@heygeorge.co.za. Give your plugin version, WordPress/WooCommerce versions and a redacted error description. Do not email card details, merchant secrets or your activation key.

Hey George · Subscription Orders for WooCommerce · Documentation for v0.4.0