Events Form
Overview
As part of the OWASP website migration, we will creating a new Events form that will use Stripe as a back end. This should be a simple form that is hosted on the website and will EVENUTALLY serve as the prmiary e-commerce path for all OWASP Global and Regional events replacing Eventbrite for (1) hosting secure forms on github, (2) presenting and then selecting multiple SKUs from a single Product ID as in Training Class A for Event X and Early Bird ticket for Event X, (3) 2-3 aggregate online reports, (4) validate Stripe can manage inventory of SKUs, and (5) integrating Stripe form activities with light integrations with other key data in the OWASP ecosystem.
Goals
- Securely host a form on our public github instance and collect event registrations
- Designed and built for re-use on up to 15 events per calendar year (Event ID/Product ID/SKU)
- Stripe is the single authoritive source of pricing, inventory, and discount code truth
- Put form into production as of January 24, 2020
- Move data from successful Sripe tranactions into Mailchimp
- Light reporting on attendance metrics
- Develop Slack bot so that common queries can be done through Slack
Milestones
- 2019-11-01, Identify resource to develop this form/project, [Mike]
- 2019-11-28, Spec out workflow for visitors, [Mike]
- 2020-01-10, Wireframe of Event Form, [Mike]
- 2020-02-14, Beta version of Event Form Ready for testing, [Simon]
- 2020-02-21, Release Candiate of Form ready for regression testing, [Simon]
- 2020-03-01, Launch form with Global AppSec - Dublin as MVP, [Harold]
- 2020-04-10, Post-launch fixes complete, [Simon]
- 2020-03-06, Google Sheet Template, [Mike]
- 2020-04-10, Google Sheet push implemented, tested, and in production, [Simon]
- 2020-07-15, Project Complete, [Harold]
Leadership
Workflow
- Product and SKUs listings created in Stripe
- Set prices in foreign currencies
- Deal with VAT issues
- Discount codes created in Stripe
- Can we set limits for number of uses of a particular Discount Code.
- need to determine how we handle Member Discounts
- Preference is for member to enter address, and MailGun send discount code if they are member
- Need to include link on Event Form for “Need Member Discount Code?”
- Visitor clicks on a event link someplace in OWASP Universe
- Page on website
- Link from an email
- Link from a partner
- Event page has:
- Popup to capture email for shopping cart abandomment and returning to form (Nice to have)
- If returning it woudl restate the cart in the previous state
- Collect money in foreign currencies
- Introductory copy about the Event
- Listing of Products for the Event
- If a Produect has an inventory, show quantity remaining or SOLD OUT
- Use checkboxes to select Products/SKUs ( v1.0 will not allow multiple units purchased)
- Text field for DISCOUNT CODE
- Drop down for Security Industry Experience [Beginner/Intermediate/Advanced]
- Drop down for Persona [Defender/Builder/Breaker]
- Check box for “Agree to Terms of Purchase”
- Registration fees are non-refundable and non-transferable. Additionally, lost or stolen badges will not be replaced.
- While attending event, if you allow vendor to scan badge they will get x, y, z.
- Follow Code of Conduct can be expelled.
- Agree to being photographed
- Text field to indicate dietary restrictions
- Check box to “Join the OWASP Mailing List”
- Link to “Invoice me instead of paying online” that goes to (New) WuFoo Form
- Popup to capture email for shopping cart abandomment and returning to form (Nice to have)
- Click “Purchase” and given Stripe transaction form
- All form data and transaction stored into Stripe
- Light Integrations move data
- Registrant email address will be added to Mailchimp adding the ProductID tag to the contact
- Stripe will handle sending a receipt
- Mailchimp will handle sending Registrant Curriculum
- Registrant email address will be added to Mailchimp adding the ProductID tag to the contact
- Online Reports
- Google Sheet updated from Stripe in real-time
- [Nice to have] Live link with Boomset for badge
Product/SKUs
- Products are tied to an event
- Products have a name, price, inventory-quantity, and optionally a start/end date (to handle early bird promotions)
- Outside of the Events Form products have other metadata like Speaker/Trainer name, etc.
Discount Codes for v1.0
- Discount codes have a unique identifying string
- Codes are for a set price discount
- Shopping cart minus discount code value is no less than $0.
Slack Bot Requirements
- /event-lookup
- Responds with a list of events from now-30 days through “end of time” that include Name (as URL to online report from above), total-number-of-registrants
- /event-history
- Same as event-lookup but responds with ALL historical events
- /event-comp-attendee [ will be handled with a discount code]
- /event-create-discount {Event Identifer} {number of uses} {Code Name}
- Creates a discount code with name of Code Name with a set number of uses. It will be important to log the slack username in Stripe for this bot command.
- Bot returns, “Discount Code: Code with x uses created for EventName
- Need to manage name collisions - maybe when a code is requested through this process, it is assigned a random string generated by the bot instead of what is submitted by the user.
(slash) event-create-discount {eventid} number description
Questions
- Group discounts will be handled with an invoice - not online
- Need an easy to quickly add lots of Complimentary Registrations (like for Sponors, Booth, staff, etc)
Budget
$5,000