Configuring LaunchLMS as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the LaunchLMS option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
LaunchLMS authenticates with a static integration token, sent in theAuthorization header. In your LaunchLMS platform, go to Settings > Integrations and open the API tab to generate and copy the token.
The following configurations are available:
-
Platform address: the address of your LaunchLMS platform, including
https://— the same address you use to sign in, for examplehttps://cursos.yourcompany.com.br. Required. - Organization ID: the identifier of the organization you want to sync. Open your organization’s settings in LaunchLMS and copy the code shown in the browser address bar. Required.
- Integration token: the token copied from Settings > Integrations > API. Required.
- Initial sync date: the earliest date from which records will be synced. It applies to the Transactions stream, the only endpoint LaunchLMS lets the connector filter by date; every other stream is always read in full.
- Form IDs (advanced): the identifiers of the forms whose submissions you want to sync. LaunchLMS has no endpoint that lists an organization’s forms, so each one has to be informed here — open the form in the platform and copy the code shown in the browser address bar. Leave it empty to skip the Form responses stream.
-
Profiles to sync (advanced): leave it empty to sync every profile of the organization, or choose
userto sync only the learners and leave administrator accounts out of the Users stream. - Page size (advanced): the number of records requested per page on the paginated endpoints. The default of 100 works for most platforms; lower it if your platform times out on large listings.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.
Most streams are read per product: the connector lists your products and then reads the contents, plans, coupons, affiliates, bonuses, reviews, orders and participants of each one. Extraction time therefore grows with the size of your catalogue.
Only read operations are covered. LaunchLMS also exposes routes that create users, enrolments and subscriptions; those are write operations and are not part of this connector.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: Transactions supports INCREMENTAL; every other stream is full table, since LaunchLMS exposes no “modified since” filter on the remaining endpoints. Read more about Sync Types here.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.How the data is modelled
A few conventions are worth knowing before you query these tables:- Nested payloads — the plans of a product, the resources of a content, the participants of an order, the grades of an enrolment — are stored as JSON text columns rather than nested structures, so the table shape never changes when LaunchLMS adds a field. Read them with
JSON_VALUE(column, '$.field'). - The currency of every monetary value is unpacked into
currency_code,currency_symbolandcurrency_minor_unit. Usecurrency_minor_unitto know how many decimal places the amounts carry. - Products and subscription plans carry further configuration whose presence depends on your platform settings; those extra fields are kept together in an
additional_fieldsJSON column. - Form submissions return one key per question, named after the question text, so the answers are kept in an
answersJSON object keyed by the original question titles. Submissions have no identifier of their own in LaunchLMS, so the connector derives a stable one from the content of the submission.
Streams and Fields
Below you’ll find all available data streams from LaunchLMS and their corresponding fields.Spaces
Spaces
Spaces of the organization — the branded areas products are published in (
GET /api/organizations/{idOrganization}/spaces). Every participant belongs to one, so it is the dimension used to split reporting by brand or business unit.Primary key: id_spaceUsers
Users
Every user registered in the organization, learners and staff alike (
GET /api/organizations/{idOrganization}/users). This is the people dimension the enrolments join back to.Primary key: id_userProducts
Products
The catalogue: courses, trainings, events, communities, ebooks and learning paths (
GET /api/organizations/{idOrganization}/products). Every product-scoped stream below expands from this one.Primary key: id_productSubscription plans
Subscription plans
Recurring plans sold by the organization (
GET /api/organizations/{idOrganization}/subscriptionPlans), as opposed to the one-off enrolment plans attached to a single product.Primary key: id_subscription_planTransactions
Transactions
Every payment movement of the organization, for both orders and subscriptions (
GET /api/organizations/{idOrganization}/transactions). This is the only stream replicated incrementally.Primary key: id_transactionReplication key: issue_date (incremental sync)Product contents
Product contents
The lessons, files, quizzes and forms that make up each product (
GET /api/organizations/{idOrganization}/products/{idProduct}/contents).Primary key: id_product, id_contentProduct plans
Product plans
Enrolment plans offered for each product — price, instalments and how long access lasts (
GET /api/organizations/{idOrganization}/products/{idProduct}/plans).Primary key: id_planProduct coupons
Product coupons
Discount coupons created for each product, with how many confirmed orders redeemed them (
GET /api/organizations/{idOrganization}/products/{idProduct}/coupons).Primary key: id_couponProduct affiliates
Product affiliates
Affiliates promoting each product, with their coupon, sales volume and commission (
GET /api/organizations/{idOrganization}/products/{idProduct}/affiliates).Primary key: id_affiliateProduct bonuses
Product bonuses
Products handed over as a bonus when someone enrols in another product (
GET /api/organizations/{idOrganization}/products/{idProduct}/bonuses).Primary key: id_bonusProduct reviews
Product reviews
Ratings and written reviews participants left on each product (
GET /api/organizations/{idOrganization}/products/{idProduct}/reviews).Primary key: id_reviewProduct orders
Product orders
Enrolment orders placed for each product, whatever their payment state (
GET /api/organizations/{idOrganization}/products/{idProduct}/orders). Join to Transactions on id_order for the money movements.Primary key: id_orderProduct participants
Product participants
Enrolments: who is taking each product and how far along they are (
GET /api/organizations/{idOrganization}/products/{idProduct}/users). This is the core stream for learning reporting — progress, status and last access date.Primary key: id_product, id_userParticipant grades
Participant grades
Assessment and quiz results of one participant in one product (
GET /api/organizations/{idOrganization}/products/{idProduct}/users/{idUser}/grades). LaunchLMS exposes grades one enrolment at a time, so this stream issues one request per participant per product.Primary key: id_product, id_userForm responses
Form responses
Submissions of the forms listed in the Form IDs setting (
GET /api/organizations/{idOrganization}/forms/{idForm}/formResponses).Primary key: id_form, id_form_response