> For the complete documentation index, see [llms.txt](https://docs.instruqt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instruqt.com/settings/integrations.md).

# Integrations

You can integrate Instruqt with external systems such as a **Learning Management System (LMS)** like SkillJar or a **Customer Relationship Management (CRM)** system like HubSpot. Instruqt has the following ways to integrat&#x65;**:**

* [**Embedded tracks**](/tracks/share/embed-a-track.md)\
  When you embed a track into a (landing) page on an LMS or CRM, you have the following integration options:
  * [**Embed custom parameters**](broken://pages/8WXGCEYOYg2e9cmkRgw2#embed-custom-parameters)\
    Which enables you to send custom parameters to embedded tracks. For example, the learner's user id in an LMS. Instruqt propagates such custom parameters to [webhook events](/settings/platform/webhooks.md), which you can process in your external system. For instance, modify the learner's progress when you catch a `track.completed` event.
  * [**Embed event callbacks**](broken://pages/8WXGCEYOYg2e9cmkRgw2#embed-event-callbacks)\
    Which enables you to receive event information from embedded tracks you can process in JavaScript. For example, processing a `track.completed` event to store the learner's progress in an LMS, or `track.sandbox_ready` to inform the user their track is ready to play.
  * [**Embed using one time play tokens**](broken://pages/b22ffld1GxlY23m2Lsy2)\
    Which enables a more secure way to embed tracks, only allowing a single play for every generated token.
* **Custom parameters on invite links**\
  When you share tracks through an [invite link](/tracks/share/track-invite-links.md), you can send custom parameters to the invite and it's associated plays. For example, the source of traffic for an invite link, or the learner's contact id in a CRM. Instruqt propagates such custom parameters to [webhook events](/settings/platform/webhooks.md), which you can process in your external system. Passing on custom parameters to invite links work identical to [Embed custom parameters](broken://pages/8WXGCEYOYg2e9cmkRgw2#embed-custom-parameters).
* [**Webhooks**](/settings/platform/webhooks.md)\
  A webhook is an API driven by events rather than requests and allows Instruqt to send data to an external system when an event like `track.completed` occurs.
* **APIs**\
  Instruqt supports the following APIs:
  * [**GraphQL API**](/settings/platform/api.md)\
    Which lets you query and update data with queries and mutations in JSON format.
  * **WebSocket API**\
    Which lets you request track log data through a [WebSocket](https://en.wikipedia.org/wiki/WebSocket) connection.
* **Native integrations**\
  Instruqt also supports native integrations to the following platforms:
  * [**Salesforce**](/settings/integrations/salesforce.md)
  * [**HubSpot (Beta)**](/settings/integrations/hubspot.md)
