Project Description

Scott Howell, PhD sells professional development courses on WordPress with WooCommerce and Stripe, while the actual learning happens on a separate self-hosted Canvas LMS at courses.scotthowellphd.com. After a purchase, staff should not have to create Canvas users or enroll students by hand.

We built a custom WordPress plugin, Canvas Enroll for WooCommerce, that does that on payment. Each product has a Canvas tab with a course ID and access length (4, 8, or 12 weeks). When an order is paid, the plugin looks up the buyer by billing email, creates a Canvas user if needed, enrolls them as a student with an end date, and writes the result on the WooCommerce order.

Buyers get a course button on the thank-you page and in My Account, plus the same access note in the processing/completed order email, including how to sign in and set a password if they are new to Canvas. Admins can retry enrollment from the order screen. API credentials are encrypted in WordPress, or stored in wp-config.

Checkout on this host (including Stripe virtual products) was dropping the first enrollment run. We queued enrollment on payment complete, processing, completed, and thank-you, ran it on shutdown, and added an Action Scheduler backup so a slow or killed request still enrolls. Duplicate runs are blocked so the student is not enrolled twice.

The plugin follows normal WordPress and WooCommerce patterns (HPOS-compatible, order meta, product data tabs) so it can sit next to the existing store without a theme rewrite.