A

Add a couple of API endpoints to forget-passwords to interoperate with the order fulfillment infrastructure.

Has Broader
Self-host the videos instead.
Has Narrower
Add a Web hook to forget-passwords that enables us to enroll new e-mail addresses.
Add an endpoint to forget-passwords which will bypass the magic link process and produce a session cookie for a given principal.
Other
Payment processing happens in one module (admit-n) and authentication happens in the other (forget-passwords).

Add a Web hook to forget-passwords that enables us to enroll new e-mail addresses.

Has Broader
Add a couple of API endpoints to forget-passwords to interoperate with the order fulfillment infrastructure.
Other
How do we get new users into the authentication database?

Add an endpoint to forget-passwords which will bypass the magic link process and produce a session cookie for a given principal.

Has Broader
Add a couple of API endpoints to forget-passwords to interoperate with the order fulfillment infrastructure.

Add the customer (the person who paid) to the "account manager" group and assignees (potentially including themselves) to the content group.

Other
This will probably entail at least two authorization groups (one for the video watcher, one for the account manager).

C

Can the seat allocation page just be the target of the Stripe handoff?

Other
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.

Catch these with a redirect shim that forwards to the login page.

Other
Somebody who has already paid (or an assignee) may click the purchase button anyway.

Create a "you're already in" interstitial page that notifies the prospective customer and gives them the option to log in or buy more seats.

Has Broader
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Other
What if somebody attempts to pay who has already paid or been granted access?

Create a minimal infrastructure to handle one-off payments and add people to an authorization list.

Has Broader
Self-host the videos instead.
Has Narrower
Create a "you're already in" interstitial page that notifies the prospective customer and gives them the option to log in or buy more seats.
Create a Web hook to monitor for asynchronous payment events.
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.
Use Stripe to process payments.
Use forget-passwords to authenticate customers.
Other
How are we actually processing payments?
How does the customer enter the payment flow?
I have all the infrastructure already minus the actual order processing and fulfillment.
People need to put in their email for the receipt from Stripe as well as to log in.
What if a customer wants to buy access for somebody else? (e.g. as a gift?)
What if somebody attempts to pay who has already paid or been granted access?
What if the customer wants to use a different e-mail address to log in with than the one they used for the payment receipt?

Create a post-checkout interface for the customer to either select themselves or somebody else.

Has Broader
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.
Has Narrower
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.
When there are two or more seats to allocate, create UI so the customer-manager can delegate subsequent seat assignments.
Other
What if a customer wants to buy access for somebody else? (e.g. as a gift?)
What if the customer wants to use a different e-mail address to log in with than the one they used for the payment receipt?

Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.

Has Broader
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Has Narrower
Create a post-checkout interface for the customer to either select themselves or somebody else.
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.
Other
How do we detect the payment?
What happens if the redirect back from Stripe is disrupted?
What if we miss the Web hook event?
Why would we also need a Web hook if we were already checking payment status?

Create a Web hook to monitor for asynchronous payment events.

Has Broader
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Other
How do we detect the payment?
What if we miss the Web hook event?
Why would we also need a Web hook if we were already checking payment status?

The customer and the user are not always the same person.

Has Narrower
What if a customer wants to buy access for somebody else? (e.g. as a gift?)
Other
Nothing should get in the way of the user enjoying the product.

The customer can then confirm the slot for themselves (the base case) or assign the slot(s) they purchased.

Other
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.

D

Delegates are going to get weird when there are two or more products to deal with.

Other
We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.

Detect if the person is logged in and substitute the login CTA for a "proceed to content" link.

Has Broader
Modify the marketing page to include calls to action, either buy now or log in.
Other
What if the person is already logged in?

Detect the payment from Stripe and flag the customer's email as paid.

Has Broader
Use Stripe to process payments.
Other
How do we detect the payment?
How do we get new users into the authentication database?

F

For now maybe just arrange bulk purchases manually.

Other
I want the highest-value transactions to have the least friction possible.
Manually processing bulk purchases will be extra work, and especially extra coordination effort.
The prospect of extra work just to buy a thing will also scare off otherwise bulk-buying customers.
What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?

G

Get on Udemy.

Other
I want to sell on-demand video lectures to retail customers.
The only option for payment from Udemy is PayPal, which takes another 3% and has a positively atrocious exchange rate (another 2-3%).
Udemy can take over two months to pay out.
Udemy has its own network and can drive traffic.
Udemy takes a 63% cut for referrals in its network.
See Also

Gifting can be a special case of slot assignment where the quantity purchased is 1.

Has Broader
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.
Other
What if a customer wants to buy access for somebody else? (e.g. as a gift?)

H

How are we actually processing payments?

Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Use Stripe to process payments.

How do we detect the payment?

Other
Create a Web hook to monitor for asynchronous payment events.
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.
Detect the payment from Stripe and flag the customer's email as paid.

