Public Share

Feature Owner: James Derick Billate
Module: Deliver
Priority: Must
Date: July 7 2026

Executive Summary

What is this feature?

Public Share is composed of two main features: Share Link and Embed Code. Although they are two different ways of sharing a quest, their primary goal is to showcase quest content to learners outside WyzQuests without requiring a WyzQuests account. Other than SCORM Export, this feature expands quest reach beyond an LMS by allowing Creators to publish quests through a public URL or an iframe that can be placed on external websites, LMS pages, or other content channels.

Why does it matter?

Without the ability to share quests outside WyzQuests, Creators may need to manually export content, duplicate their work on another website, or force learners to create accounts before accessing the quest. Public Share Link and Embed reduce this friction by giving Creators more delivery channels and giving learners a lower-barrier way to explore quest content.

What's the MVP scope?

  • Share Link with expiration date.

  • Share Embed with customizable viewport size.

  • Share analytics.

  • Overall CRUD of share features.

  • Pause/reactivate live access.

  • Delete generated link or embed.


1. User Pain Point & Solution

John created an interactive training program in WyzQuests, but he also has another website where he shares training content. Without Public Share or Embed, he would need to redo the same content outside WyzQuests, which can take multiple days and may create content inconsistencies. With Public Share, John can generate a link or iframe code and deliver the quest through external channels.

Pain Points

  • Emotional: Frustrated, dismayed, tired, unsettled, and hopeless when content must be recreated manually.

  • Functional: No transparent sharing flow, error-prone duplication, wrong input of data, incompatibility issues, missing data, corrupted data, and data leak/cybersecurity risks.

  • Business: More learners can access quest content, and content acquisition is less restricted to users already inside WyzQuests.


2. User Pain Point & Solution

Diagnose: Provides another way to check whether learners access quest content outside the app through simple analytics.

Design: Generates a feedback loop for improving quest content before or after it is published in-app.

Develop: Enhances the quest flow by allowing external learners to access and interact with quest content through a generated public route.

Deliver: Provides more channels for learners to enjoy and explore quest content through public links and embedded iframes.


3. USER FLOWS

Entry Points: Creator first chooses a quest from the quest editor or project area, then opens the Share modal.

Success Criteria: Once the Creator clicks Share, they can generate a public link or iframe embed code and access the quest without authentication.

Main Path (Happy Path)

  • Creator opens a quest.

  • Creator clicks the Share button.

  • Creator chooses Link or Embed.

  • For Link, Creator selects an expiration duration.

  • For Embed, Creator sets width and height if needed.

  • Creator clicks Generate Link or Generate Embed Code.

  • System validates quest ownership and share type.

  • System generates a hash and stores share information.

  • System creates analytics tracking for the share.

  • Creator copies the generated link or iframe code.

  • Learner opens the link or external embedded iframe.

  • Quest loads through /share/{hash} without requiring authentication.

No Data: Alert the Creator that the quest data does not exist.

API Error: Terminate the share generation process and display the proper error code/message.

Permission Denied: Stop share generation when the Creator does not own or cannot access the quest.

Decision Points:

  • IF quest exists THEN generate link or iframe ELSE halt generation.

  • IF share already exists THEN retrieve existing share data ELSE allow generation.

  • IF link is expired THEN mark it inactive and show no-longer-active state.

  • IF Creator pauses access THEN public route shows inactive state ELSE quest remains viewable.

  • IF Creator deletes share THEN remove stored share and analytics through cascade.


4. Information Architecture

Primary Information

  • Quest information.

  • Share type: Link or Embed.

  • Generated hash.

  • Generated public URL.

  • Generated iframe code.

Secondary Information

  • Expiration date.

  • Created date.

  • Live/revoked state.

  • Viewport width.

  • Viewport height.

  • Share analytics.

Tertiary Information

  • Viewer device information.

  • Browser information.

  • Screen dimensions.

  • Viewer/completer rate.

Actions

  • Primary CTA

    • “Share”

  • Secondary Actions

    • "Link"

    • "Embed"

    • "Generate Link"

    • "Generate Embed Code"

    • "Copy"

    • "Pause"

    • "Reactivate"

    • "Extend"

    • "Delete Link"

    • "Delete Embed Code"


5. Data Requirements

