{
  "generated_at": "2026-08-11T15:51:04.753884+00:00",
  "site_root": "/var/www/campaigns",
  "base_url": "https://learn.structure-business-solutions.com",
  "docs": {
    "setup_md": "https://learn.structure-business-solutions.com/docs/PRODUCT-UPSELL-SETUP.md",
    "setup_html": "https://learn.structure-business-solutions.com/docs/",
    "agent_manifest": "https://learn.structure-business-solutions.com/docs/agent-manifest.json",
    "assets_manifest": "https://learn.structure-business-solutions.com/assets/MANIFEST.json",
    "assets_zip": "https://learn.structure-business-solutions.com/docs/campaign-assets.zip",
    "assets_index": "https://learn.structure-business-solutions.com/assets/"
  },
  "how_to_download_assets": {
    "bulk_zip": "https://learn.structure-business-solutions.com/docs/campaign-assets.zip",
    "manifest": "https://learn.structure-business-solutions.com/assets/MANIFEST.json",
    "per_file": [
      "https://learn.structure-business-solutions.com/assets/ar-checker-laptop.png",
      "https://learn.structure-business-solutions.com/assets/ask-pl-tablet.png",
      "https://learn.structure-business-solutions.com/assets/collections-reset-book.png",
      "https://learn.structure-business-solutions.com/assets/cover.png",
      "https://learn.structure-business-solutions.com/assets/favicon-collections.png",
      "https://learn.structure-business-solutions.com/assets/favicon-pl.png",
      "https://learn.structure-business-solutions.com/assets/logo.png",
      "https://learn.structure-business-solutions.com/assets/margin-checker.png",
      "https://learn.structure-business-solutions.com/assets/pl-reset-book-ds.png",
      "https://learn.structure-business-solutions.com/assets/talk-with-your-ar-tablet.png"
    ],
    "curl_example": "curl -fsSL 'https://learn.structure-business-solutions.com/docs/campaign-assets.zip' -o campaign-assets.zip && unzip campaign-assets.zip",
    "wget_recursive_hint": "wget -r -np -nH --cut-dirs=1 -A png -P ./assets 'https://learn.structure-business-solutions.com/assets/'"
  },
  "products": [
    {
      "role": "main",
      "funnel": "pl",
      "product_id": 719738,
      "name": "90-Day P&L Reset",
      "price_usd": 27,
      "payplan_id": 1478152,
      "type": "Downloads",
      "salespage": "https://learn.structure-business-solutions.com/margin-checker/",
      "orderform": "https://www.checkout-ds24.com/product/719738",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-pl-reset/thank-you/",
      "notes": "Main frontend. thankyou_url often empty so freeflow runs first."
    },
    {
      "role": "order_bump",
      "funnel": "pl",
      "product_id": 719748,
      "name": "P&L Reset Worksheets",
      "price_usd": 17,
      "payplan_id": 1478166,
      "type": "Downloads",
      "salespage": "https://learn.structure-business-solutions.com/margin-checker/",
      "orderform": "https://www.checkout-ds24.com/product/719748",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-pl-reset/thank-you/"
    },
    {
      "role": "oto1",
      "funnel": "pl",
      "product_id": 719745,
      "name": "Talk With Your P&L",
      "price_usd": 47,
      "payplan_id": 1478161,
      "is_for_sale": "upsell,upgrade",
      "type": "Downloads",
      "salespage": "https://learn.structure-business-solutions.com/ask-your-pl/",
      "orderform": "https://www.checkout-ds24.com/product/719745",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-pl-reset/thank-you/",
      "upgrade_id_note": "14881 (legacy upgrade link pattern; freeflow uses /answer/yes)"
    },
    {
      "role": "oto2_case_study",
      "funnel": "pl",
      "product_id": 720646,
      "name": "Case Study Seat · P&L Plan",
      "price_usd": 497,
      "payplan_id": 1479789,
      "is_for_sale": "upsell,upgrade",
      "type": "Online coaching",
      "salespage": "https://learn.structure-business-solutions.com/case-study-pl/",
      "orderform": "https://www.checkout-ds24.com/product/720646",
      "thankyou": "https://learn.structure-business-solutions.com/case-study-pl/thank-you/",
      "booking": "https://cal.com/structure-business-solutions/case-study-pl-calls"
    },
    {
      "role": "main",
      "funnel": "collections",
      "product_id": 719749,
      "name": "90-Day Collections Reset",
      "price_usd": 27,
      "payplan_id": 1478168,
      "type": "E-books",
      "salespage": "https://learn.structure-business-solutions.com/ar-checker/",
      "orderform": "https://www.checkout-ds24.com/product/719749",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-collections-reset/thank-you/"
    },
    {
      "role": "order_bump",
      "funnel": "collections",
      "product_id": 719750,
      "name": "Collections Reset Worksheets",
      "price_usd": 17,
      "payplan_id": 1478169,
      "type": "Downloads",
      "salespage": "https://learn.structure-business-solutions.com/ar-checker/",
      "orderform": "https://www.checkout-ds24.com/product/719750",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-collections-reset/thank-you/"
    },
    {
      "role": "oto1",
      "funnel": "collections",
      "product_id": 719751,
      "name": "Talk With Your AR",
      "price_usd": 47,
      "payplan_id": 1478170,
      "is_for_sale": "upsell,upgrade",
      "type": "Downloads",
      "salespage": "https://learn.structure-business-solutions.com/talk-with-your-ar/",
      "orderform": "https://www.checkout-ds24.com/product/719751",
      "thankyou": "https://learn.structure-business-solutions.com/90-day-collections-reset/thank-you/"
    },
    {
      "role": "oto2_case_study",
      "funnel": "collections",
      "product_id": 720647,
      "name": "Case Study Seat · Collections Plan",
      "price_usd": 497,
      "payplan_id": 1479790,
      "is_for_sale": "upsell,upgrade",
      "type": "Online coaching",
      "salespage": "https://learn.structure-business-solutions.com/case-study-collections/",
      "orderform": "https://www.checkout-ds24.com/product/720647",
      "thankyou": "https://learn.structure-business-solutions.com/case-study-collections/thank-you/",
      "booking": "https://cal.com/structure-business-solutions/case-study-collections-calls"
    }
  ],
  "upsell_trees": {
    "719738": {
      "y": "719745",
      "yy": "720646",
      "yn": "720646",
      "ui_labels": "J / JJ / JN (German Ja)"
    },
    "719749": {
      "y": "719751",
      "yy": "720647",
      "yn": "720647",
      "ui_labels": "J / JJ / JN (German Ja)"
    }
  },
  "pages": [
    {
      "path": "/90-day-collections-reset/",
      "file": "/90-day-collections-reset/index.html",
      "url": "https://learn.structure-business-solutions.com/90-day-collections-reset/",
      "bytes": 529
    },
    {
      "path": "/90-day-collections-reset/thank-you/",
      "file": "/90-day-collections-reset/thank-you/index.html",
      "url": "https://learn.structure-business-solutions.com/90-day-collections-reset/thank-you/",
      "bytes": 27299
    },
    {
      "path": "/90-day-pl-reset/",
      "file": "/90-day-pl-reset/index.html",
      "url": "https://learn.structure-business-solutions.com/90-day-pl-reset/",
      "bytes": 537
    },
    {
      "path": "/90-day-pl-reset/thank-you/",
      "file": "/90-day-pl-reset/thank-you/index.html",
      "url": "https://learn.structure-business-solutions.com/90-day-pl-reset/thank-you/",
      "bytes": 26929
    },
    {
      "path": "/ar-checker/",
      "file": "/ar-checker/index.html",
      "url": "https://learn.structure-business-solutions.com/ar-checker/",
      "bytes": 40045
    },
    {
      "path": "/ask-your-pl/",
      "file": "/ask-your-pl/index.html",
      "url": "https://learn.structure-business-solutions.com/ask-your-pl/",
      "bytes": 18932
    },
    {
      "path": "/case-study-collections/",
      "file": "/case-study-collections/index.html",
      "url": "https://learn.structure-business-solutions.com/case-study-collections/",
      "bytes": 22722
    },
    {
      "path": "/case-study-collections/thank-you/",
      "file": "/case-study-collections/thank-you/index.html",
      "url": "https://learn.structure-business-solutions.com/case-study-collections/thank-you/",
      "bytes": 20222
    },
    {
      "path": "/case-study-pl/",
      "file": "/case-study-pl/index.html",
      "url": "https://learn.structure-business-solutions.com/case-study-pl/",
      "bytes": 22665
    },
    {
      "path": "/case-study-pl/thank-you/",
      "file": "/case-study-pl/thank-you/index.html",
      "url": "https://learn.structure-business-solutions.com/case-study-pl/thank-you/",
      "bytes": 20099
    },
    {
      "path": "/",
      "file": "/index.html",
      "url": "https://learn.structure-business-solutions.com/",
      "bytes": 1598
    },
    {
      "path": "/legal-information/",
      "file": "/legal-information/index.html",
      "url": "https://learn.structure-business-solutions.com/legal-information/",
      "bytes": 5095
    },
    {
      "path": "/margin-checker/",
      "file": "/margin-checker/index.html",
      "url": "https://learn.structure-business-solutions.com/margin-checker/",
      "bytes": 48258
    },
    {
      "path": "/talk-with-your-ar/",
      "file": "/talk-with-your-ar/index.html",
      "url": "https://learn.structure-business-solutions.com/talk-with-your-ar/",
      "bytes": 19015
    }
  ],
  "assets": [
    {
      "filename": "ar-checker-laptop.png",
      "path": "/assets/ar-checker-laptop.png",
      "url": "https://learn.structure-business-solutions.com/assets/ar-checker-laptop.png",
      "bytes": 115407,
      "sha256": "46a1049bedc585ef742b47b82a539312fc4b22a62e2ae1693133a2133f8cad30",
      "content_type": "image/png"
    },
    {
      "filename": "ask-pl-tablet.png",
      "path": "/assets/ask-pl-tablet.png",
      "url": "https://learn.structure-business-solutions.com/assets/ask-pl-tablet.png",
      "bytes": 273615,
      "sha256": "9fef36a35ff7abfd278e3c510632201a732deedbd9bed5bd8b4d0458d49b0ee8",
      "content_type": "image/png"
    },
    {
      "filename": "collections-reset-book.png",
      "path": "/assets/collections-reset-book.png",
      "url": "https://learn.structure-business-solutions.com/assets/collections-reset-book.png",
      "bytes": 343374,
      "sha256": "47574e10c889055b4383362a4a9f281e938f65e4af3d1e12fca8c09b93fddf74",
      "content_type": "image/png"
    },
    {
      "filename": "cover.png",
      "path": "/assets/cover.png",
      "url": "https://learn.structure-business-solutions.com/assets/cover.png",
      "bytes": 230642,
      "sha256": "a385d5c882bc4bcc29205655aa8148c7e67ccaa3f1f67dcb3a40138f3ca921ef",
      "content_type": "image/png"
    },
    {
      "filename": "favicon-collections.png",
      "path": "/assets/favicon-collections.png",
      "url": "https://learn.structure-business-solutions.com/assets/favicon-collections.png",
      "bytes": 136,
      "sha256": "1ace66502c50fc4e26e685a50c84a72a7e6a0c429268d1172ad9f29794d9dddc",
      "content_type": "image/png"
    },
    {
      "filename": "favicon-pl.png",
      "path": "/assets/favicon-pl.png",
      "url": "https://learn.structure-business-solutions.com/assets/favicon-pl.png",
      "bytes": 136,
      "sha256": "82bbc1ae4adc431ab501213c3ee36622b251dbecf0e6a1776051c483b3c8b06c",
      "content_type": "image/png"
    },
    {
      "filename": "logo.png",
      "path": "/assets/logo.png",
      "url": "https://learn.structure-business-solutions.com/assets/logo.png",
      "bytes": 10590,
      "sha256": "f3f33fc86ad1d6b8f31e5ee7a79676b458acd283314cc6c1005e8bc91287d628",
      "content_type": "image/png"
    },
    {
      "filename": "margin-checker.png",
      "path": "/assets/margin-checker.png",
      "url": "https://learn.structure-business-solutions.com/assets/margin-checker.png",
      "bytes": 462530,
      "sha256": "f771f2ac6ca0a6fcfdfc133f34a939d12399d6660847e986a833f91ef44e4de5",
      "content_type": "image/png"
    },
    {
      "filename": "pl-reset-book-ds.png",
      "path": "/assets/pl-reset-book-ds.png",
      "url": "https://learn.structure-business-solutions.com/assets/pl-reset-book-ds.png",
      "bytes": 427235,
      "sha256": "ebeacdca849c6835c6a4cabcaca117e9619f323e6837683661ac0af2c18af582",
      "content_type": "image/png"
    },
    {
      "filename": "talk-with-your-ar-tablet.png",
      "path": "/assets/talk-with-your-ar-tablet.png",
      "url": "https://learn.structure-business-solutions.com/assets/talk-with-your-ar-tablet.png",
      "bytes": 161899,
      "sha256": "6beea506b4cc3935cc1b8fe988348f8c51c3599864f257f4eb6e27aff4d5f58b",
      "content_type": "image/png"
    }
  ],
  "cal_com": {
    "pl_free_strategy": "https://cal.com/structure-business-solutions/pl-reset-strategy-session",
    "collections_free_strategy": "https://cal.com/structure-business-solutions/collections-reset-strategy-session",
    "case_study_pl": "https://cal.com/structure-business-solutions/case-study-pl-calls",
    "case_study_collections": "https://cal.com/structure-business-solutions/case-study-collections-calls"
  },
  "freeflow": {
    "script": "https://www.checkout-ds24.com/service/digistore.js",
    "yes": "https://www.checkout-ds24.com/answer/yes",
    "no": "https://www.checkout-ds24.com/answer/no",
    "session_param": "digistore_upsell_session_id",
    "notes": [
      "Do not pre-set window.DS24_UPSELL_SESSION_ID before digistoreUpsell()",
      "Do not overwrite YES/NO href or onclick after digistore.js runs",
      "One active payplan per OTO required for true one-click",
      "Main thankyou_url empty allows freeflow redirect to first OTO",
      "Set freeflow final thank-you in Conversion Cockpit UI (API cannot set upsell_freeflow_thankyou_url)",
      "Session param digistore_upsell_session_id only after post-purchase freeflow redirect",
      "Cockpit UI labels J/JJ/JN == API y/yy/yn"
    ],
    "lessons_doc": "docs/PRODUCT-UPSELL-SETUP.md#5-lessons-learned-digistore-setup"
  },
  "portable": true,
  "transport": {
    "description": "Static site tree; copy docs/, assets/, and campaign HTML folders to any web root. Replace base_url in manifests and Digistore Cockpit/product URLs when relocating.",
    "web_root_relative_paths": true,
    "copy_units": [
      "docs/",
      "assets/",
      "index.html",
      "legal-information/",
      "margin-checker/",
      "ar-checker/",
      "ask-your-pl/",
      "talk-with-your-ar/",
      "case-study-pl/",
      "case-study-collections/",
      "90-day-pl-reset/",
      "90-day-collections-reset/"
    ],
    "relocate_steps": [
      "Point document root at campaign folder",
      "Search-replace learn.structure-business-solutions.com if host changes",
      "Update Digistore Conversion Cockpit sales page URLs and freeflow final thank-you",
      "Update product salespage/thankyou fields",
      "Regenerate or edit base_url in this file and assets/MANIFEST.json"
    ],
    "relative_doc_paths": {
      "setup_md": "docs/PRODUCT-UPSELL-SETUP.md",
      "setup_html": "docs/index.html",
      "agent_manifest": "docs/agent-manifest.json",
      "assets_manifest": "assets/MANIFEST.json",
      "assets_zip": "docs/campaign-assets.zip",
      "assets_index": "assets/index.html",
      "legal": "legal-information/index.html"
    }
  },
  "entity": {
    "legal_name": "Structure.ai, Inc.",
    "entity_type": "C Corporation",
    "entity_type_short": "C Corp",
    "ein": "92-3888418",
    "brand": "Structure Business Solutions",
    "address": {
      "line1": "10962 Patriot Hwy",
      "city": "Fredericksburg",
      "region": "VA",
      "postal_code": "22408",
      "country": "United States"
    },
    "email": "contact@structure-business-solutions.com",
    "phone": "+1 540 783 5040",
    "legal_page_path": "/legal-information/",
    "merchant_of_record": "Digistore24"
  },
  "lessons_learned": [
    {
      "id": "session_id_only_after_purchase",
      "title": "Freeflow session ID only after Digistore redirect",
      "detail": "digistore_upsell_session_id is appended only after a real or vendor test purchase when freeflow is configured. Opening OTO URLs manually will not create a session."
    },
    {
      "id": "answer_yes_not_product_url",
      "title": "YES must be /answer/yes",
      "detail": "Do not point YES at /product/{id} or /upgrade/{id}. Those open full checkout/upgrade flows, not freeflow one-click."
    },
    {
      "id": "do_not_preset_session",
      "title": "Do not pre-set DS24_UPSELL_SESSION_ID",
      "detail": "Setting window.DS24_UPSELL_SESSION_ID before digistoreUpsell() can skip link rewrite. Let digistore.js read the query param and rewrite /answer/yes|no."
    },
    {
      "id": "one_payplan_per_oto",
      "title": "One active payplan per OTO",
      "detail": "Multiple active payplans force Digistore's plan chooser and break pure one-click. Deactivate duplicates."
    },
    {
      "id": "empty_main_thankyou",
      "title": "Empty main thankyou_url while freeflow active",
      "detail": "A custom main product thank-you can short-circuit freeflow so buyers never get a session or OTO pages."
    },
    {
      "id": "cockpit_j_labels",
      "title": "Cockpit UI uses J/JJ/JN",
      "detail": "API keys y/yy/yn map to Digistore UI labels J/JJ/JN (Ja). There is often no separate freeflow 'on' toggle—tree + sales URLs + empty main TY is the activation."
    },
    {
      "id": "api_limits",
      "title": "Some freeflow fields are UI-only",
      "detail": "upsell_freeflow_thankyou_url and some freeflow flags may not be settable via REST/MCP; configure final freeflow thank-you and full Cockpit tree in Digistore UI."
    },
    {
      "id": "rest_auth",
      "title": "REST uses X-DS-API-KEY",
      "detail": "Digistore REST expects X-DS-API-KEY. MCP may use Bearer—do not mix headers."
    },
    {
      "id": "approval_vault_testpay",
      "title": "Vault + test purchase for approval",
      "detail": "Upload product files to Digistore vault; many products need a test purchase before submit-for-approval. Unapproved products may block public checkout."
    },
    {
      "id": "prefer_root_relative_assets",
      "title": "Use root-relative asset paths in HTML",
      "detail": "/assets/... keeps pages portable when the static tree is moved; only Digistore-stored URLs and manifests need absolute BASE_URL."
    }
  ]
}
