1. Not all LMS providers support the LTI specification

Some LMS providers don’t support the LTI specification. Both Google Classroom and Microsoft Teams - which have over 100 million users – are key examples. This means that edtech developers must use proprietary APIs to integrate. Because of this limitation, a product’s future growth strategy could be negatively impacted and/or require some future “hoops” for the product team to jump through.

2. Not all LMS providers support the LTI specification in the same way

Even if an LMS supports the LTI specification, there are still some quirks that could cause challenges when developing an LTI-compliant app for a specific LMS. For example, “LMS A” might use courses in a specific way that isn’t consistent with how “LMS B” uses courses. Knowing these quirks is key and requires developers to make tailored changes to each LTI-compliant app created for each LMS. When this happens, it could require even more development time (debugging and testing) to discover and solve these solutions. At some point, it might cost even more time and money building LTI specification integrations, than just building a secure API integration individually.

3. The experience for users may not be consistent

When an LTI-compliant app is launched, the app appears in an iframe inside of the LMS. This can restrict the user experience for some products. Many LMS providers allow their users to add LTI-compliant apps (or tools) to different placements in their LMS. A placement refers to the location on screen or context in the LMS where the user will launch the LTI-compliant application. Since placements can change where the user is launching the tool, it can alter the experience for the user. Imagine cutting a portion of your onboarding flow or only being able to showcase your product within a more restricted view.

4. The LTI specification cannot see enrollments outside of the class that it was launched from

When an educator launches an LTI-compliant tool from their LMS, the app can only read the enrollments of the educator(s) and students of that specific course. The app cannot see the enrollments of any other course that the teacher is a part of. If the app is not using the Names and Role Provisioning Service in LTI Advantage (the newest LTI specification version), then the app can’t even read the enrollments of any users in the course who have not yet launched into the LTI tool. This obviously can cause some issues if your app needs to roster users in advance.

5. The LTI specification cannot impact data

There are many valuable parts of the LMS that LTI specification integrations do not touch. For example, an LTI-compliant app cannot communicate with a user's calendar in their LMS through the LTI specification. This type of integration must be completed through the API. Or say if a learning institution formats a field in a certain way in their LMS that isn’t correct for the app. The LTI specification integration can’t transform that format or mask that PII. Instead, your product team might still have learning institutions manually input information in a certain way into the app – defeating the purpose of your integration altogether.


Sure, LTI specification integrations might meet all requirements needed “on paper”. Instead of building an LTI specification integration and retroactively fitting it to meet the product’s needs, however, we suggest a different approach. Dive further into what’s truly needed for the integration (functionality, user experience, data requirements, etc) and then determine if the LTI specification can meet these needs. This proactive approach will help developers better understand the context of their development to make smarter and more forward-thinking decisions for the product.

Updated | 5-16-24

Interested in LTI?

Read these other articles we've written on integrating with the LTI specification.

If you're looking for a partner who can help guide you through developing LMS integrations (like these), then let’s introduce ourselves. We’re Edlink!

Introducing Edlink
Our Mission at Edlink
What is the Edlink Unified API