Skip to main content
LaunchLMS is a white-label learning platform used to run corporate universities and online course catalogues. The connector extracts your product catalogue and its contents, the participants enrolled in each product and how far along they are, their assessment and quiz results, and the commercial side of the operation — orders, transactions, coupons, affiliates and subscription plans — so you can analyse training engagement and revenue in your Lakehouse. Because LaunchLMS is white-labelled, every organization answers on its own domain, so you inform your own platform address when configuring the source.

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 the Authorization header. In your LaunchLMS platform, go to Settings > Integrations and open the API tab to generate and copy the token.
The integration token has super administrator privileges over your organization. Keep it private and rotate it periodically — you can generate a new one in the same screen at any time, and then update it here.
The following configurations are available:
  • Platform address: the address of your LaunchLMS platform, including https:// — the same address you use to sign in, for example https://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 user to 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.
Once you’re done, click Next.

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.
The Participant grades stream is read one enrolment at a time — one request per participant per product — so it is by far the slowest stream of the connector. Select it only when you actually need the assessment and quiz results.
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.
Select the streams and click Next.

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.
Once you are done configuring, click Next.

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.
Once you are ready, click Next to finalize the setup.

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.
For you to be able to see it on your Catalog, you need at least one successful source run.

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_symbol and currency_minor_unit. Use currency_minor_unit to 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_fields JSON column.
  • Form submissions return one key per question, named after the question text, so the answers are kept in an answers JSON 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 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_space
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_user
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_product
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_plan
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)
The lessons, files, quizzes and forms that make up each product (GET /api/organizations/{idOrganization}/products/{idProduct}/contents).Primary key: id_product, id_content
Enrolment plans offered for each product — price, instalments and how long access lasts (GET /api/organizations/{idOrganization}/products/{idProduct}/plans).Primary key: id_plan
Discount coupons created for each product, with how many confirmed orders redeemed them (GET /api/organizations/{idOrganization}/products/{idProduct}/coupons).Primary key: id_coupon
Affiliates promoting each product, with their coupon, sales volume and commission (GET /api/organizations/{idOrganization}/products/{idProduct}/affiliates).Primary key: id_affiliate
Products handed over as a bonus when someone enrols in another product (GET /api/organizations/{idOrganization}/products/{idProduct}/bonuses).Primary key: id_bonus
Ratings and written reviews participants left on each product (GET /api/organizations/{idOrganization}/products/{idProduct}/reviews).Primary key: id_review
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_order
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_user
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_user
Submissions of the forms listed in the Form IDs setting (GET /api/organizations/{idOrganization}/forms/{idForm}/formResponses).Primary key: id_form, id_form_response