
For businesses that pay affiliates: set up and run your affiliate program from your AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check that affiliate tracking works, after the tracking script has been added: fetches a page of the site (the business website unless url is given) and looks for this account's tag, then says whether a browser has run the script, whether a payment platform is connected, and whether a test-mode purchase has reached LinkJolt (the one tool that shows test sales). Each check comes with a sentence and next names the first thing left to do. Run it after the script is deployed, and again after the person buys once in their payment platform's test mode through an affiliate link. Requires Pro plan or higher, or a new account that has not picked a plan yet.
The page to check, e.g. https://acme.com/pricing (default: the business website)
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http linkjolt https://www.linkjolt.io/api/mcp
Check that affiliate tracking works, after the tracking script has been added: fetches a page of the site (the business website unless url is given) and looks for this account's tag, then says whether a browser has run the script, whether a payment platform is connected, and whether a test-mode purchase has reached LinkJolt (the one tool that shows test sales). Each check comes with a sentence and next names the first thing left to do. Run it after the script is deployed, and again after the person buys once in their payment platform's test mode through an affiliate link. Requires Pro plan or higher, or a new account that has not picked a plan yet.
| Argument | Type | Description |
|---|---|---|
| url | string | The page to check, e.g. https://acme.com/pricing (default: the business website) |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The page to check, e.g. https://acme.com/pricing (default: the business website)"
}
}
}Create an affiliate campaign: what affiliates earn per sale and where their links send people. Returns the campaign and its joinUrl, the link to share with affiliates so they can sign up. Confirm the commission with the user before calling. A new campaign is active at once and, unless isPublic is false, listed in LinkJolt's Discovery marketplace where affiliates browse programs. Recurring commissions pay on renewals too. The plan's campaign limit applies. Requires Pro plan or higher; live keys only.
| Argument | Type | Description |
|---|---|---|
| name* | string | Campaign name affiliates see, at least 2 characters |
| isPublic | boolean | List the campaign in the Discovery marketplace (default true) |
| targetUrl | string | Where affiliate links send people, usually the business's website or pricing page |
| description | string | What the program offers, shown to affiliates |
| commissionType* | string | Percentage of the sale, or a fixed amount per sale |
| commissionValue* | number | The percent (e.g. 20) or the fixed amount in the brand currency (e.g. 30) |
| autoApproveAffiliates | boolean | Approve affiliates who join through the join link without review (default false) |
| recurringCommissionMode | string | Limit renewals by months since the first sale, or by number of payments (default duration) |
| recurringCommissionType | string | Renewals pay the same rate as the first sale, or a custom rate (default same) |
| recurringCommissionCount | number | Payments that pay commission, including the first; omit for no limit |
Manually record a conversion (a sale to credit to an affiliate). Like any tracked sale, a live one notifies the merchant's team and emails the affiliate it credits. Requires an Ultimate or Scale plan key with write access. Test keys record test data and email nobody.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Sale amount (positive, major units, e.g. 49.99) |
| clickId | string | Originating click id, when known |
| orderId | string | Your order reference; duplicates are rejected |
| currency | string | 3-letter ISO code; defaults to the campaign currency |
| campaignId* | string | The campaign the sale belongs to |
| affiliateId* | string | The affiliate to credit |
| customerName | string | Buyer name, shown on the commissions page |
| customerEmail | string | Buyer email (enables fraud checks) |
| conversionType | string |
Give an affiliate a discount code so sales using it are credited to them. With createInProvider true, LinkJolt creates the code in the brand's connected Stripe, Polar or Creem (the one it creates codes in unless provider is given), as the dashboard's Add coupon does: set percentOff, or amountOff with currency, and duration (once, forever, or repeating with durationInMonths). Without it, the code must already exist in the payment platform and this registers it (for a Stripe code customers type, pass its promo_ id). Confirm the code, the discount and the affiliate with the person first. If no platform that creates codes is connected, the answer gives the link to connect Stripe. Requires an Ultimate or Scale plan key with write access; a test key only registers.
| Argument | Type | Description |
|---|---|---|
| code* | string | The readable code, e.g. SARAH20 |
| currency | string | 3-letter ISO code for amountOff |
| duration | string | With createInProvider: how long the discount lasts for a customer |
| provider | string | Where the discount lives (default stripe when registering; with createInProvider, the platform the brand creates codes in) |
| amountOff | number | Fixed amount off, with currency: the real discount with createInProvider, a label when registering |
| campaignId* | string | The campaign the coupon belongs to |
Use this to fetch the full record behind a search result id (campaign:<id>, affiliate:<id>, coupon:<id>, or conversion:<id>). Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| id* | string | A composite id returned by the search tool |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "A composite id returned by the search tool"
}
}
}Get one campaign with full detail, including affiliate count. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| campaignId* | string | The campaign id |
{
"type": "object",
"required": [
"campaignId"
],
"properties": {
"campaignId": {
"type": "string",
"description": "The campaign id"
}
}
}LinkJolt's plans and prices, each plan's monthly tracked-sales limit, what this connector can do on each plan, and how the free trial works. Needs no LinkJolt account. Use it when someone asks what LinkJolt costs or which plan they need.
No arguments.
{
"type": "object",
"properties": {}
}This month's program snapshot in one call: revenue, conversions, commissions, top affiliates by commission, and the most recent conversions. In clients that show MCP Apps cards (Claude, ChatGPT) this renders as an interactive card; other clients get the same data as JSON. Requires Pro plan or higher.
No arguments.
{
"type": "object",
"properties": {}
}Where this LinkJolt account is in setting up its affiliate program: the business name and website, the launch steps (business details, campaign, payment connection, first affiliate, first sale) with the next one to do, the tracking script tag for the site and whether it has been seen, and each campaign's join link. Call it first when helping someone set up or launch. When business.needsDetails is true the name is a placeholder LinkJolt made at sign-up (from the email domain, or the person's first name): ask for the real one. Connecting Stripe or another payment platform can only be done by the person in the browser; connectLinks gives Stripe's one-click link for this account and the page for the others. Requires Pro plan or higher, or a new account that has not picked a plan yet.
No arguments.
{
"type": "object",
"properties": {}
}Get aggregate stats for the brand: revenue, commissions, conversions, clicks (optionally within a date range), with money also listed per currency in byCurrency. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| to | string | End of the range as an ISO date |
| from | string | Start of the range as an ISO date |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "End of the range as an ISO date"
},
"from": {
"type": "string",
"description": "Start of the range as an ISO date"
}
}
}Get one Affiliate Team with members, campaigns and goals. Requires the Scale plan.
| Argument | Type | Description |
|---|---|---|
| teamId* | string | The team id |
{
"type": "object",
"required": [
"teamId"
],
"properties": {
"teamId": {
"type": "string",
"description": "The team id"
}
}
}The steps to track affiliate sales on one payment platform, filled in with this account's own tracking script and webhook address: the same text the Integrations page gives to AI assistants. Use it to help add the tracking script to the site and pass the referral to checkout, then check_tracking to confirm it works. Connecting the platform itself happens in the browser (connectLinks: Stripe in one click, the others on the Integrations page), and for Stripe, Paddle, Polar and Creem connecting there sets up the webhook, so a manual webhook step is only needed without that connection. Requires Pro plan or higher, or a new account that has not picked a plan yet.
| Argument | Type | Description |
|---|---|---|
| platform* | string | Where the business takes payment. payment-links covers Stripe Payment Links, Gumroad and Lemon Squeezy. |
{
"type": "object",
"required": [
"platform"
],
"properties": {
"platform": {
"enum": [
"stripe",
"payment-links",
"paddle",
"polar",
"creem",
"woocommerce",
"squarespace",
"bigcommerce",
"carrd",
"webflow",
"gopay",
"fourthwall",
"apple-iap",
"shopify-app-billing"
],
"type": "string",
"description": "Where the business takes payment. payment-links covers Stripe Payment Links, Gumroad and Lemon Squeezy."
}
}
}Email one person an invitation to join a campaign as an affiliate. This sends a real email in the business's name, so confirm the address and campaign with the user first. Refused when the person is already on the campaign or already has a waiting invitation. At most 10 a minute. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| name | string | The person's name, used in the email greeting |
| email* | string | The person's email address |
| campaignId* | string | The campaign to invite them to |
{
"type": "object",
"required": [
"campaignId",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The person's name, used in the email greeting"
},
"email": {
"type": "string",
"description": "The person's email address"
},
"campaignId": {
"type": "string",
"description": "The campaign to invite them to"
}
}
}List affiliates across your campaigns, with earnings and click counts. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number, starting at 1 (default 1) |
| sort | string | Sort as field:direction, e.g. joinedAt:desc |
| limit | number | Results per page, max 100 (default 25) |
| status | string | Filter by status |
| campaignId | string | Only affiliates on this campaign |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"sort": {
"type": "string",
"description": "Sort as field:direction, e.g. joinedAt:desc"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
},
"status": {
"enum": [
"pending",
"approved",
"rejected"
],
"type": "string",
"description": "Filter by status"
},
"campaignId": {
"type": "string",
"description": "Only affiliates on this campaign"
}
}
}List team bonus awards across all teams, for reconciliation. Read-only: approving awards is deliberately not available to assistants. Requires the Scale plan.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number, starting at 1 (default 1) |
| limit | number | Results per page, max 100 (default 25) |
| status | string | Filter by award status |
| teamId | string | Only awards for this team |
| periodKey | string | Filter by period, e.g. 2026-07 |
| affiliateId | string | Only awards for this affiliate |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
},
"status": {
"type": "string",
"description": "Filter by award status"
},
"teamId": {
"type": "string",
"description": "Only awards for this team"
},
"periodKey": {
"type": "string",
"description": "Filter by period, e.g. 2026-07"
},
"affiliateId": {
"type": "string",
"description": "Only awards for this affiliate"
}
}
}List the affiliate campaigns on this LinkJolt account (the brand the API key belongs to), with stats. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number, starting at 1 (default 1) |
| sort | string | Sort as field:direction, e.g. createdAt:desc |
| limit | number | Results per page, max 100 (default 25) |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"sort": {
"type": "string",
"description": "Sort as field:direction, e.g. createdAt:desc"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
}
}
}List conversions (tracked sales) with filters for status, campaign, affiliate and date range. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| to | string | Only conversions on or before this ISO date |
| from | string | Only conversions on or after this ISO date |
| page | number | Page number, starting at 1 (default 1) |
| sort | string | Sort as field:direction, e.g. createdAt:desc |
| limit | number | Results per page, max 100 (default 25) |
| status | string | Filter by payment status |
| campaignId | string | Only conversions for this campaign |
| affiliateId | string | Only conversions for this affiliate |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Only conversions on or before this ISO date"
},
"from": {
"type": "string",
"description": "Only conversions on or after this ISO date"
},
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"sort": {
"type": "string",
"description": "Sort as field:direction, e.g. createdAt:desc"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
},
"status": {
"enum": [
"pending",
"trial_period",
"approved",
"paid",
"rejected",
"refunded"
],
"type": "string",
"description": "Filter by payment status"
},
"campaignId": {
"type": "string",
"description": "Only conversions for this campaign"
},
"affiliateId": {
"type": "string",
"description": "Only conversions for this affiliate"
}
}
}List registered affiliate coupon codes. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| code | string | Look up one code |
| page | number | Page number, starting at 1 (default 1) |
| limit | number | Results per page, max 100 (default 25) |
| provider | string | Filter by provider |
| campaignId | string | Only coupons for this campaign |
| affiliateId | string | Only coupons for this affiliate |
{
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Look up one code"
},
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
},
"provider": {
"enum": [
"stripe",
"paddle",
"apple",
"polar",
"creem",
"lemonsqueezy"
],
"type": "string",
"description": "Filter by provider"
},
"campaignId": {
"type": "string",
"description": "Only coupons for this campaign"
},
"affiliateId": {
"type": "string",
"description": "Only coupons for this affiliate"
}
}
}List the affiliate payout queue for reconciliation. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| to | string | Only payouts on or before this ISO date |
| from | string | Only payouts on or after this ISO date |
| page | number | Page number, starting at 1 (default 1) |
| limit | number | Results per page, max 100 (default 25) |
| status | string | Filter by payout status |
| affiliateId | string | Only payouts for this affiliate |
| conversionId | string | Only payouts for this conversion |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Only payouts on or before this ISO date"
},
"from": {
"type": "string",
"description": "Only payouts on or after this ISO date"
},
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
},
"status": {
"type": "string",
"description": "Filter by payout status"
},
"affiliateId": {
"type": "string",
"description": "Only payouts for this affiliate"
},
"conversionId": {
"type": "string",
"description": "Only payouts for this conversion"
}
}
}List a team's targets and current-period progress. Requires the Scale plan.
| Argument | Type | Description |
|---|---|---|
| teamId* | string | The team id |
{
"type": "object",
"required": [
"teamId"
],
"properties": {
"teamId": {
"type": "string",
"description": "The team id"
}
}
}List Affiliate Teams with rosters, targets and pending awards. Requires the Scale plan.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number, starting at 1 (default 1) |
| limit | number | Results per page, max 100 (default 25) |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1 (default 1)"
},
"limit": {
"type": "number",
"description": "Results per page, max 100 (default 25)"
}
}
}Plan an affiliate program for a product before launching it: a commission rate, whether to pay on renewals, and how to approve affiliates, from LinkJolt's published benchmarks of real SaaS programs, plus what an affiliate would earn per sale at typical rates. Needs no LinkJolt account. Use it when someone asks what commission to offer or how to structure a program.
| Argument | Type | Description |
|---|---|---|
| price* | number | What a customer pays per billing period, e.g. 49 |
| billing | string | How the price is billed (default monthly) |
| currency | string | Three-letter currency code of the price (default USD) |
| commissionPercent | number | A commission rate the person is considering, e.g. 25 |
{
"type": "object",
"required": [
"price"
],
"properties": {
"price": {
"type": "number",
"description": "What a customer pays per billing period, e.g. 49"
},
"billing": {
"enum": [
"monthly",
"yearly",
"one_time"
],
"type": "string",
"description": "How the price is billed (default monthly)"
},
"currency": {
"type": "string",
"description": "Three-letter currency code of the price (default USD)"
},
"commissionPercent": {
"type": "number",
"description": "A commission rate the person is considering, e.g. 25"
}
}
}Use this to find records in the caller's own LinkJolt affiliate program by free text: campaign names, affiliate names or emails, coupon codes, and conversion order ids or customer names. Returns result ids that the fetch tool resolves to full records. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search text, at least 2 characters |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search text, at least 2 characters"
}
}
}Approve or reject an affiliate who applied to a campaign and is waiting for review (list_affiliates with status pending shows who is waiting, with each campaign they applied to). Approving lets them promote the campaign at once: they get their link by email, and a coupon code too when the campaign makes them. Rejecting is final from here: they cannot apply again, and only the dashboard can let them back in. Confirm each decision with the user before calling. This never approves sales or commissions. Requires Pro plan or higher.
| Argument | Type | Description |
|---|---|---|
| action* | string | approve lets them in; reject turns them down |
| campaignId* | string | The campaign they applied to |
| affiliateId* | string | The affiliate who applied |
{
"type": "object",
"required": [
"affiliateId",
"campaignId",
"action"
],
"properties": {
"action": {
"enum": [
"approve",
"reject"
],
"type": "string",
"description": "approve lets them in; reject turns them down"
},
"campaignId": {
"type": "string",
"description": "The campaign they applied to"
},
"affiliateId": {
"type": "string",
"description": "The affiliate who applied"
}
}
}Set the business name and website for this LinkJolt account (the brand the connection belongs to). Affiliates see the name on the join page and in emails. Send either or both. Requires Pro plan or higher, or a new account that has not picked a plan yet; live keys only.
| Argument | Type | Description |
|---|---|---|
| website | string | The website, e.g. acme.com (https:// is added when missing) |
| businessName | string | The business or product name, at least 2 characters |
{
"type": "object",
"properties": {
"website": {
"type": "string",
"description": "The website, e.g. acme.com (https:// is added when missing)"
},
"businessName": {
"type": "string",
"description": "The business or product name, at least 2 characters"
}
}
}Change an existing campaign: its name, description, where links send people, status (active, or inactive to pause it), the commission, whether it is listed in the Discovery marketplace, whether new affiliates are approved automatically, or the recurring commission terms. Send only what changes; everything else stays as it is. Confirm the exact change with the user before calling, because affiliates see the new terms at once. Commission tiers, coupon codes, files and prices are changed on the dashboard. Returns the campaign and `changed`, the fields that actually changed. Requires Pro plan or higher; live keys only.
| Argument | Type | Description |
|---|---|---|
| name | string | New campaign name, at least 2 characters |
| status | string | active runs the campaign; inactive pauses it |
| isPublic | boolean | List the campaign in the Discovery marketplace |
| targetUrl | string | Where affiliate links send people |
| campaignId* | string | The campaign to change |
| description | string | New description shown to affiliates |
| commissionType | string | Percentage of the sale, or a fixed amount per sale |
Approve or reject a pending conversion. Requires an Ultimate or Scale plan key with write access. Refunded conversions are terminal and cannot be changed. Approving a conversion whose commission is more than 5 times its sale (or any commission on a zero sale) is refused with commission_above_sale and changes nothing; show the user the returned sentence and set confirmAboveSale to true only after they confirm. If automatic payouts are switched on for the brand, approving a conversion queues its commission for the next automatic payout run (at least a day later, Stripe payouts only; affiliates paid by PayPal or Wise are paid by hand), and rejecting an approved one takes it back out of that queue. This tool never sends money itself.
| Argument | Type | Description |
|---|---|---|
| status* | string | New status |
| conversionId* | string | The conversion id |
| confirmAboveSale | boolean | Approve even though the commission is more than 5 times its sale. Send true only after the user has seen the commission_above_sale message and confirmed it. |
{
"type": "object",
"required": [
"conversionId",
"status"
],
"properties": {
"status": {
"enum": [
"approved",
"rejected"
],
"type": "string",
"description": "New status"
},
"conversionId": {
"type": "string",
"description": "The conversion id"
},
"confirmAboveSale": {
"type": "boolean",
"description": "Approve even though the commission is more than 5 times its sale. Send true only after the user has seen the commission_above_sale message and confirmed it."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
| recurringCommissionValue |
| number |
| The renewal rate when recurringCommissionType is custom |
| enableRecurringCommissions | boolean | Also pay commission on subscription renewals (default false) |
| recurringCommissionDurationMonths | number | Months of renewals that pay commission; omit for no limit |
{
"type": "object",
"required": [
"name",
"commissionType",
"commissionValue"
],
"properties": {
"name": {
"type": "string",
"description": "Campaign name affiliates see, at least 2 characters"
},
"isPublic": {
"type": "boolean",
"description": "List the campaign in the Discovery marketplace (default true)"
},
"targetUrl": {
"type": "string",
"description": "Where affiliate links send people, usually the business's website or pricing page"
},
"description": {
"type": "string",
"description": "What the program offers, shown to affiliates"
},
"commissionType": {
"enum": [
"percentage",
"fixed"
],
"type": "string",
"description": "Percentage of the sale, or a fixed amount per sale"
},
"commissionValue": {
"type": "number",
"description": "The percent (e.g. 20) or the fixed amount in the brand currency (e.g. 30)"
},
"autoApproveAffiliates": {
"type": "boolean",
"description": "Approve affiliates who join through the join link without review (default false)"
},
"recurringCommissionMode": {
"enum": [
"duration",
"payment_count"
],
"type": "string",
"description": "Limit renewals by months since the first sale, or by number of payments (default duration)"
},
"recurringCommissionType": {
"enum": [
"same",
"custom"
],
"type": "string",
"description": "Renewals pay the same rate as the first sale, or a custom rate (default same)"
},
"recurringCommissionCount": {
"type": "number",
"description": "Payments that pay commission, including the first; omit for no limit"
},
"recurringCommissionValue": {
"type": "number",
"description": "The renewal rate when recurringCommissionType is custom"
},
"enableRecurringCommissions": {
"type": "boolean",
"description": "Also pay commission on subscription renewals (default false)"
},
"recurringCommissionDurationMonths": {
"type": "number",
"description": "Months of renewals that pay commission; omit for no limit"
}
}
}| Defaults to one_time |
| parentConversionId | string | For recurring: the original conversion id |
{
"type": "object",
"required": [
"campaignId",
"affiliateId",
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Sale amount (positive, major units, e.g. 49.99)"
},
"clickId": {
"type": "string",
"description": "Originating click id, when known"
},
"orderId": {
"type": "string",
"description": "Your order reference; duplicates are rejected"
},
"currency": {
"type": "string",
"description": "3-letter ISO code; defaults to the campaign currency"
},
"campaignId": {
"type": "string",
"description": "The campaign the sale belongs to"
},
"affiliateId": {
"type": "string",
"description": "The affiliate to credit"
},
"customerName": {
"type": "string",
"description": "Buyer name, shown on the commissions page"
},
"customerEmail": {
"type": "string",
"description": "Buyer email (enables fraud checks)"
},
"conversionType": {
"enum": [
"one_time",
"recurring",
"trial"
],
"type": "string",
"description": "Defaults to one_time"
},
"parentConversionId": {
"type": "string",
"description": "For recurring: the original conversion id"
}
}
}| percentOff |
| number |
| Percent off (1-100): the real discount with createInProvider, a label when registering |
| affiliateId* | string | The affiliate the code is attributed to |
| description | string | With createInProvider: the discount's name in the payment platform (default: the code) |
| appleOfferType | number | Apple offer type: 1 introductory, 2 promotional, 3 offer code |
| creemDiscountId | string | Registering a Creem code: its discount id (dis_...) |
| polarDiscountId | string | Registering a Polar code: its discount id |
| createInProvider | boolean | Create the code in the brand's connected Stripe, Polar or Creem instead of registering one that already exists |
| durationInMonths | number | With duration repeating: for how many months (1-36) |
| paddleDiscountId | string | Registering a Paddle code: its discount id (dsc_...) |
| stripePromotionCodeId | string | Registering a Stripe code: its promotion code id (promo_...). Needed for a code customers type: Stripe sends only this id with the sale, never the code text |
{
"type": "object",
"required": [
"campaignId",
"affiliateId",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The readable code, e.g. SARAH20"
},
"currency": {
"type": "string",
"description": "3-letter ISO code for amountOff"
},
"duration": {
"enum": [
"once",
"forever",
"repeating"
],
"type": "string",
"description": "With createInProvider: how long the discount lasts for a customer"
},
"provider": {
"enum": [
"stripe",
"paddle",
"apple",
"polar",
"creem",
"lemonsqueezy"
],
"type": "string",
"description": "Where the discount lives (default stripe when registering; with createInProvider, the platform the brand creates codes in)"
},
"amountOff": {
"type": "number",
"description": "Fixed amount off, with currency: the real discount with createInProvider, a label when registering"
},
"campaignId": {
"type": "string",
"description": "The campaign the coupon belongs to"
},
"percentOff": {
"type": "number",
"description": "Percent off (1-100): the real discount with createInProvider, a label when registering"
},
"affiliateId": {
"type": "string",
"description": "The affiliate the code is attributed to"
},
"description": {
"type": "string",
"description": "With createInProvider: the discount's name in the payment platform (default: the code)"
},
"appleOfferType": {
"enum": [
1,
2,
3
],
"type": "number",
"description": "Apple offer type: 1 introductory, 2 promotional, 3 offer code"
},
"creemDiscountId": {
"type": "string",
"description": "Registering a Creem code: its discount id (dis_...)"
},
"polarDiscountId": {
"type": "string",
"description": "Registering a Polar code: its discount id"
},
"createInProvider": {
"type": "boolean",
"description": "Create the code in the brand's connected Stripe, Polar or Creem instead of registering one that already exists"
},
"durationInMonths": {
"type": "number",
"description": "With duration repeating: for how many months (1-36)"
},
"paddleDiscountId": {
"type": "string",
"description": "Registering a Paddle code: its discount id (dsc_...)"
},
"stripePromotionCodeId": {
"type": "string",
"description": "Registering a Stripe code: its promotion code id (promo_...). Needed for a code customers type: Stripe sends only this id with the sale, never the code text"
}
}
}| commissionValue | number | The percent (e.g. 25) or the fixed amount in the campaign currency |
| autoApproveAffiliates | boolean | Approve affiliates who join through the join link without review |
| recurringCommissionMode | string | Limit renewals by months since the first sale, or by number of payments |
| recurringCommissionType | string | Renewals pay the same rate as the first sale, or a custom rate |
| recurringCommissionCount | number | Payments that pay commission, including the first |
| recurringCommissionValue | number | The renewal rate when recurringCommissionType is custom |
| enableRecurringCommissions | boolean | Also pay commission on subscription renewals |
| recurringCommissionDurationMonths | number | Months of renewals that pay commission |
{
"type": "object",
"required": [
"campaignId"
],
"properties": {
"name": {
"type": "string",
"description": "New campaign name, at least 2 characters"
},
"status": {
"enum": [
"active",
"inactive"
],
"type": "string",
"description": "active runs the campaign; inactive pauses it"
},
"isPublic": {
"type": "boolean",
"description": "List the campaign in the Discovery marketplace"
},
"targetUrl": {
"type": "string",
"description": "Where affiliate links send people"
},
"campaignId": {
"type": "string",
"description": "The campaign to change"
},
"description": {
"type": "string",
"description": "New description shown to affiliates"
},
"commissionType": {
"enum": [
"percentage",
"fixed"
],
"type": "string",
"description": "Percentage of the sale, or a fixed amount per sale"
},
"commissionValue": {
"type": "number",
"description": "The percent (e.g. 25) or the fixed amount in the campaign currency"
},
"autoApproveAffiliates": {
"type": "boolean",
"description": "Approve affiliates who join through the join link without review"
},
"recurringCommissionMode": {
"enum": [
"duration",
"payment_count"
],
"type": "string",
"description": "Limit renewals by months since the first sale, or by number of payments"
},
"recurringCommissionType": {
"enum": [
"same",
"custom"
],
"type": "string",
"description": "Renewals pay the same rate as the first sale, or a custom rate"
},
"recurringCommissionCount": {
"type": "number",
"description": "Payments that pay commission, including the first"
},
"recurringCommissionValue": {
"type": "number",
"description": "The renewal rate when recurringCommissionType is custom"
},
"enableRecurringCommissions": {
"type": "boolean",
"description": "Also pay commission on subscription renewals"
},
"recurringCommissionDurationMonths": {
"type": "number",
"description": "Months of renewals that pay commission"
}
}
}