LTI integration is available on institutional plans. Contact [email protected] to get started.
What is LTI?
LTI (Learning Tools Interoperability) is a standard developed by IMS Global that allows LMS platforms to securely launch external tools. With LTI 1.3, authentication uses OpenID Connect (OIDC) and JWT tokens — no passwords are shared between systems.Benefits
- Single sign-on — teachers and students launch Formswrite from the LMS with one click
- No separate accounts — users are automatically provisioned via LTI
- Secure — uses industry-standard OIDC authentication with public/private key verification
- Context-aware — Formswrite knows which course and user is launching the tool
Supported LMS platforms
Formswrite works with any LMS that supports LTI 1.3, including:Moodle
Version 3.7+ with LTI 1.3 support.
Canvas
Instructure Canvas with LTI 1.3 Developer Keys.
Blackboard
Blackboard Learn with LTI 1.3 tool registration.
Brightspace (D2L)
Desire2Learn Brightspace LTI Advantage.
Schoology
Schoology with LTI 1.3 app configuration.
Sakai
Sakai CLE with External Tools support.
Setup overview
Setting up LTI involves two sides:- Register Formswrite as a tool in your LMS — provide Formswrite’s URLs to your LMS
- Register your LMS as a platform in Formswrite — provide your LMS’s URLs to Formswrite
Formswrite tool URLs
When configuring your LMS, you’ll need to enter these Formswrite URLs:| Setting | URL |
|---|---|
| Tool URL / Launch URL | https://api.formswrite.com/api/lti/callback |
| Login Initiation URL | https://api.formswrite.com/api/lti/login |
| Public Keyset URL (JWKS) | https://api.formswrite.com/api/lti/jwks |
| Redirection URI | https://api.formswrite.com/api/lti/callback |
Moodle setup
Add Formswrite as an external tool
- In Moodle, go to Site Administration → Plugins → Activity modules → External tool → Manage preconfigured tools
- Click Add preconfigured tool
- Fill in the following:
| Field | Value |
|---|---|
| Tool name | Formswrite |
| Tool URL | https://api.formswrite.com/api/lti/callback |
| LTI version | LTI 1.3 |
| Public keyset | https://api.formswrite.com/api/lti/jwks |
| Initiate login URL | https://api.formswrite.com/api/lti/login |
| Redirection URI(s) | https://api.formswrite.com/api/lti/callback |
- Under Services, set IMS LTI Names and Role Provisioning to Use this service to retrieve members’ information as per privacy settings
- Under Privacy, set:
- Share launcher’s name: Always
- Share launcher’s email: Always
- Under Miscellaneous, set:
- Default launch container: New window
- Tool configuration usage: Show in activity chooser and as a preconfigured tool
- Click Save changes
Copy the platform details from Moodle
After saving, Moodle generates a Client ID. Click the edit icon on the Formswrite tool to find it.You’ll need these values from your Moodle instance (replace
yourmoodle.com with your domain):| Setting | Value |
|---|---|
| Issuer | https://yourmoodle.com |
| Client ID | (generated by Moodle — shown on the tool config page) |
| Auth Login URL | https://yourmoodle.com/mod/lti/auth.php |
| Access Token URL | https://yourmoodle.com/mod/lti/token.php |
| JWKS URL | https://yourmoodle.com/mod/lti/certs.php |
For Moodle Cloud (moodlecloud.com), the URLs follow the same pattern:
https://yoursite.moodlecloud.com/mod/lti/auth.php, etc.Register the platform in Formswrite
- Log in to Formswrite and go to LTI Platforms in the sidebar
- Click Add Platform
- Enter the platform details from step 2
- Click Save
Canvas setup
Create a Developer Key
- In Canvas, go to Admin → Developer Keys
- Click + Developer Key → + LTI Key
- Set the method to Manual Entry and fill in:
| Field | Value |
|---|---|
| Key Name | Formswrite |
| Redirect URIs | https://api.formswrite.com/api/lti/callback |
| Target Link URI | https://api.formswrite.com/api/lti/callback |
| OpenID Connect Initiation URL | https://api.formswrite.com/api/lti/login |
| JWK Method | Public JWK URL |
| Public JWK URL | https://api.formswrite.com/api/lti/jwks |
- Click Save and note the Client ID (a long number shown in the Details column)
- Set the key state to ON
Add the external tool to a course
- Go to Course Settings → Apps → + App
- Configuration type: By Client ID
- Enter the Client ID from step 1
- Click Submit and Install
Register the platform in Formswrite
- In Formswrite, go to LTI Platforms → Add Platform
- Enter these values:
| Setting | Value |
|---|---|
| Issuer | https://canvas.instructure.com (or your Canvas domain) |
| Client ID | (from step 1) |
| Auth Login URL | https://canvas.instructure.com/api/lti/authorize_redirect |
| Access Token URL | https://canvas.instructure.com/login/oauth2/token |
| JWKS URL | https://canvas.instructure.com/api/lti/security/jwks |
For self-hosted Canvas, replace
canvas.instructure.com with your Canvas domain.- Click Save
Blackboard setup
Register Formswrite as an LTI tool
- In Blackboard, go to System Admin → Integrations → LTI Tool Providers
- Click Register LTI 1.3/Advantage Tool
- Enter the Client ID (you’ll get this after registering the tool)
| Field | Value |
|---|---|
| Tool Provider URL | https://api.formswrite.com/api/lti/callback |
| Tool Provider OIDC Auth URL | https://api.formswrite.com/api/lti/login |
| Tool Provider JWKS URL | https://api.formswrite.com/api/lti/jwks |
- Click Submit
- Copy the Application ID, Deployment ID, and other platform details
General LTI 1.3 setup
For any LMS not listed above, the process follows the same pattern:- In your LMS, register a new LTI 1.3 external tool using the Formswrite tool URLs listed above
- Your LMS will generate a Client ID and provide its own platform URLs (issuer, auth endpoint, token endpoint, JWKS URL)
- In Formswrite, go to LTI Platforms → Add Platform and enter those platform URLs
- Add the tool to a course and test the launch
How the launch flow works
When a user clicks the Formswrite activity in their LMS:Managing platforms
Site administrators can manage LTI platform registrations from the LTI Platforms page in the Formswrite dashboard sidebar.| Action | Description |
|---|---|
| Add Platform | Register a new LMS connection |
| Edit | Update platform URLs or credentials |
| Activate / Deactivate | Temporarily disable a platform without deleting it |
| Delete | Permanently remove a platform registration |
Troubleshooting
Launch fails with 'Platform not found'
Launch fails with 'Platform not found'
The Issuer URL in Formswrite must exactly match what the LMS sends. Check for:
- Trailing slashes (
https://moodle.comvshttps://moodle.com/) - Protocol (
https://vshttp://) - Subdomain (
www.moodle.comvsmoodle.com)
Launch opens a blank page or times out
Launch opens a blank page or times out
This is usually a cookie issue. LTI launches happen in iframes or popups, and some browsers block third-party cookies. Solutions:
- Set the LMS tool to open in a new window (not embedded)
- Ensure your browser allows third-party cookies for
formswrite.com
User lands on sign-in page instead of dashboard
User lands on sign-in page instead of dashboard
The session cookie may not have been set. Check that:
- The Redirection URI in your LMS matches
https://api.formswrite.com/api/lti/callback - Your LMS is sending the user’s email in the LTI payload (check privacy settings)
'Access Denied' when opening LTI Platforms page
'Access Denied' when opening LTI Platforms page
The LTI Platforms admin page is restricted to Formswrite site administrators. Contact your admin to have your email added to the authorized list.
Client ID mismatch error
Client ID mismatch error
Ensure the Client ID registered in Formswrite exactly matches the one generated by your LMS. Copy-paste it to avoid typos.
Security
Formswrite’s LTI implementation follows best practices:- JWT verification — all launch tokens are verified against the platform’s public JWKS endpoint
- State and nonce — stored in Redis with a 10-minute TTL to prevent replay attacks
- HTTPS only — all LTI endpoints require HTTPS
- No shared secrets — LTI 1.3 uses public/private key pairs, not shared secrets (unlike LTI 1.1)