Frontend Needs

  • Quest information.

  • Quest ID.

  • Share type.

  • Expiration duration for link.

  • Embed width and height.

  • Generated hash.

  • Live state.

  • Analytics data.

API Calls Frontend Will Make

  • GET /api/creator/share?questId={questId}&shareType={link|embed}

  • POST /api/creator/share

  • PATCH /api/creator/share

  • DELETE /api/creator/share?questId={questId}&shareType={link|embed}

  • GET /api/creator/share/fetch?hash={hash}

  • POST /api/creator/share/analytics


6. Performance Considerations

Database Optimization

  • Share feature has a dedicated public_share table for storing share records and a public_share_analytics table for tracking analytics.

  • Use indexed quest_id lookups to retrieve the current link or embed quickly.

  • Use hash as the primary lookup key for public access.

  • Fetch only the quest fields required by the public player.

  • Application-level authorization and RLS-style ownership checks ensure only the Creator or allowed agency scope can CRUD share records.


7. Security & Authorization

Who Can Access This Feature?

Administrator: View access of quest.
Reviewer: View access of quest.
Creator: Full access.
Learner: View access of quest.
Agency Admin: View access of quest.


8. Error Handling

Current Existing Error Handling

  • Invalid credentials -> 401 Unauthorized.

  • Expired session -> 401 Unauthorized with redirect to login.

  • Missing quest ID -> 400 Bad Request.

  • Missing share type -> 400 Bad Request.

  • Invalid payload data -> validation error.

  • Unauthorized share access -> 403 Forbidden.

  • Quest not found -> 404 Not Found.

  • Share link not found -> 404 Not Found.

  • Failed share content creation -> 500 Internal Server Error.

  • Failed share update -> error message.

  • Failed copy action -> copy failure toast.


9. Testing Checklist

Happy Path

  • Pick a quest.

  • Click the Share button.

  • Choose Link.

  • Select expiration duration.

  • Click Generate Link.

  • Copy generated link.

  • Open link in unauthenticated browser.

  • Quest loads correctly through /share/{hash}.

  • Return to Share modal and view analytics.

  • Choose Embed.

  • Click Generate Embed Code.

  • Adjust width and height.

  • Copy iframe code.

  • Paste iframe code into an external page.

  • Quest loads correctly inside the iframe.

Edge Cases

  • Unauthorized account attempts to generate share.

  • Quest not found.

  • Quest belongs to another Creator.

  • Expired link is opened.

  • Paused/revoked link is opened.

  • Share hash does not exist.

  • Embed dimensions are invalid or too small.

  • Clipboard API is unavailable.

  • Analytics device data fails to save.

  • HTML custom node security must be checked when exposed through public share.


10. OPEN QUESTIONS

  • Should save state be implemented once learners access a quest via share link or embed?

  • Should the Creator be able to customize the hash or public URL?

  • Should public link expiration default remain 30 days or allow perpetual links?

  • Should Embed support stronger sandbox controls by default?

  • Should analytics include per-activity learner behavior or remain limited to views, completers, and device data?


11. OUT OF SCOPE

  • Admin and Agency Admin access to analytics per shared quest.

  • Much deeper analytics beyond quest completion rate and viewer device information.

  • Custom public hash or slug.

  • Authenticated save progress for anonymous public learners.

  • Password-protected public shares.

  • Advanced embed theme customization.


12. SUCCESS METRICS

  • Accessible share link outside WyzQuests without authentication.

  • Accessible iframe embed outside WyzQuests without authentication.

  • Success alert after generation of shared link or embed.

  • Creator can pause/reactivate share access.

  • Creator can delete share access.

  • Creator can view basic analytics.


18. DEPENDENCIES

This feature depends on

  • Clerk Authentication.

  • Quest Details.

  • Quest Canvas Metadata.

  • Supabase Database.

  • Public Share tables.

  • Quest Player.

This feature depends on this

  • Quest or Project Creation.

  • Quest Editor.

  • Share Modal.

  • Learner Quest Rendering.

  • Analytics Tracking.


19. TIMELINE & OWNERSHIP

Backend: James Derick Billate

Frontend: James Derick Billate

QA: Internal development testing

Estimated Completion: Feature completed.


Note: API Endpoints and Schema please refer to its Technical Documentation


Was this article helpful?