To: [CODE REQUESTOR]
CC: [PROJECT COORDINATOR]
Subject: Coupons for On-Campus Learners at [FULL SCHOOL NAME]
Body:
Your requested coupon codes are attached. These codes are valid for any current or future course runs of [COURSE NUMBER – COURSE NAME].
All codes will expire on [EXPIRATION DATE].
Also attached is a short document explaining the coupon redemption process. Please be aware that learners must be registered on edX to use a coupon code. Before a learner can redeem a code, they must complete the registration process.
If you have any questions, please don’t hesitate to reach out to me, your Partner Manager or Project Coordinator.
Coupons
The contains all the documentation we have on edX Coupon Code Process.
Documentation
Key Links
- Coupons
- Request Forms
- Confluence Documentation
- Marketing Documentation > Coupon Creation
- Product > Coupon Code Request Process
- Marketing Documentation > Coupons for On-Campus Learners
- Ed Services (CPS) > Coupon Codes
- Marketing Documentation > Coupon Redemption Reports
- Support > Coupons and Discounts
- Engineering (Revenue Squad) > Coupon Problem Diagnosis
- Coupon Data Model
- Coupon Tracking
Code Request Process
Coupon requests should come in via Google Form submissions, either our Discount Request form or the Course Seats for Campus Learners form. Both forms have integrated code batch delivery trackers on their response sheets.
There is a legacy process involving email submissions (either to the Coupon Coordinator, or to our Coupon Request Mailbox) with an accompanying order form, and manual tracking on a coupon tracking sheet, but since B2C and Enterprise code processes were split, formal email request processes have been deprecated.
All Enterprise requests should go to the ECS team for configuration, processing and delivery. A good rule of thumb is if a code request will require invoicing or a contract, it should be handled by ECS. Whereas, any code request that will be fulfilled by simply creating and delivering codes should be handled by the Marketing Operations team.
Discount Requests
Our discount request form is not only available to all internal employees, but we’ve shared the link with several partners to enable them to request codes for themselves. Discount req
Submissions to the discount request form can be found here: Discount Request Form (Responses) – Google Sheets
Requests submitted through the discount request form should have sufficient information to generate and deliver coupons. If, for any reason, a request is incomplete, contact the requestor for clarification or to get additional details about the order before proceeding with code generation.
Getting Notifications
To get notified when a new submission comes through the discount request form or oc-campus learner form, you can go to either the form itself, or to the response spreadsheet.
Form Notifications
1. Navigate to the form and select Responses
2. Open the Menu
3. Select Get Email Notifications for New Responses
Spreadsheet Notifications
1. Navigate to the spreadsheet and open Tools Menu
2. Select Notifications Rule
3. Set your notification rules and select Save
How to Create Coupon Codes
Coupon Tool Fields
Coupon Name
- Required, Editable
- There is a 30 character limit.
- The title should contain some or all of the following information:
- Name of partner/client requesting code
- Course ID/number that code is valid for
- Custom code (if applicable)
- Number of codes in batch (if applicable)
- Date/time range (if applicable)
- Create date
- On-campus learner codes should always be prefixed with C4oC. No other codes should use this prefix.
- Reference or copy other code names if needed.
Code Type
- Required, Not Editable
- Discount Code: a code that provided a %-off or $-off discount for a product or products
- Enrollment Code: a code that provides enrollment or verified upgrade at no cost to the learner. (Effectively a 100% Discount.)
Category
- Required, Editable
- There are many options. Choose the one most applicable to the code order.
- There is a list at the bottom of the doc with explanations.
- The most commonly used categories are: Affiliate Promotion, Bulk Enrollment, Course Promotion, Financial Assistance, Marketing-Partner Promotion, Marketing-Other, Sevices-Other.
- On-Campus Learners and the Partner No-Rev options are special use cases as transitions that use these codes will not be subject to revenue sharing with the partner.
- On-campus learner codes should always use the On-Campus Learners option.
Valid from *
- Required, Editable
- Entered in the format: YYYY-MM-DDTHH:mm:ss
- Code expiration is based in UTC. Expand or pad timeline to accommodate international learners.
Valid until *
- Required, Editable
- Entered in the format: YYYY-MM-DDTHH:mm:ss
- Code expiration is based in UTC. Expand or pad timeline to accommodate international learners.
Usage Limitations
- Can be used once by one customer – each code can only be used once.
- This is the most common use case
- Can be used once by multiple customers – each code can be used many times, but only once by each registered user.
- A very rare, specific use case
- Can be used multiple times by multiple customers – Each code can be used multiple times.
- This is a common use case, best for discount code marketing campaigns with custom code
Number of Codes *
- Required, Not Editable
- The number of codes in the code batch.
- Pay careful attention to the interaction between number of uses per code and number of codes.
Code
- Codes have a 15 character limit
Client *
- Required, Editable
- The organization requesting the code. Either a partner or internal department.
Invoice Type *
- Required, Editable
- Not used for B2C codes. Always select N/A
Query Type
- Required, Not Editable
- Single course
- Locks a code to a specific course run ID. Ex. course-v1:NYIF+ETFM2016.1x+1T2023a
- Should not be used in most cases.
- Multiple courses
- Determines code eligibility by a catalog query (see below). This should be the selection in 99.9% of code creations.
- This is the only option that allows changing a code configuration after code creation.
- Catalog
- Locks the code to a specific catalog UUID.
- Should not be used in most cases.
- Program
- Locks a code to a specific program UUID.
- Should not be used in most cases.
Query string: *
- Required. Only Editable if you have selected Multiple Course Query Type (above)
- Writing a query is an art, not a science. There are many ways to write a query that will result in the same courses being displayed.
- The queries are the Elasticsearch query string syntax.
- A query preview tool is here: https://stage-edx-discovery.edx.org/
- Detailed Elastisearch documentation is here.
Here are some tips and tricks to writing accurate queries:
- How to format the query:
- Use Boolean Operators (AND or OR) to search for more than one variable at once.
- Escape special characters
- You need to use a leading backslash (‘\’) to escape special characters such as ‘+’. See here for more detailed information.
- Or, wrap your course identifiers (key / number) in double quotes to create exact match criteria.
- The best ways to query:
- by Course Run Key | key:()
- the most versatile query, you can choose to use as much or as little of the course key as needed.
Ex:
key:(CSMM.101x)
key:(sysengx\+1T2017)
key:(ex101x OR ex102x or ex103x) - by Course Number | number:()
Ex:
number:(cyber501x)
number:(6.002x) - by Organization | org:()
Ex:
org:(juilliardopenclassroom) - by Course Run Title | title:()
Ex:
title:(“Analyzing”)
title:(“Power BI”)
title:(“Development”)
It’s also possible to search by title just by enclosing a full or partial course title in double quotes with no query signifier.
“Electronic Trading in Financial Markets” - by Start Date | start:[]
Formatted YYYY-mm-DD. Typically used to limit by a range.
Ex:
start:[2016-01-01 TO 2016-12-31]
Seat Types: *
- Required, Editable
- Non-credit: used for essentially all code creation. Requires selection of a seat type.
- In most cases, we’ll be selecting BOTH Verified and Professional
- Verified: courses with a free/audit enrollment option
- Professional: courses that are paid-only without a free/audit enrollment option
- Credit: used for courses that have convertible credit. There are very few use cases for this today.
Email domains
- Optional, Editable
- This will limit coupon redemptions to users registered with a specific email domain. This is entered with the form of just the email domain (do not include an ‘at symbol’ (@)). Separate email domains with a comma.
- Examples: edx.org, ibm.com, vtb24.ru
Note
- Optional, Editable
- This is a place to add additional notes or context for why the codes were created.
- Coupons for on-campus learner should always prefix the note with “Coupons for On-Campus;” and include the values in columns C, D, and E in the Request Sheet. There is a character limit, so it’s OK if the text is truncated.
- Example: Coupons for On-Campus; Nick Dols @ Wageningen University and Research – for campus & virtual exch
Salesforce Opportunity ID
- Optional, Editable
- Not used. Do not enter anything in this field.
Code Delivery
Delivery Template for On-Campus Codes
Coupon redemption instructions for attachment
Notes:
We have to be sure:
- Revenue share implications
- For on-campus learners – it is free but it may hit finance system – so there are ways to set up the codes where they DON’T Get FLagged for Revenue Share
- Discounts limit to 30% or less.( Now 20%) Also a Program bundle is 10% off. We don’t go above 30 bc we could have to pay the partner but we don;t lose money at that rate.
- If they ask for more than 30%, ask for the business case. Now 20%
- Start with the most restrictive structure – what is the least we can do and not put us at risk
- Consider codes are set to UTC and we need to consider that most are on either side of that time/date
- Limits – 15 character limit in the code
- Also limits in the batch name and every box to an extent
MOPS or ECS to Create the Code
Questions we use to determine if the request should go to MOPS or ECS? The lines that would push something over to ECS:
- Any sort of data sharing consent. If there’s redemption or user level data that requires learner to consent to have it shared, that needs Enterprise integration
- Self-service code admin requires Enterprise integration
- Curated catalog or catalogs
- Branded portal or custom landing page (although we can do light landing page work as needed, although nothing that requires catalog integration or ongoing maintenance)
- Any sort of billing or invoicing (either pre- or post- delivery)
- Any code configuration that would require rolling code deliveries or ongoing code maintenance (outside of yearly extension requests or similar)
At a very general level, if a code is fire-and-forget, we’re going to get it. If it needs a customer service touch or any additional process work outside of code creation and delivery, it’s probably not for us. If the answer to any of these questions is yes, then the request should go to the ECS team.
Code Reporting
Code Category
This matters for the finance team and rev share also if B2B gets credit. Audit Trail – Coupons / Vouchers can be found here.
Affiliate Promotion | Discount codes used by affiliates in our affiliate network |
---|---|
Bulk Enrollment | Enrollment codes used by the Enterprise/ECS team to enroll cohorts of enterprise learners into courses (Probably deprecated in favor of more specific Bulk Enrollment types) |
ConnectEd | Codes delivered as part of the ConnectEd initiative (circa 2014 to ~2016) |
Course Promotion | Discount codes used by marketing team to promote specific courses |
Customer Service | Codes used by the Support team |
Financial Assistance | Financial aid codes (90% off) |
Geography Promotion | Discount codes used by marketing team to promote in a specific geo |
Marketing Partner Promotion | Discount codes used by partner marketings team to promote courses from their institution (these are most partner requested discount codes) |
Marketing-Other | Discount codes used by marketing team for general marketing purposes (these are most marketing codes) |
Paid Cohort | never used |
Other | Codes that do not fit in any of the other categories |
Retention Promotion | Discount codes used by marketing team to retain learners (typically by offering |
Services-Other | Codes used by Ed Services for occasions that are not partner specific |
Support-Other | Codes used by the Support Team |
Upsell Promotion | Discount codes used by marketing team to promote the value of a verified cert |
Bulk Enrollment – Prepay | Enrollment codes used by the Enterprise/ECS team in cases where a client has prepaid for the code batch |
Bulk Enrollment – Upon Redemption | Enrollment codes used by the Enterprise/ECS team in cases where a client has not prepaid, and will be invoiced for each code redeemed |
Bulk Enrollment – Integration | Enrollment codes used by the Enterprise/ECS team in cases where the client has an integration |
On-Campus Learners | Enrollment codes requested by partners and used used to support our FBE model to allow on-campus learners access to gated content as part of a hybrid learning experience |
Partner No Rev – Prepay | Enrollment codes used by the Enterprise/ECS team for partner purchased codes that were prepaid at a discount (partner is not paid rev share on enrollments from these codes) |
Partner No Rev – Upon Redemption | Enrollment codes used by the Enterprise/ECS team for partner purchased codes that were not prepaid and will be and will be invoiced at a discount for each code redeemed (partner is not paid rev share on enrollments from these codes) |
Security Disclosure Reward | Codes used for bug bounty |
B2B Affiliate Promotion | this is for when we have an affiliate-type relationship with a company that wants to offer a discount code. it allows the generated revenue to be counted for b2b. eg, VISA15 for visa customers to get a discount on edX courses. |