How do we get new users into the authentication database?

Other
Add a Web hook to forget-passwords that enables us to enroll new e-mail addresses.
Detect the payment from Stripe and flag the customer's email as paid.
Payment processing happens in one module (admit-n) and authentication happens in the other (forget-passwords).
Use forget-passwords to authenticate customers.

How does the customer (who is not necessarily one of the users) get back to this slot allocation page, e.g. to assign empty slots?

Other
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.
This will probably entail at least two authorization groups (one for the video watcher, one for the account manager).

How does the customer enter the payment flow?

Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Modify the marketing page to include calls to action, either buy now or log in.

I

I anticipate the volume will be low enough to not go over my hosting traffic quota.

Other
Self-host the videos instead.

I have a fairly large network to sell into (social media + newsletter).

Other
Self-host the videos instead.

I have all the infrastructure already minus the actual order processing and fulfillment.

Has Narrower
Stripe only charges around 3% and pays out every business day (on a 3-day delay).
Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Self-host the videos instead.
Use forget-passwords to authenticate customers.

I really hate it when you have to explicitly log in when the system clearly already knows who you are.

Other
I would like for a successful payment to automatically log the person in.

I want the highest-value transactions to have the least friction possible.

Has Broader
The prospect of extra work just to buy a thing will also scare off otherwise bulk-buying customers.
Other
For now maybe just arrange bulk purchases manually.

I want to sell on-demand video lectures to retail customers.

Other
Get on Udemy.
Self-host the videos instead.

I would like for a successful payment to automatically log the person in.

Has Broader
Nothing should get in the way of the user enjoying the product.
Other
I really hate it when you have to explicitly log in when the system clearly already knows who you are.
Payment processing happens in one module (admit-n) and authentication happens in the other (forget-passwords).
Self-host the videos instead.

M

Make the "buy access" button visually distinct from the "sign in" button.

Has Broader
Modify the marketing page to include calls to action, either buy now or log in.
Other
People are going to get confused if the login and purchase action are the same form. They will worry about being made to pay twice.
Somebody who has already paid (or an assignee) may click the purchase button anyway.

Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.

Has Broader
Create a post-checkout interface for the customer to either select themselves or somebody else.
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.
Has Narrower
Gifting can be a special case of slot assignment where the quantity purchased is 1.
Other
Can the seat allocation page just be the target of the Stripe handoff?
How does the customer (who is not necessarily one of the users) get back to this slot allocation page, e.g. to assign empty slots?
The customer can then confirm the slot for themselves (the base case) or assign the slot(s) they purchased.
What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?

Manually processing bulk purchases will be extra work, and especially extra coordination effort.

Has Narrower
The prospect of extra work just to buy a thing will also scare off otherwise bulk-buying customers.
Other
For now maybe just arrange bulk purchases manually.

Modify the marketing page to include calls to action, either buy now or log in.

Has Broader
Self-host the videos instead.
Has Narrower
Detect if the person is logged in and substitute the login CTA for a "proceed to content" link.
Make the "buy access" button visually distinct from the "sign in" button.
Other
How does the customer enter the payment flow?
People are going to get confused if the login and purchase action are the same form. They will worry about being made to pay twice.
What if the person is already logged in?

N

Nothing should get in the way of a customer buying the product.

Has Broader
Nothing should get in the way of the user enjoying the product.
Other
What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?

Nothing should get in the way of the user enjoying the product.

Has Narrower
I would like for a successful payment to automatically log the person in.
Nothing should get in the way of a customer buying the product.
Other
The customer and the user are not always the same person.

O

The only option for payment from Udemy is PayPal, which takes another 3% and has a positively atrocious exchange rate (another 2-3%).

Other
Get on Udemy.
Stripe only charges around 3% and pays out every business day (on a 3-day delay).

P

Payment processing happens in one module (admit-n) and authentication happens in the other (forget-passwords).

Other
Add a couple of API endpoints to forget-passwords to interoperate with the order fulfillment infrastructure.
How do we get new users into the authentication database?
I would like for a successful payment to automatically log the person in.

People are going to get confused if the login and purchase action are the same form. They will worry about being made to pay twice.

Other
Make the "buy access" button visually distinct from the "sign in" button.
Modify the marketing page to include calls to action, either buy now or log in.
People need to put in their email for the receipt from Stripe as well as to log in.

People need to put in their email for the receipt from Stripe as well as to log in.

Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
People are going to get confused if the login and purchase action are the same form. They will worry about being made to pay twice.

The prospect of extra work just to buy a thing will also scare off otherwise bulk-buying customers.

Has Broader
Manually processing bulk purchases will be extra work, and especially extra coordination effort.
Has Narrower
I want the highest-value transactions to have the least friction possible.
Other
For now maybe just arrange bulk purchases manually.

S

Self-host the videos instead.

