Someone buys your course at 11 p.m. Shopify takes the payment and sends a receipt. Then nothing happens until you see the order the next morning, copy the customer's email into your LMS, create their account, and enroll them in the right course.
That works for the first few sales. It stops working when orders arrive on a weekend, when two people on your team handle the same order, or when a customer buys a second course and ends up with two accounts.
A Shopify to LMS integration turns a paid Shopify order into a learner account and a course enrollment, so the customer can start the training they paid for without anyone copying details between systems. Shopify stays responsible for the store, checkout, and payment. The LMS is responsible for the course, the learner's progress, and the certificate at the end.
This guide walks through that workflow with Edaxu and Zapier. It covers the setup, the fields that matter, and the cases worth testing before you take a real order: repeat purchases, refunds, orders with more than one course, and someone buying a seat for a colleague.
The screenshots show the actual Edaxu application and Zapier editor, captured October 11, 2026 in our Edaxu Academy demo portal. No Shopify store was connected for this walkthrough: the store, order, line item, and variant values are test values typed into the Zapier step, and the learner is our demo account. Select an image to enlarge it.
Why not sell courses inside the LMS?
Some LMS platforms include a basic checkout. If you already run a Shopify store, though, you probably want to keep it. Your products, discounts, taxes, payment settings, and customer history are already there, and you may sell physical items such as printed manuals or exam kits alongside the training.
Keeping the store in Shopify means the LMS only has to answer one question for each order: which course does this purchase give access to, and for whom?
The workflow at a glance
| Step | Where it happens | What to check |
|---|---|---|
| A customer pays for a course product | Shopify | The product variant is the one you mapped to a course |
| Zapier receives the paid order | Zapier | The trigger fires on paid orders, not on draft or unpaid ones |
| Zapier sends the purchase to Edaxu | Zapier, using the Edaxu app | The order, line item, variant, and customer fields are mapped |
| Edaxu finds or invites the learner | Edaxu | A returning customer is matched by email instead of duplicated |
| Edaxu enrolls the learner in the mapped course | Edaxu | The enrollment appears in the right portal and course |
| The learner completes the course and earns a certificate | Edaxu | The course's certificate settings are what you expect |
1. Decide what each product gives access to
Before you connect anything, write down which Shopify product grants which course.
Edaxu matches purchases by Shopify variant, not by product title. A product with a single option still has one variant. A product with options such as "Online only" and "Online plus printed workbook" has one variant for each, and each variant can point to a course.
That gives you a simple rule for setup: one variant, one course. If a bundle should unlock three courses, plan how you will handle it before launch, because a single mapping points to a single course.
Also decide how long access should last. The enrollment action accepts an optional start date and end date, so a variant can represent a year of access, or a course that opens on a set date for a scheduled cohort. If you leave them empty, the enrollment starts when the order is processed and has no end date.
2. Connect your Edaxu portal to Zapier
Edaxu's Zapier app is currently installed by invitation. In Edaxu, open Integrations in the administration menu and choose Zapier. The setup page has the invitation link and the values Zapier asks for.
Setup has three parts:
- Create a connection. Select New connection, give it a name that identifies the Zap that will use it, such as "Shopify course purchases," and grant only the permissions that Zap needs. Copy the API key when it appears. It is shown only once.
- Install the Edaxu app. Select Open Zapier app setup and accept the private app invitation for your Zapier account.
- Connect your portal in Zapier. Add an Edaxu account in Zapier and enter the API domain, API key, and portal subdomain shown on the setup page.
A connection belongs to one portal. If you run separate client training portals, learners enrolled through a connection land in that connection's portal, so check which portal you are connecting before you build the Zap.
For a Shopify enrollment Zap, the connection needs four permissions: Course · List, Enrollment · Create, User · Read Any, and Portal · Invite User. Leave the rest unchecked. Edaxu recommends one connection per workflow, so you can change or revoke the Shopify Zap's access without touching your other automations.
3. Map each Shopify variant to a course
Next, tell Edaxu which course each variant unlocks. The Edaxu Zapier app has an action for this called Link Shopify Variant to Course. It takes your store's domain (for example, your-store.myshopify.com), the variant ID, and the Edaxu course.
You do this once per variant, not once per order. You can run it from a small separate Zap and test it once for each course product before the store goes live. If you later change which course a variant unlocks, run the action again with the new course and the mapping is updated. Orders that have already been processed keep the enrollment they received.
If an order arrives for a variant that has no mapping, Edaxu rejects that step with the message "Shopify variant is not mapped to a course." The Zap run shows as an error in Zapier, which is what you want: a missing mapping should be visible, not silently skipped.
4. Build the Zap
In Zapier, start with Shopify as the trigger and choose the event for a new paid order. Then add an Edaxu step and choose Enroll Shopify Purchase.
Map these fields from the Shopify order:
| Edaxu field | Map it to | Why it matters |
|---|---|---|
| Shopify Store Domain | Your store's myshopify.com domain | Identifies which store's mappings to use |
| Shopify Order ID | The order ID | Part of how Edaxu recognizes a repeat delivery of the same order |
| Shopify Line Item ID | The ID of the course line item | Lets one order contain more than one course |
| Shopify Variant ID | The line item's variant ID | Selects the mapped course |
| Customer Email, First Name, Last Name | The customer on the order | Finds the existing learner or invites a new one |
| Start Date Timestamp, End Date Timestamp | Optional, as Unix timestamps | Sets an access window for this purchase |
| Notes | Optional | Useful for the order number or campaign |
| Re-enrollment Mode | Restart (the default) or resume | Controls what happens if the learner already finished this course |
When the step runs, Edaxu looks up the learner by email in the connected portal. If they already have an account, the enrollment is added to it. If they don't, Edaxu invites them, and they set up their account from the invitation.
Orders with more than one course
Each Enroll Shopify Purchase step handles one line item. If a customer can buy two courses in one order, the Zap needs to send each course line item separately, for example with a looping step in Zapier. Test this with a two-course order before launch.
5. Place a test order and check the result
Use a test order rather than waiting for the first real customer. Then open Edaxu and check the learner, the course, and the enrollment dates.
Things to confirm:
- The learner is in the portal you intended.
- The course is the one mapped to the variant you bought.
- The access dates match what you set.
- The invitation reached the test inbox and the account could be set up from it.
Then send the same test order through again. When we did, Edaxu returned the same enrollment ID and marked the response as a replay. No second enrollment was created.
What happens in the awkward cases
The first real week of sales usually produces at least one of these. It is easier to decide how to handle them now.
| Situation | What Edaxu does | What you should decide |
|---|---|---|
| Zapier delivers the same order twice | Recognizes the same store, order, and line item and returns the original enrollment | Nothing, but check it once in testing |
| The variant has no mapping | Rejects the step, and the Zap run shows an error | Who watches Zapier for failed runs |
| A customer buys a course they are still taking | Returns their current enrollment and changes nothing | Nothing |
| A customer buys a course they already finished | With Restart, creates a new enrollment and keeps the earlier record. With Resume, reopens the earlier enrollment for a new access period | Which mode fits your repeat purchases |
| A customer buys a course for a colleague | Enrolls the email on the order | Whether to collect the learner's email at checkout and map that field instead |
| A customer buys five seats for their team | Enrolls one person, the email on the order | Whether team purchases need a separate process, such as a team portal for that company |
| A customer requests a refund | Nothing automatically. Edaxu's Zapier app does not currently include an action that removes an enrollment | Who ends access in Edaxu when a refund is issued |
The refund case is the one most providers forget. Write it into your refund process: when you issue a refund in Shopify, someone ends the matching enrollment in Edaxu.
After the enrollment: progress, certificates, and follow-up
Once the learner is enrolled, the rest happens in the LMS. They work through the course, you can see their progress, and if the course issues a certificate, they receive it on completion with a public verification link.
You can also send information back the other way. The Edaxu Zapier app has five triggers: Learner Enrolled, Course Completed, Certificate Issued, User Invited to Portal, and User Joined Portal. A provider might use the completion event to tag the customer in their email tool, or the certificate event to send a follow-up offer for the next course.
If some of your customers are companies that already have their own LMS, a Shopify store and a learner account may not be what they want. SCORM Dispatch lets them launch your hosted course from their own system instead.
Try it with one product
Start with a single product and a single course. Map the variant, build the Zap, and place a test order. Then try the cases that matter to your business: a repeat purchase, a two-course order, and a refund.
You can start a 30-day Edaxu trial with no credit card, or read more about how Edaxu works for training providers who sell courses.
Frequently Asked Questions
Can I sell online courses on Shopify?
Yes. Shopify can sell a course as a product like any other. To deliver the training, connect the paid order to an LMS so the buyer gets an account and an enrollment. With Edaxu, that connection runs through Zapier.
Does Edaxu integrate with Shopify?
Edaxu connects to Shopify through Zapier. A Zap triggered by a paid Shopify order uses the Edaxu action Enroll Shopify Purchase, which finds or invites the customer and enrolls them in the course mapped to the purchased variant.
What happens if Zapier sends the same order twice?
Edaxu recognizes a purchase by its store, order ID, and line item ID. If the same purchase arrives again, Edaxu returns the existing enrollment instead of creating a second one.
Can a Shopify product unlock more than one course?
Each Shopify variant maps to one Edaxu course. For a bundle, plan how the order will create each enrollment, and test it before launch.
Do refunds remove course access automatically?
No. Edaxu's Zapier app does not currently include an action that removes an enrollment. Include ending access in Edaxu as a step in your refund process.
Can I limit how long a buyer has access to the course?
Yes. The enrollment action accepts optional start and end dates, so each purchase can carry its own access window.
