Connect Novi Products to Forj Learn Courses
Journey by Forj can now be linked to your existing Novi AMS to gate access to Courses and Course Bundles in Forj Learn with purchases through Novi. After linking Learning opportunities to Novi Products, purchases for those Products in Novi are automatically registered in Forj, enrolling the Member 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].noviams.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 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, but these can be set to any value that is consistent with the External ID Mapping configured under SSO settings (see CONFIGURE EXTERNAL ID MAPPING below).
- Toggle on Enable Product Sync if desired.
- Toggle on Enable Event Sync if desired.
- 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.
This webhook registration happens once, the first time settings are saved successfully. Re-saving settings afterward does not re-register the webhook. Note also that this integration is one-directional: Forj reads product and purchase data from Novi, but does not send Member, enrollment, or purchase data back into Novi.
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.
- For details on General Novi OpenID Connect SSO configuration review related documentation here.
- In the Name field, ensure this value exactly matches the External ID namespace used in the Novi Commerce configuration.
- In the Identity Provider Field Name field, "sub" should be used. For Novi OIDC connections, sub is the claim that carries the unique user identifier from Novi.
- Save the SSO settings.
When processing Novi Purchases, Forj identifies existing User accounts with the Novi Member Id, creating new accounts if necessary with the appropriate External Id Namespace. On subsequent SSO Logins, the External Id mapping is then used to identify the Account eliminating the potential for duplicate accounts.
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 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.
When a product is linked, Forj automatically 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.
CONTROL COURSE VISIBILITY
Please note that Novi Purchasability and Visibility are not synced with the linked Novi product once linked. 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.
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.
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.