Connect Novi Products to Forj Learn Courses
Forj Learn can now be linked to your existing Novi AMS store to gate access to Courses and Course Bundles in Forj Learn with purchases made through Novi. When a Member purchases a course or bundle through Novi, they are automatically enrolled in the corresponding course in Forj Learn. This article explains how Admins configure the integration on both the Novi and Forj sides, link products to courses and course bundles, and control course visibility during setup.
Table of Contents
Configure SSO External ID Mapping
Connect Novi Product to Course or Bundle
BEFORE YOU BEGIN
Admins must have administrative access to both Novi and the Forj Community to complete this setup. The configuration requires steps in both systems, starting with Novi.
The Forj Novi SSO integration must already be configured before completing this setup. Specifically, the External ID mapping in Forj must be set up as described in the CONFIGURE SSO EXTERNAL ID MAPPING section below; this is required for the commerce integration to correctly match Novi purchasers to their Forj accounts.
SETUP API ACCESS IN NOVI
The first step is generating an API key in Novi that Forj will use to connect to the Novi store.
- Click the gear icon in the Novi header.
- Navigate to API Keys.
- Click the button to create a new API key.
- Enter a descriptive name for the key (for example, "Forj Learn").
- Under Integration Type, select Forj Learn (Formerly Webcourseworks).
- Under Scopes, confirm that Commerce Data is selected. No other scopes are required, although "member" and "event" can be selected now to support potential future enhancements.
- Save the key.
- Click into the newly created key to open its detail view.
- Copy the API Key value and store it temporarily.
- Copy the Signing Secret value and store it temporarily. Both values are needed in the next section.
SETUP NOVI COMMERCE IN FORJ
With the API credentials from Novi in hand, Admins configure the connection on the Forj side.
- Navigate to Community Settings > Commerce.
- Click on Novi Commerce.
- In the Web Service Endpoint field, enter the URL of the Novi instance (for example, https://[your-organization].noviaims.com). Copy this value directly from the browser address bar rather than typing it manually to avoid errors.
- Paste the Novi API Key into the associated text box.
- Paste the Webhook Secret (also referred to as the Signing Secret) copied from Novi into the corresponding field. Double-check that the Webhook Secret is copied exactly. If it does not match, Novi purchase notifications will fail signature verification and will not be processed. Novi is not shown an error in this case, so a mismatched Webhook Secret can go unnoticed until Members report that they were not enrolled after purchasing.
- Review the External ID Namespace fields for both users and products. Default values are provided (for example, noviams-user-id and noviams-product-id), but these can be set to any value that is consistent with the External ID Mapping configured under SSO settings (see CONFIGURE SSO EXTERNAL ID MAPPING below).
- Toggle on Enable Product Sync if desired.
- Toggle on Enable Event Sync if desired. [EDITOR NOTE: Confirm current functionality of Event Sync before publishing. As of this writing, this toggle has no confirmed effect in the product.]
- Toggle on Require purchase for free products if desired. This setting ensures that all commerce is routed through Novi, regardless of transaction value. If not enabled, if there isn't a price associated with the Product in Novi, users may immediately enroll without a commerce transaction.
- Click the Save Changes button.
When the settings are saved, Forj registers webhook listeners with Novi. From this point forward, Forj will automatically receive notifications when a purchase is completed in the Novi store and will enroll the buyer in the linked course.
CONFIGURE SSO EXTERNAL ID MAPPING
External ID mapping is a required step that ensures Forj can reliably match a Novi purchaser to their Forj account when processing a commerce order.
When Forj processes a purchase from Novi, it looks up the buyer in the following order: first by External ID, then by email address. Configuring the External ID mapping ensures the most reliable match and is required for the commerce integration to function correctly.
- Navigate to the SSO configuration for the Novi OIDC integration in the Forj admin settings. For details on general Novi OpenID Connect SSO configuration, review the related documentation. [EDITOR NOTE: Confirm the exact navigation path to this setting - e.g., Community Settings > Authentication or similar.]
- Locate the External ID Mapping section.
- In the Name field, enter a namespace that identifies Novi as the source, for example noviams-user-id. Ensure this value exactly matches the External ID namespace used in the Novi Commerce configuration.
- In the Identity Provider Field Name field, enter sub. For Novi OIDC connections, sub is the claim that carries the unique user identifier from Novi.
- Save the SSO settings.
When a purchase is processed, Forj creates an External ID record for the buyer using the namespace and the value of the sub claim from their Novi account. On subsequent sign-ins via SSO, Forj uses this External ID to locate the correct account, no separate password is required, and no duplicate account is created.
CONNECT NOVI PRODUCT TO COURSE OR BUNDLE
- Navigate to the desired Course or Bundle.
- Navigate to the Access page.
- Click the Add external product link under Linked Novi Product.
- Select the corresponding Novi Product or Event from the dropdown. Note this will list all products that exist in Novi, regardless if they are currently active or visible in the Novi store, excluding any that have already been mapped to a Course or Bundle in Forj Learn.
- Click the Save button.
Multiple Novi products can be linked to a single course. For example, if the same course is sold under different product names for different member segments, each Novi product can be mapped to the same Forj Learn course. However, each Novi product can only be linked to one course at a time.
When a product is linked, Forj immediately backfills any existing purchases (typically within a few minutes, since this runs on a recurring background check rather than instantly). Members who previously bought that Novi product will be enrolled in the course and will receive a course welcome message.
When a Novi Product is linked, Forj also imports both the Member Price and Non-Member Price configured on that product in Novi and applies them automatically: logged-in Members who qualify for Novi's member pricing see the Member Price, other Members see the Non-Member Price, and unauthenticated visitors browsing the public catalog see the full price range. This pricing comes entirely from Novi - Forj Learn's native Conditional Pricing (based on Membership Tiers) does not apply to Novi-linked courses. [EDITOR NOTE: A previous version of this article stated that the Course Product page displays the nonmember price even if a member price exists in Novi, and that checkout behavior may vary when a course is linked to a Novi product priced at $0. Confirm which pricing behavior is correct before publishing.]
CONTROL COURSE VISIBILITY
Please note that Novi Purchasability and Visibility are not synced with the linked Novi product once linked. Admins can configure courses and test the integration before making any content visible to Members. The following settings control what Members see in Forj Learn.
Publishing a course makes it visible in the native course catalog to any Member who has access to the Community and is not restricted by Group settings. Publishing a course does not automatically enable enrollment.
The Allow Learners to Enroll setting controls whether a call-to-action button (such as Purchase or Enroll) appears on the course's product page. If this setting is off, Members can see the course listing but cannot enroll or purchase.
Group-based visibility restrictions allow Admins to limit who can see a course to specific Groups. Admins can create an internal test Group, restrict a course to that Group, and configure the full integration flow before any Members outside that Group are aware the course exists.
Recommended approach for pre-launch testing: Restrict the course to a private test Group, enable learner enrollment, and use a Member-level test account to walk through the full purchase and enrollment experience. Once the setup is confirmed, remove the Group restriction to make the course available to all eligible Members.
HOW ENROLLMENT WORKS
When a Member completes a purchase in the Novi store for a product that is linked to a Forj Learn course, the following occurs automatically.
- Forj looks up the buyer first by External ID (using the namespace configured in the External ID mapping), then by email address if no External ID match is found. If the buyer does not yet have a Forj account, one is created using their email address and name from Novi. The Novi ID itself is not stored on the account but is used to create the External ID mapping described below.
- An External ID record is always created for the buyer when their order is processed, regardless of whether they already had a Forj account. This ensures that future sign-ins via Novi SSO correctly locate the account that was created or matched during the purchase.
- Note: account creation from a Novi purchase is not subject to a Community's self-registration restrictions (for example, invite-only or domain-restricted Communities). A Novi purchase can create a new Forj account even in Communities that otherwise block self-registration.
- The Member is enrolled in the course and receives a welcome message. [EDITOR NOTE: Confirm the exact content and sender of this welcome message. As of this writing, the welcome message is not customizable.]
The Member can access the course by following the link in the welcome message. If they are not already signed in, they are taken to the Novi sign-in page. After signing in with their Novi credentials, they are directed to their course.
REFUNDS AND CANCELLATIONS
If a purchase is refunded or canceled in Novi, Forj does not receive this in real time. A daily reconciliation check looks back up to six months for canceled orders and, when one is found, removes the Member's access to the course. The Member's enrollment record itself is not deleted, but any course access, certificates, or credits tied to that purchase are revoked. Community Managers should allow up to 24 hours for a Novi cancellation to be reflected in Forj Learn. [EDITOR NOTE: A previous version of this article stated that a Member is not automatically unenrolled from the course in Forj when an order is cancelled or refunded in Novi. Confirm the correct behavior before publishing.]
LIMITATIONS
- Novi Commerce pricing is always displayed and charged in US Dollars. There is no multi-currency support.
- Disconnecting Novi Commerce from a Community is destructive and cannot be undone: it removes the webhook registration, disables enrollment on previously paid courses, and deletes all linked product and price records for the Community. Reconnecting Novi afterward requires reconfiguring the integration and re-linking products from scratch.
- Only new purchases (the Novi order.created event) are delivered to Forj in real time via webhook. Cancellations and refunds are only detected by the daily reconciliation check described above, not immediately.