Deep Linking is how a teacher chooses which TutorFlow content appears in an LMS course. The teacher opens TutorFlow's content picker from inside the LMS, selects content, and the LMS stores a native link to it. This guide walks through the teacher flow and explains what happens when a student launches.
Add content (teacher flow)
- In your LMS course, add external content using the placement you enabled during setup — in Canvas this is an assignment with External Tool; in Moodle it is an External tool activity with Select content.
- The LMS opens the TutorFlow content picker in a window. It lists the content available to this registration.
- Select one or more items and confirm. The LMS creates a link (and, for tests, a gradebook column) automatically.
That is all the teacher does. The link now behaves like any other LMS activity.
What content can be linked
| Type | Linkable | Gradebook column | Notes |
|---|---|---|---|
| Course | ✅ | — | Opens the classroom course viewer |
| Learning module | ✅ | — | Opens the standalone lesson |
| Slides | ✅ | — | Must be set to Public; opens the slide viewer |
| Test | ✅ | ✅ | Creates a gradebook column; scores sync back |
| Video | — | — | Not linkable — videos live inside courses/modules |
The picker shows content from the organization that owns the registration. If the registration is scoped to one classroom, only that classroom's content appears.
What happens on launch (student flow)
When a student clicks the link in the LMS, TutorFlow:
- Verifies the launch — checks the signed launch token against the LMS's public keys, the issuer, the audience, and a one-time nonce.
- Signs the student in — finds or creates a TutorFlow account tied to the student's LMS identity (the LMS
(issuer, sub)pair, never the email), with no password required. - Enrolls the student — adds them to the classroom and to the specific course or test that was linked.
- Opens the content — hands the browser into the classroom app, already authenticated, on the linked page.
Because the account is tied to the LMS identity, the same student returning through the LMS always lands on the same TutorFlow account.
How routing works (custom parameters)
When content is deep linked, TutorFlow stores two custom parameters on the LMS link so it can always resolve what to open — even after an LMS course is copied (which changes the link's own id):
{
"custom": {
"tf_resource_type": "test",
"tf_resource_id": "9c1a4b2e-8f0d-2b8f-6f1a-2c3d6f2b7f1e"
}
}You do not set these by hand; the picker adds them. If you ever build a link manually, include both parameters or the launch cannot be routed.
New-window launches
Classroom launches sign the learner into *.tutorflow.ac with a session cookie. Inside an LMS iframe that cookie would be treated as third‑party and blocked by some browsers (notably Safari), so TutorFlow asks the LMS to open these links in a new window/tab. Most LMSs honor this automatically; if your placement forces an iframe, set the activity to open in a new window.
Example: assign a graded quiz
- Create a test in TutorFlow (see Create tests and quizzes).
- In your LMS course, add an assignment backed by the TutorFlow external tool and choose Select content.
- Pick the test in the picker. A gradebook column is created with the test's total points as the maximum.
- Students open the assignment, take the test, and submit. Their score appears in the LMS gradebook — see Grade passback.