Teachable logo

Teachable automation

Create Teachable coupon codes for a sale

A launch, a Black Friday sale or a partner promo needs its own code, and in Teachable each code is one form under Site > Coupons. A sale with a school code, two product codes and five partner codes means filling that form eight times and hoping none of the codes clash.

Cotlet does it in your own Teachable account with list_coupons, create_coupon and archive_coupon, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Official options

Can Teachable do this on its own?

Teachable's public API has no coupon endpoint, its experimental MCP article lists no coupon actions, and Zapier has no coupon action (checked 12 Oct 2026). Coupons are included on every Teachable plan since the June 2025 plan change, but each one is made by hand in the admin. The Bulk Single Use generator covers one-time random codes only, and those codes live only in the CSV you download.

By hand

How you do it in Teachable today

  1. Go to Site > Coupons > School Coupons for a code that covers the whole school or one product type, or open the product and its Coupons tab for a code on that product only.
  2. Choose a percentage or a fixed amount, then set whether the Teachable discount applies to all transactions or only the initial transaction of a payment plan or subscription.
  3. Type a code of letters and numbers only, and add an optional expiration date and a number available of up to 10,000 uses.
  4. For one-time codes, pick Add New Coupon > Bulk Single Use and click Generate CSV. Teachable does not show these codes in the school admin afterwards, so the CSV is the only copy.
  5. Repeat the form for every product and partner. The expiration date is the edit Teachable documents for an existing coupon, so a wrong discount or scope means creating another coupon.

With an agent

How to create Teachable coupon codes for a sale

Prompt

Make a 30% coupon BLACKFRIDAY26 for all courses, 100 uses, ending 1 December. Check first that the code is free.
  1. 01

    Check the code is free

    The agent reads list_coupons with archived codes included before creating anything. An active code with the same name is reported, not duplicated. Teachable rejects a code that another product already uses, so the agent proposes a variant such as BF26COURSES up front instead of failing halfway through a batch.

  2. 02

    Pick the narrowest scope that fits

    "All courses" becomes applies_to courses, "everything" becomes all_products, and a single product becomes a pricing plan coupon. Teachable applies product coupons to specific pricing plans, so when you name a product the agent asks which plan you mean and for its ID instead of guessing.

  3. 03

    Respect the price floor

    Before a discount goes out, the agent compares it with the plan prices you give it. A discount that would leave a paid plan between $0.01 and $0.99 is stopped with the numbers shown. A 100% coupon is created only when you ask for free access in so many words.

  4. 04

    Create each code with your OK

    Each create_coupon call shows code, scope, discount, cadence, expiry and number available for approval. For a fixed amount the agent states the currency, because a buyer who checks out in another currency through Adaptive Pricing does not get the discount.

  5. 05

    Close the sale afterwards

    A follow-up run, the day after the end date, lists codes that are past their expiry or used up. archive_coupon runs only on the ones you confirm, and partner codes still in use are left alone with their remaining count reported.

What you get back

Example data

Checked 23 coupons, archived ones included.
BLACKFRIDAY is still active from 2025 (318 uses), so BLACKFRIDAY26 was created instead, after your OK.
BLACKFRIDAY26: 30% off all courses, initial transaction only, expires 1 Dec 2026, 100 available.
PARTNERANNA: $20 off the one-time plan of Python for Beginners, USD checkouts only.
Not created: 95% off Team Onboarding, which would leave the $15 plan at $0.75.
Ready to archive: SUMMER20, expired 1 Sep, 212 of 500 used.

Other ways to ask

  • Make five partner codes, 20% off courses only, one per affiliate name in partners.csv, each limited to 50 uses.
  • Create LAUNCH40 for the Data Analysis course, 40% off the first payment of the monthly plan only, valid until Sunday.
  • Which Teachable coupons expired or ran out last month? Archive them after I confirm the list.

Before you automate it

What Teachable allows, and what to know first

  • Teachable returns an error when a new coupon uses a code that another product already uses, so one code cannot be reused across products.
  • Teachable does not sell a paid product below $1.00 USD: a 100% off coupon is allowed, but a discount that leaves a price between $0.01 and $0.99 is not.
  • Teachable applies coupons to the main product only, not to order bumps, which take their discount from the order bump's sales price field.
  • Archiving a Teachable pricing plan invalidates every outstanding coupon on that plan, so retiring an old price also ends codes already shared with buyers.
  • Teachable fixed-amount coupons apply only when the purchase is in the coupon's currency, which matters when Adaptive Pricing shows a student a local price.

create_coupon and archive_coupon ask for your OK by default. To run it on a schedule without you, switch confirmation off for those tools in your dashboard.

Sources: Teachable Help: Price your products (coupons) · Teachable Help: Price your products (pricing plans and archiving) · Teachable Help: New Teachable plans in June 2025

REST

Call create_coupon from a script

curl

curl https://cotlet.dev/api/v1/teachable/create_coupon \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Black Friday 2026","code":"BLACKFRIDAY26","discount_type":"percent","discount":30,"applies_to":"courses","expires_at":"2026-12-01","quantity":100}'

Example response

{
  "coupon_id": "3918274",
  "name": "Black Friday 2026",
  "code": "BLACKFRIDAY",
  "discount": "30%",
  "applies_to": "courses",
  "expires_at": "2026-12-01",
  "quantity": 100,
  "used": 0,
  "status": "active"
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is teachable_create_coupon. Example data.

Schedule it in n8n, Make, Zapier or cron

Tools

Teachable tools this automation uses

Cotlet Teachable tools used to create Teachable coupon codes for a sale
Tool Parameters
list_coupons include_archived
create_coupon name, code, discount_type, discount, applies_to, pricing_plan_id, expires_at, quantity
archive_coupon coupon_id
All 15 Teachable tools with descriptions

Give your agent access to Teachable.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Teachable.