Docs JSON Import Schema
01
Overview
One JSON file maps directly to one trainer guide.

The JSON import lets you pre-build a complete session guide — titles, talking points, scripts, and walkthrough steps — and load it straight into the editor. No AI processing, no API key required.

This is useful for companies that restrict AI access, for building guides programmatically from a CMS or LMS export, or for sharing guide templates across teams.

After import you land in the guide editor with everything pre-populated. Review and adjust before going live — nothing is locked.
02
Top-level structure
The file describes the session and contains an array of modules.
{
  "sessionTitle": "Welcome and Introductions",
  "sessionLength": 60,
  "modules": [ ... ]
}
Field Type Description
sessionTitle required string The name of the session — shown as the guide title in the editor and on reports.
sessionLength optional number Total session duration in minutes. If omitted, Pigeon uses the value from the session duration field in the import modal.
modules required array One object per section of the guide. Also accepted as sections.
03
Module object
Each module becomes one collapsible section in the guide.
{
  "moduleTitle": "Getting Started",
  "moduleLength": 10,
  "talkingPoints": [
    "Introduce yourself and the session agenda",
    "Confirm everyone can see your screen",
    "Explain where to find support resources"
  ],
  "timeline": [ ... ]
}
Field Type Description
moduleTitle required string The section heading. Also accepted as title or sectionTitle.
moduleLength optional number Duration of this module in minutes. Also accepted as durationMinutes or duration.
talkingPoints optional string[] Key points the trainer must cover. Shown as checkable bullets during the live session. Also accepted as points.
timeline optional array Ordered delivery blocks — scripts and walkthroughs. See step 4. Also accepted as steps.
04
Timeline blocks
Two types: script (spoken narration) and walkthrough (step-by-step task).

Each item in a module's timeline array is either a script block or a walkthrough block.

Script block — trainer narration shown as readable text during the live session:

{ "script": "Welcome everyone. Today we'll be covering the onboarding workflow step by step." }

Walkthrough block — a titled sequence of steps the trainer works through on screen:

{
  "walkthrough": {
    "title": "Create a new user",
    "steps": [
      { "text": "Click Admin in the left navigation", "copyValue": "" },
      { "text": "Select Users, then click Invite", "copyValue": "" },
      { "text": "Enter the email address", "copyValue": "training@example.com" },
      { "text": "Click Send invite", "copyValue": "" }
    ]
  }
}

The copyValue field is optional. When populated, a copy button appears next to that step so the trainer can paste the value into the platform without typing it.

You can also pass walkthrough steps as a plain array of strings if you don't need copy values:

{
  "walkthrough": {
    "title": "Create a new user",
    "steps": [
      "Click Admin in the left navigation",
      "Select Users, then click Invite",
      "Enter the email address",
      "Click Send invite"
    ]
  }
}
Field Type Description
script string Narration text shown in the timeline. Keep to 2–4 sentences for readability during live delivery.
walkthrough.title string Short label for the walkthrough card (e.g. "Content Tab", "User Settings"). Shown as the card heading.
walkthrough.steps[].text string The step instruction shown to the trainer.
walkthrough.steps[].copyValue optional string A specific value to copy into the platform (e.g. a URL, a field value). Leave empty or omit if not needed.
05
Complete example
A minimal but fully valid import file.
{
  "sessionTitle": "Platform Onboarding",
  "sessionLength": 45,
  "modules": [
    {
      "moduleTitle": "Welcome and Introductions",
      "moduleLength": 5,
      "talkingPoints": [
        "Introduce yourself and the agenda",
        "Confirm attendees can see your screen",
        "Explain how to ask questions"
      ],
      "timeline": [
        {
          "script": "Welcome everyone to the Platform Onboarding session. Today we'll walk through the key areas of the system together."
        }
      ]
    },
    {
      "moduleTitle": "Creating Your First Record",
      "moduleLength": 15,
      "talkingPoints": [
        "Navigate to the Records section",
        "Use the New Record button",
        "Fill in required fields",
        "Save and confirm the record appears in the list"
      ],
      "timeline": [
        {
          "script": "Now let's create a record together. Follow along and we'll go through each field."
        },
        {
          "walkthrough": {
            "title": "Create a record",
            "steps": [
              { "text": "Click Records in the left navigation", "copyValue": "" },
              { "text": "Click + New Record", "copyValue": "" },
              { "text": "Enter the record name", "copyValue": "Test Record 01" },
              { "text": "Click Save", "copyValue": "" }
            ]
          }
        },
        {
          "script": "The record now appears in your list. In the next section we'll look at how to assign it to a team member."
        }
      ]
    }
  ]
}
06
How to import
Load the file from the New guide panel.
  • From the Sessions dashboard, click + New guide in the left sidebar
  • Select Load from file
  • Click JSON import
  • Select your .json file — the guide opens in the editor immediately
No API key is required for JSON import — it bypasses AI entirely and maps your data directly to the guide structure.