Has Narrower
Add a couple of API endpoints to forget-passwords to interoperate with the order fulfillment infrastructure.
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Modify the marketing page to include calls to action, either buy now or log in.
Other
I anticipate the volume will be low enough to not go over my hosting traffic quota.
I have a fairly large network to sell into (social media + newsletter).
I have all the infrastructure already minus the actual order processing and fulfillment.
I want to sell on-demand video lectures to retail customers.
I would like for a successful payment to automatically log the person in.
Stripe only charges around 3% and pays out every business day (on a 3-day delay).

Somebody who has already paid (or an assignee) may click the purchase button anyway.

Other
Catch these with a redirect shim that forwards to the login page.
Make the "buy access" button visually distinct from the "sign in" button.

Stripe only charges around 3% and pays out every business day (on a 3-day delay).

Has Broader
I have all the infrastructure already minus the actual order processing and fulfillment.
Other
Self-host the videos instead.
The only option for payment from Udemy is PayPal, which takes another 3% and has a positively atrocious exchange rate (another 2-3%).
Udemy can take over two months to pay out.
Udemy takes a 63% cut for referrals in its network.
Use Stripe to process payments.

T

This distinction only makes sense when buying two or more seats.

Other
We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.
When there are two or more seats to allocate, create UI so the customer-manager can delegate subsequent seat assignments.

This will probably entail at least two authorization groups (one for the video watcher, one for the account manager).

Other
Add the customer (the person who paid) to the "account manager" group and assignees (potentially including themselves) to the content group.
How does the customer (who is not necessarily one of the users) get back to this slot allocation page, e.g. to assign empty slots?

U

Udemy can take over two months to pay out.

Other
Get on Udemy.
Stripe only charges around 3% and pays out every business day (on a 3-day delay).

Udemy has its own network and can drive traffic.

Other
Get on Udemy.
Udemy takes a 63% cut for referrals in its network.

Udemy takes a 63% cut for referrals in its network.

Other
Get on Udemy.
Stripe only charges around 3% and pays out every business day (on a 3-day delay).
Udemy has its own network and can drive traffic.

Use forget-passwords to authenticate customers.

Has Broader
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Other
How do we get new users into the authentication database?
I have all the infrastructure already minus the actual order processing and fulfillment.
See Also

Use Stripe to process payments.

Has Broader
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Has Narrower
Detect the payment from Stripe and flag the customer's email as paid.
Other
How are we actually processing payments?
Stripe only charges around 3% and pays out every business day (on a 3-day delay).

W

We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.

Other
Delegates are going to get weird when there are two or more products to deal with.
This distinction only makes sense when buying two or more seats.
What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?
What if the delegate is also not an audience member?
When there are two or more seats to allocate, create UI so the customer-manager can delegate subsequent seat assignments.

What happens if the redirect back from Stripe is disrupted?

Other
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.

What if a customer wants to buy access for somebody else? (e.g. as a gift?)

Has Broader
The customer and the user are not always the same person.
Has Narrower
What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?
Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Create a post-checkout interface for the customer to either select themselves or somebody else.
Gifting can be a special case of slot assignment where the quantity purchased is 1.
What if the customer wants to use a different e-mail address to log in with than the one they used for the payment receipt?

What if somebody attempts to pay who has already paid or been granted access?

Other
Create a "you're already in" interstitial page that notifies the prospective customer and gives them the option to log in or buy more seats.
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.

What if the customer is a manager and wants to buy access for their whole team (and potentially not themselves)?

Has Broader
What if a customer wants to buy access for somebody else? (e.g. as a gift?)
Other
For now maybe just arrange bulk purchases manually.
Make the payment success redirect target page have $QUANTITY slots, the first of which is auto-filled with the customer's email address.
Nothing should get in the way of a customer buying the product.
We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.

What if the customer wants to use a different e-mail address to log in with than the one they used for the payment receipt?

Other
Create a minimal infrastructure to handle one-off payments and add people to an authorization list.
Create a post-checkout interface for the customer to either select themselves or somebody else.
What if a customer wants to buy access for somebody else? (e.g. as a gift?)

What if the delegate is also not an audience member?

Other
We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.

What if the person is already logged in?

Other
Detect if the person is logged in and substitute the login CTA for a "proceed to content" link.
Modify the marketing page to include calls to action, either buy now or log in.

What if we miss the Web hook event?

Other
Create a Web hook to monitor for asynchronous payment events.
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.

When there are two or more seats to allocate, create UI so the customer-manager can delegate subsequent seat assignments.

Has Broader
Create a post-checkout interface for the customer to either select themselves or somebody else.
Other
This distinction only makes sense when buying two or more seats.
We can assume a manager buying seats for the whole team (and not themselves) will likely also want to delegate assigning seats.

Why would we also need a Web hook if we were already checking payment status?

Other
Create a Web hook to monitor for asynchronous payment events.
Create a resource that serves as a redirect target back from Stripe that confirms the payment and enrolls the customer.