Path E

Entitlement & delivery — personal access link

The buyer receives a personal delivery link, downloads purchased files, and accesses session resources from a single, unguessable URL.

Status Implemented Last reviewed 2026-08-07 All user flows →
User intent

What the visitor is trying to do

“I paid for a product or a deposit and I need to access what I bought — the download link or the session access instructions — without hunting through my email.”

Entry points

ElementDestination
Email receipt delivery link/acces/<token>/
Return page access button/acces/<token>/
Stripe session — no direct link(handled server-side)
Owner contract reference link/acces/<token>/

Flow

flowchart LR
    PAY["Payment settled (webhook)"] --> LINK["Mint delivery token"]
    LINK --> EMAIL["Email: personal delivery link"]
    EMAIL --> OPEN["/acces/<token>/"]
    OPEN --> AUTH{"Token valid?"}
    AUTH -- No --> ERR["410 expired or revoked"]
    AUTH -- Yes --> DASH["Delivery page"]
    DASH --> FILES["Download entitled files"]
    DASH --> SESSION["Access session resources"]
    DASH --> REV["Revoked entitlement"]
            

Screen inventory

IDScreenUser task
P0Email receiptReceive delivery link
P1Webhook (machine)Create entitlement + delivery token
P14Delivery pageView entitled products and download links
P14aDownload fileDownload PDF or asset
P14bSession resourcesAccess Office Hours join link or notes
P15Revocation noticeSee “accès révoqué” when entitlement is revoked

Flow scenario

Scenario E1

Download a purchased framework PDF

Trigger

  • Buyer's payment is confirmed by the Stripe webhook
  • An Entitlement row is created and a token is minted
  • Email receipt contains the delivery link

Experience

  1. The delivery page lists every entitled product.
  2. The buyer clicks “Télécharger” for a downloadable product.
  3. The server checks revoked_at is null before serving the file.
  4. For session products, the page shows a join link or the session notes.
  5. Download count is incremented and logged on the entitlement row.

Trust and safety rules

  • Delivery tokens are unguessable and tied to a single Entitlement row.
  • A revoked entitlement (revoked_at set) blocks both downloads and session access.
  • Files are served from static/ via ManifestStaticFilesStorage — no user-controlled MEDIA_ROOT path.
  • Download counts are incremented atomically to avoid race conditions on parallel clicks.
  • The delivery page never exposes raw file paths — only the resolved static URL.
  • Delivery pages are blocked by robots.txt and carry no editorial SEO value.

Interaction rules

  • A revoked entitlement shows a “accès révoqué” notice instead of the file list.
  • An expired or invalid token returns a 410 with a plain-language message.
  • Session access links are single-use and time-limited where applicable.
  • The page lists all entitled products even if only one was purchased, so the buyer never loses access to the wrong row.

Result states

StateWhat the visitor seesWhat happens next
ActiveDelivery page with download linksBuyer downloads or accesses session
Revoked“Accès révoqué” noticeOwner intervention required
Expired410 page with contact CTABuyer contacts support
ConsumedDownload count reflects usageNo state change — access remains open