# 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).&#x20;
* [**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#:~:text=WebSocket%20is%20a%20computer%20communications,protocol%20is%20known%20as%20WebSockets.) connection.
* **Native integrations**\
  Instruqt also supports native integrations to the following platforms:
  * [**Salesforce (Beta)**](/settings/integrations/salesforce.md)
  * [**HubSpot (Beta)**](/settings/integrations/hubspot.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.instruqt.com/settings/integrations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
