Service
Sell your services right in Discord, with a price list, order panel, orders in tickets, automatic delivery, licenses, your own website and reviews.
On this page
- The flow
- The Service area
- Prices
- Which tier applies
- When the size changes
- Trial
- Subscription or prepaid
- Quick start
- Products
- Delivery time
- Delivery speeds
- Delivery time display
- Status message
- Payment methods
- Reporting a payment
- Unpaid orders
- Messages
- Channels
- Order panel
- Legal
- The questionnaire
- The seller line
- Legal texts for customers
- The order flow in Discord
- Price list
- Order panel
- Ticket and order card
- Buttons on the order card
- Order status
- Queue
- Delivery and corrections
- Withdrawal and required information in the order flow
- Withdrawal function
- Consent boxes
- Order confirmation
- Delivery date, product type and rights of use
- Crossed out prices
- Countdowns
- Reviews
- Delivery and licenses
- How the delivery runs
- License keys
- My purchases and /license
- License check API
- Discounts & Promotions
- Discounts
- Flash Sale
- How discounts work together
- Discount by command
- Coupon codes
- Creator codes
- Redeeming
- Reviews
- How we check reviews
- Custom design
- Variables
- Restock, upgrade and community goal
- Restock notification
- Upgrade
- Community goal
- Orders and overview in the panel
- Overview
- Orders
- Data of an order
- Statistics & Customers
- Tebex
- Connecting
- Packages in the price list
- Purchases
- After purchase
- Updates, resellers and webhooks
- Updates
- Resellers
- Webhooks
- Website
- Creating and editing
- Design
- Product pages
- Publishing and settings
- Statistics without cookies
- Google Analytics
- Permissions
- In the panel
- In Discord
- When access ends
- Limits
- Commands
- Required permissions
- Related
In the panel under: Service, a separate area at the very top of the sidebar
A shop right in your Discord server, for everyone who sells services: designs and graphics, scripts and bots, commissions and other digital work. Customers see your products in a price list, put their order together in an order panel, and your team handles every order in its own ticket. At the end there is a review.
On top of that come tools for digital products and bigger shops: automatic delivery with license keys, updates to every buyer, resellers, webhooks, a Tebex connection and your own shop website.
The flow
Price list your products by category, each with an "Order" button
└─ Order panel only the customer sees it: variant, extras, delivery, payment method
└─ Ticket one ticket per order with the order card, plus the confirmation by DM
└─ Payment the customer pays you directly, your team confirms
└─ Delivery by hand in the ticket or automatically by DM, then the review
The Service area
The module has its own area in the panel with its own sidebar. You enter it through the Service entry at the very top of the sidebar and leave it again with Back to panel. The entry shows the number of open orders. As long as there is neither a trial nor a subscription, it says Try.
| Group | Pages |
|---|---|
| Shop | Overview, Orders, Products, Discounts & Promotions |
| Workflow | Delivery time, Payment methods, Messages |
| Insights | Statistics & Customers |
| Extensions | Tebex, Licenses, Webhooks |
| Website | Editor, Settings, Statistics |
| Management | Legal, Team & Permissions, Subscription & Tier |
There is no switch to turn it on or off. The shop is open as long as the trial or a subscription is running.
Prices
The Service module costs money because your server earns money with it. It is independent of Premium: Premium unlocks nothing here, and the Service module does not give you Premium.
The price depends on the size of your server. Every tier has the full feature set, only the price differs.
| Tier | Members | 1 month | 3 months | 6 months | 12 months |
|---|---|---|---|---|---|
| S | up to 250 members | €1.99 | €4.49 | €8.49 | €15.99 |
| M | 251 to 1,000 members | €3.49 | €7.99 | €14.99 | €27.99 |
| L | 1,001 to 5,000 members | €5.99 | €13.49 | €25.49 | €47.99 |
| XL | over 5,000 members | €9.99 | €22.49 | €42.99 | €79.99 |
All prices are final prices, no VAT is charged.
Which tier applies
What counts is the median of the daily member count over the last 30 days. Short spikes from giveaways or raids therefore do not change the tier, and neither does a quick clean-up right before purchase. If your server has less than 7 days of history, the current member count is used.
Under Subscription & Tier you see your member count, your tier and how many members the next tier starts at.
When the size changes
- The tier is fixed at purchase. During a paid term the price never changes, even if your server grows.
- If your server gets smaller, it automatically becomes cheaper from the next renewal.
- If it gets bigger, we ask you first. The higher price only applies once you agree. Without your agreement, your subscription ends at the end of the period.
- With prepaid, the tier applies to the whole purchased time. At the next purchase, the then current tier counts.
Trial
Every server can try the module once for 7 days for free, without payment details and with the full feature set. A server admin starts it with Try 7 days for free on the area's start page. In the Start the trial dialog you accept the terms of the Service module and the data processing agreement. The trial ends on its own and never turns into a subscription, and the remaining time is shown at the top of the area.
Subscription or prepaid
| Subscription | Prepaid | |
|---|---|---|
| Term | 1 month | 1 to 36 months, for example 3, 6 or 12 |
| Payment | every month | once, in advance |
| Renewal | automatically every month, cancelable monthly | none |
The prices for 3, 6 and 12 months in the table above apply to prepaid. Other terms cost per month as much as the longest of these terms that you reach with them. So 24 months of prepaid in tier S cost €31.98, exactly twice as much as 12 months.
Open the purchase
Under Subscription & Tier, click Subscribe.
Choose subscription or prepaid and the term
The summary shows the tier, term and final price.
Confirm the immediate start
A mandatory checkbox, because the module starts right away. Next to it are the links to the terms of use and the withdrawal policy.
Subscribe with obligation to pay
For prepaid, the button is called Order with obligation to pay. Payment goes through Stripe, and access is unlocked right afterwards.
- Only server admins can buy.
- Next to a running subscription you cannot buy anything extra. If prepaid time is still running, further prepaid months are added at the end, and a subscription only starts after that.
- Only the person who took out a subscription can manage and cancel it, via Manage subscription.
Quick start
Start the trial
A server admin clicks Try 7 days for free in the area.
Fill in Legal and create a payment method
Under Legal, your details as the seller. They become the imprint, terms, withdrawal policy and privacy policy of your shop. If you sell commercially, ordering only works once all required details are there.
Under Payment methods, at least one payment method, for example PayPal or bank transfer. Without a payment method nobody can order.
Create products
Under Products, with price, product type, images and, if needed, variants, extras and automatic delivery.
Set channels
Under Messages, the channel for the price list, the log channel and the ticket category for orders. Under Delivery time, the channel for the status message.
Choose editor roles
Under Team & Permissions, the roles that handle orders in Discord.
Send the price list
Under Messages, click Send price list now. From then on the bot keeps it up to date itself.
Products
Everything your server sells. You change the order by dragging, and the products appear in the price list in the same order. The Live preview in Discord shows you while editing what the product card looks like.
| Field | Meaning |
|---|---|
| Name | What your product is called |
| Category | Structures the price list. Products without a category appear there under "Other" |
| Price | The base price. With variants, the variant's price applies, and the price list then shows "from" the cheapest |
| Description | What the customer gets, with Discord formatting |
| Product type | Service or Digital content. Decides the consent box in the order panel and which details customers see. Physical goods cannot be sold |
| Compatibility, Technical protection measures, Updates | Only for digital content. Customers see them on the product card, in the order panel and in the confirmation. You owe updates for the stated period, security updates included |
| Rights of use | Private or commercial use, Exclusive, Editing allowed, Source files included, Credit required, Artist may show it in their portfolio. Plus further terms as text |
| Images | Up to 10 images as PNG, JPG, GIF or WebP, up to 8 MB each. The first is the cover image, and you change the order by dragging |
| Variants | The customer chooses exactly one, for example "Basic" or "Pro", each with its own price |
| Extras | The customer can add several, for example "Source file", each with its own price |
| Stock | Optional. Every order deducts one, a cancellation gives it back. At 0, "Sold out" appears in Discord and ordering is no longer possible. Customers can sign up for a restock notification |
| Delivery | Without a choice you deliver by hand in the ticket. Otherwise the bot delivers by itself after "Paid": roles, text, download link and license key, more under Delivery and licenses |
| Active | Inactive products disappear from the price list |
You create categories on the same page and rename them there. Their order also applies to the price list. The Restock notifications are on this page too, more on that below.
Delivery time
How fast you deliver and what faster delivery costs. Customers see this in the order panel and in the status message.
Delivery speeds
| Delivery speed | Default | Adjustable |
|---|---|---|
| Normal | always on | Name and description. No surcharge, no limit |
| Prime | off, +30%, at most 3 at the same time | Name, description, surcharge, maximum open at the same time |
| Fast | off, +50%, at most 2 at the same time | Name, description, surcharge, maximum open at the same time |
- Delivery date: binding, in working days after payment is received (default 14, at most 90). Customers see it in the order panel, on the order card and in the confirmation as "at the latest 14 working days after payment is received". The delivery time display below is only an estimate on top.
- Surcharge: in percent or as a fixed amount.
- Maximum open at the same time: how many orders of this delivery speed may be open, paid or in progress at the same time, or No limit. Once the limit is reached, the delivery speed shows as "fully booked right now" in the order panel and cannot be chosen. The Now bar shows the current load.
Delivery time display
| Display | What customers see |
|---|---|
| Fixed text | Your text per delivery speed, for example "3 to 5 days" |
| Automatically from the last 20 orders | Calculated from the last 20 delivered orders, recalculated every night. Until there are enough orders, your text applies |
Status message
A message in a channel of your choice that updates itself with every order. In it, customers see the delivery time per delivery speed, how busy it currently is (free, 2 of 3 taken, fully booked), the number of open orders and orders in progress, the length of the queue and the average rating.
You can also switch on extra blocks:
| Block | Content |
|---|---|
| Featured product | The product ordered most often in the last 30 days |
| Running discount | Running discounts with their end |
| Community goal | Progress towards a goal, counted from paid orders and Tebex purchases, more on that below |
| Latest purchases (without names) | Only product and time, purchases via Tebex included |
On this page you also set the correction rounds and the upgrades, more on that below.
Payment methods
This is how your customers pay. You create up to 10 payment methods and sort them by dragging.
| Field | Meaning |
|---|---|
| Icon | An emoji before the name |
| Name | For example PayPal or bank transfer |
| Instructions for customers | What the customer has to do. Shown in the order panel and on the order card in the ticket |
| Link | Optional, appears as the Open payment link button below the instructions |
| Active | Inactive payment methods cannot be chosen in the order panel |
Reporting a payment
If Customers may click "I have paid" and attach a receipt is on (default), the customer reports their payment themselves. The order then gets the marker Customer says: paid. Your team still has to confirm.
Unpaid orders
Anyone who orders and does not pay blocks delivery time and stock. Under Cancel automatically after you choose Never (default), 1, 2, 3 or 7 days.
- Before that, the customer gets a reminder in the ticket, one day before the cancellation (with 1 day, after half the time).
- Orders with a reported payment and orders that have been taken over stay.
- The cancellation frees up the slot in the delivery speed, the stock and a redeemed coupon.
Messages
Channels
| Setting | Meaning |
|---|---|
| Price list in | Where the price list is posted |
| Log channel | New, paid, delivered and cancelled orders, plus the approval of reviews, withdrawals, automatic deliveries and Tebex purchases |
| Ticket category for orders | A category from the Ticket module, for example "Orders". None means: every order gets a private thread in the price list channel |
With Send price list now you post the price list. Save first, otherwise sending does not work. After that the bot keeps it up to date itself: prices, discounts, stock and order follow on their own. If you change the channel, the bot deletes the old price list. The same applies to the status message.
Order panel
What the customer enters and confirms before submitting.
| Setting | Meaning |
|---|---|
| Customer wishes | Off, Optional (default) or Required. A text field of up to 2,000 characters for everything your team needs to get started. Shown on the order card in the ticket |
| Your terms | A text, for example on usage rights, corrections, refunds or confidentiality |
| Or a link to your terms | A link to your terms instead of text |
As soon as text or a link is set, the customer must accept your terms before submitting. The time and the version are stored with the order. They are your terms, AlphaCloud is not the seller.
In the Consumer law section you switch the withdrawal function and the consent boxes, more on that below under Withdrawal and required information in the order flow.
On the same page you also set up the reviews and give messages a custom design.
Legal
Under Legal in the Management group you enter your details as the seller. From them AlphaCloud creates four legal texts for your shop: Imprint, Terms, Withdrawal (the withdrawal policy with the model withdrawal form) and Privacy. They match your settings, for example your payment methods and delivery dates. When your details or the shop's settings change, a new version is created automatically.
Templates, not legal advice. The generator puts standard texts together from your answers and your shop's settings. It does not check your individual case. You are responsible for your details being correct. If in doubt, have a lawyer check the texts.
The questionnaire
| Section | Content |
|---|---|
| Seller | You sell: Commercially or Privately. Who buys from you: Consumers too or Businesses only |
| Name and address | Name or company, for companies the legal form and who represents it, plus the address |
| Contact | Email and phone, optionally further details for the imprint and a data protection officer |
| Tax and register | VAT (small business under Section 19 UStG, with or without VAT ID), register court and register number |
| Offer | What you sell: services, digital content or both, plus the number of your employees |
| Consumer arbitration | Whether you take part in arbitration: Not willing, Willing or Obliged |
| Language of the texts | The language in which the website and order panel show the texts. The other language is created as well, the German version is binding |
At the top the page shows whether All required details are there or Some details are missing. Under Does not match your settings yet it lists where shop and legal texts do not fit together, for example a switched off withdrawal function or no active payment method.
The seller line
The price list and the order panel always say who sells. Every product card names the seller briefly.
- Commercially: "Seller: Name · commercial seller"
- Privately: "Seller: Name · private seller (according to the seller)", plus the note that the special consumer protection rules such as the right of withdrawal do not apply.
- Always added: "AlphaCloud only provides the technology and is not a party to the contract."
Without details, the name of your server appears there. Depending on VAT, the price list and order panel also show "Final prices, no VAT under § 19 UStG." or "Prices include VAT."
Commercial with gaps means: no sales. If a commercial seller is missing required details, the Order button is locked, and the price list and order panel show: "Orders are not possible right now: the seller has not given all required seller details yet." As soon as everything is filled in under Legal, it works again.
If you chose "Privately" and have 10 or more orders in a calendar month, the overview reminds you to check your answer. Selling regularly for money is usually commercial, and a wrong answer can be challenged.
Legal texts for customers
- In Discord, the Provider and legal button below the price list and in the order panel opens the seller details and the imprint. Terms, withdrawal policy and privacy policy are attached as files to keep.
- Publicly and without login, the texts are in the panel at
/shop-legal/SERVER_ID/impressum, as well asagb,widerrufanddatenschutz. The English versions areimprint,terms,withdrawalandprivacy. You copy the finished links under Public links. - With a published website, the texts are there as well, linked in the footer of every page.
Link your imprint wherever you sell or advertise, clearly labelled as "Imprint", also in the server description.
The order flow in Discord
Price list
The price list shows all active products by category: images as a gallery, price, description, product type and rights of use, variants and extras, the stock and a running discount with a crossed out price and its end. Below each product is the Order button, and Sold out for sold-out products. Products with stock also have the Restock notification button.
At the end come the seller line, the surcharges of the delivery speeds and the buttons Provider and legal and, once there are reviews, How we check reviews. If you connected Tebex, your Tebex packages follow after your own products. The bot spreads long lists over several messages instead of cutting anything off.
Order panel
A click on Order opens the order panel. Only the customer sees it. At the top are the seller and every payment method the shop accepts. Then the customer goes through it step by step:
- Product, with product type, details on digital content and rights of use
- Variant, if the product has any
- Extras, several possible
- Delivery, fully booked ones are locked
- Payment method
- Your wishes, if switched on
- Terms of the shop, if set
- Start before the withdrawal period ends, if a consent box is switched on
The summary shows all items, the coupon, the delivery surcharge, the payment method and the final price, plus the delivery date and the note on the statutory warranty. Order with obligation to pay places the order. If the order costs nothing, the button is called Place free order. Next to it are Enter coupon, if there is at least one valid code, and Provider and legal.
- Prices are frozen on submit. Later changes to the product do not change this order.
- If the price changed while the panel was open, the bot says so and shows the new final price.
- An order panel is valid for 15 minutes. After that the customer simply clicks Order again.
- A customer can have at most 3 open orders at the same time per server.
Ticket and order card
Every order gets its own number (for example #0042) and its own ticket:
- With a ticket category, a normal ticket from the Ticket module is created. Its rules apply, so anyone blocked from tickets cannot order either.
- Without a ticket category or with the Ticket module switched off, a private thread is created in the price list channel. The bot adds the customer and the members of the editor roles.
In the ticket, the order card is pinned: number, status, customer, editor, items, final price, delivery speed, payment method with instructions, the customer's wishes, their consents and the history. Below it are the buttons, split into For you (customer) and For the team. The card is updated with every change. Right after ordering, the customer also gets the order confirmation by DM, more on that below.
Buttons on the order card
For the team (editor roles or members with "Manage Server"):
| Button | Effect |
|---|---|
| Paid | Confirms receipt of payment. The order goes into the queue, and an automatic delivery starts |
| Take over | You handle the order, it is set to In progress and your name appears on the card |
| Delivered | Completes the order. The customer gets a DM and is asked for a review |
| Cancel | With an optional reason. The slot in the delivery speed, the stock and a redeemed coupon are freed again |
| Not received | Rejects a reported payment. The customer checks it and can report it again |
Orders from Tebex have no Paid button, they were already paid through Tebex.
For you (only the customer of this order):
| Button | Effect |
|---|---|
| I have paid | Reports the payment, optionally with a receipt (image or PDF up to 8 MB) and a note. The receipt lands as a file in the ticket, and the editor roles are pinged |
| Withdraw order | Cancels the order as long as it is unpaid and nobody has taken it over |
| Withdraw from contract here | For 14 days, if your shop offers the withdrawal function. It then replaces Withdraw order |
| My place | Shows the position in the queue |
| Ask for a correction | After delivery, see below |
| Rate | After delivery, if reviews are switched on |
| Upgrade | After delivery, if upgrades are switched on and there is a dearer variant |
Order status
| Status | Meaning |
|---|---|
| Open | Ordered, payment not yet confirmed |
| Paid | Payment confirmed, the order waits in the queue |
| In progress | Someone from the team has taken over the order |
| Delivered | Completed |
| Cancelled | By the team, by the customer or automatically because the payment did not arrive in time |
Queue
Paid orders that nobody has taken over yet are in the queue. Fast comes first, then Prime, then Normal, and within a delivery speed by the time of the payment confirmation.
With /order next, a team member takes over the next order, and the bot replies with the link to the ticket. Customers see their position via My place, and the status message shows the length of the queue.
Delivery and corrections
After Delivered, the customer gets a DM with the server name and order number and the To the ticket button.
Under Delivery time you set correction rounds: Corrections per order (default None, at most 5) and Possible until after delivery (3, 7, 14 or 30 days). Within this time the customer sees Ask for a correction on the order card with the number of remaining rounds. They describe what should be changed, the order goes back to In progress, and your team gets a notice in the ticket.
Withdrawal and required information in the order flow
If you sell to consumers, you have duties as the seller that only the order flow can fulfil. The module takes much of that off your hands. You stay the seller, AlphaCloud only provides the technology.
Withdrawal function
Under Messages, section Consumer law, you find Offer withdrawal function (on by default).
- From the order on, customers see the Withdraw from contract here button for 14 days on the order card, in the order confirmation and in the delivery DM.
- The customer enters their name, optionally another way to reach them and a statement. In the next step they check their details and click Confirm withdrawal.
- They immediately get a confirmation of receipt by DM, with date and time and as a file to keep.
- Your team sees the withdrawal on the order card, in the ticket, in the log channel and in the overview under Needs you.
- Whether an order has the function is fixed when it is placed. If you switch it off later, running orders keep their button.
AlphaCloud refunds nothing. If the order is already paid or in progress, it keeps its status, and you refund the money yourself and complete the order. If nobody has paid or taken it over yet, it is cancelled automatically. If you sell commercially to consumers, you must offer the withdrawal function. If it is off, the Legal page warns you.
Consent boxes
Consent for digital content and Consent for services are in the same section (both off by default). If either switch is on, the order panel gets the step Start before the withdrawal period ends. Which box appears follows the product type:
- Digital content: The customer agrees that you start before the withdrawal period ends and knows that they lose their right of withdrawal with that.
- Service: The customer requests that you start before the withdrawal period ends. Their right of withdrawal expires once the contract is fully performed, and if they withdraw, they owe compensation for the work done until then.
The boxes are never ticked in advance and never required, the customer can also order without consent. Every box shown is stored with its exact wording and the time on the order. The order card, panel and order confirmation show whether consent was given.
Order confirmation
Right after ordering, the customer gets a DM "Your order #0042 at Server has been received" with a file to keep. The bot posts the same file in the ticket, with closed DMs together with a request to keep it. The file contains:
- the seller with address and contact
- order number, items, final price and the VAT note
- the payment method with instructions and the delivery date
- product type, details on digital content and rights of use
- the consents with wording and time, and the deadline for withdrawal
- the accepted terms in the version of the order, your terms and, if you sell commercially to consumers, the withdrawal policy with the model withdrawal form
If you mark an order with digital content as delivered although the confirmation never reached the customer, the bot warns your team. Without a confirmation, the right of withdrawal for digital content does not expire.
Delivery date, product type and rights of use
- You set the delivery date per delivery speed under Delivery time, in working days after payment is received. It appears in the order panel, on the order card and in the confirmation, the estimated delivery time only as an addition.
- You set the product type, the details on digital content and the rights of use per product. Customers see them on the product card, in the order panel and in the confirmation. Without rights of use it says there that only what the purpose of the contract requires is granted.
- Below every summary it says that the statutory warranty applies.
Crossed out prices
In Discord the crossed out price is always the lowest price of the last 30 days before the discount, never simply your normal price. For this AlphaCloud records the price of every product every day.
- If the discounted price is not below this comparison price, Discord shows no discount.
- Until there are 30 days of price history, Discord shows the discount without a crossed out price.
- When you create a discount, the panel shows the comparison price and warns you if the price was lower in the last 30 days.
Countdowns
A discount with an end shows in Discord when it ends. To keep this countdown honest, fixed rules apply, the same for /discount, the discounts in the panel and the flash sale:
- You can only move a running countdown earlier. If you extend it or remove the end, the countdown ends and the discount continues without an end date until you stop it.
- After a countdown has ended, a new countdown at the same or a lower price for the same product, the same category or the whole shop is only possible after 7 days.
Reviews
Wherever reviews appear, it says how they are checked, and they may only be rejected for fixed reasons. More under Reviews.
Delivery and licenses
If you want, the bot delivers digital products by itself as soon as an order is paid. You set this up per product in the Delivery section.
| Type | What happens |
|---|---|
| Give roles | Up to 5 roles. You can only pick roles below your own highest role, and the bot must be able to give them |
| Text, for example access details | Up to 2,000 characters, stored encrypted and only shown to buyers. You do not see it either after saving |
| Download link | A link with https:// to your own storage, for example a GitHub release. AlphaCloud does not store any files |
| License key | A separate key per order, more on that below |
You can combine all of them. With Then mark as delivered the bot completes the order afterwards. Leave the switch off if your team still delivers something by hand. Without a choice you deliver by hand in the ticket as before.
How the delivery runs
As soon as your team presses Paid, in Discord or in the panel:
- If the order confirmation is still missing, it goes out first. For digital content the DM counts as the delivery.
- The bot gives the roles.
- The buyer gets a DM with the name of your server and everything that belongs to it: access details, Download, license key and My purchases.
- A copy is posted in the ticket, license keys there only with the last four characters.
- The log channel gets an entry.
If the buyer's DMs are closed, the delivery is posted in the ticket, and they get their key with the Show license key button that only they can see. If a delivery still fails after several attempts, the log channel reports it and your team delivers by hand. If an order is cancelled, its delivery stops and its keys are blocked.
License keys
- A key has 25 characters in five groups, for example
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX. - AlphaCloud only stores a checksum. That is why you only see the last four characters in the panel, and the buyer is shown their key only once.
- An upgrade keeps the key of the original order.
The Licenses page in the Extensions group lists all keys of your shop with the status Active, Blocked or Not picked up yet. You search by product, customer, Discord ID, order number or the last four characters.
| Action | Effect |
|---|---|
| New key | The old key stops working immediately, and the owner gets the new one by DM |
| Block | The key stops working until you click Unblock |
Deliveries, new and blocked keys and the checks of the previous day are also posted in the log channel.
My purchases and /license
Buyers can find everything again:
- In the My purchases customer area in the panel at
/purchases: every purchase in shops with AlphaCloud, as soon as a shop has marked it as paid. There buyers see their deliveries again, create a new key or pick up one they have not picked up yet. They do not need any rights on the server for this. - With
/licenseon your server: their licenses in this shop. Through the menu they create a new key or show one they have not picked up yet.
A new key makes the old one invalid immediately. A buyer can create at most 10 new keys per hour per shop.
License check API
Your scripts use a token to check whether a key is valid.
- Under Licenses, section License check API, click Create token. The token starts with
acl_and is shown only once. - The product ID is in the product under Delivery as soon as the license key is switched on.
- Your script sends
GET /api/service-licenses/check?key=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&product=PRODUCT_IDwith the headerAuthorization: Bearer acl_....
The answer is for example {"status": "valid"}:
| Status | Meaning |
|---|---|
valid |
The key belongs to this product and is active |
blocked |
Blocked or replaced by a new key |
unknown |
Unknown or for another product. The API never gives out data about the owner |
The Licenses page shows the full address with a curl example under Quick guide. Each token allows at most 600 checks per minute, so ideally ask once at start-up. Only daily totals are counted, no individual requests and no addresses. Create new makes the old token invalid immediately. The API keeps answering after your access ends, so buyers can keep using what they paid for.
Discounts & Promotions
All times on this page are in Berlin time.
Discounts
With Create discount you choose what the discount applies to and what it looks like:
| Setting | Options |
|---|---|
| Applies to | Product, Category or Entire shop |
| Type | New price (a fixed discounted price for a product) or Percent (up to 90%) |
| End (Berlin time) | A point in time or No end date |
The discount applies immediately. In Discord a crossed out price appears next to it, plus the end. Once the end is reached, the price goes back on its own. The crossed out price is always the lowest price of the last 30 days, and discounts with an end follow the rules for countdowns, both above under Withdrawal and required information in the order flow.
Flash Sale
The whole shop cheaper for a short time: percentage discount, Start and End. The flash sale starts and ends on its own, the panel shows a countdown, and in Discord it appears next to the prices. The rules for countdowns apply to it as well.
How discounts work together
- Discounts do not add up. If several apply at once, the customer gets the best one.
- Discounts apply to the price of the product or variant, not to extras.
- The calculation order is: first the discount, then the coupon on the rest including extras, finally the surcharge of the delivery speed.
Discount by command
You can also set a discounted price directly in Discord, and it then appears in the panel as well:
/discount setwith product (choose from the list), price (for example 9.99) and optionally duration (for example12hor3d, at most 90 days). Without a duration, the discount runs until you remove it./discount clearwith product removes the discount again.
The command needs the "Manage Server" permission and only works for products without variants.
Coupon codes
| Field | Meaning |
|---|---|
| Code | 3 to 24 characters from letters, numbers, underscore and hyphen. Upper and lower case do not matter |
| Discount | In percent or as a fixed amount |
| Applies to | All products or only selected ones |
| Max. redemptions | A number or Unlimited |
| Expires | Optionally an expiry date |
| Active | For pausing |
The list shows how often each code was redeemed and marks used-up and expired codes.
Creator codes
One code per creator, linked to a member of your server. Customers get a discount with it, and you see per code how much revenue it brought.
Redeeming
Customers enter coupons and creator codes in the order panel via Enter coupon, one code per order. The button only appears if there is at least one valid code. If the order is cancelled, the redemption no longer counts.
Reviews
Reviews are part of the Service module, you do not need the Voucher system for them. They are set up under Messages.
| Setting | Meaning |
|---|---|
| Collect reviews | On by default. After Delivered, the bot asks for a review in the ticket and in the delivery DM |
| Publish reviews in | The review channel. Without a channel, reviews only count towards the average in the price list and status message |
| Approve before publishing | Off by default. New reviews first land as a card in the log channel (in the ticket if there is no log channel), and your team publishes or rejects them |
This is how the customer reviews:
- After delivery they click Rate in the ticket.
- They give 1 to 5 stars, optionally write a text of up to 1,000 characters and can choose to review anonymously.
- Only the buyer can review, and only once per order.
In the review channel the review appears as a Verified purchase. The average and count, for example "4.8 ★ from 23 reviews", appear in the price list and in the status message.
How we check reviews
Wherever reviews appear (price list, status message, review channel), a fixed line says how they are checked. The How we check reviews button shows the full rules: only buyers of a delivered order, one review per order, the average of all published reviews, nothing in return for reviews.
With Approve before publishing, your team may only reject a review for one of these reasons, never because it is negative:
- Insult or abusive criticism
- Personal data of third parties
- No relation to the order
- Spam or advertising
- Otherwise unlawful
The reason is written to the log, and the customer learns it by DM. Without approval, reviews appear immediately and cannot be rejected.
Real reviews only: none of your own, bought or swapped, nothing in return for good reviews, and never push customers to change or withdraw a review.
Custom design
Under Messages, section Custom design, you design four messages in the Message Builder. Without a custom design, every message uses the default.
| Message | When it appears | Required building blocks |
|---|---|---|
| Status message | In the status message channel, updates itself | Delivery speeds with load and numbers |
| Order card in the ticket | In the ticket of every order, edited with every change | Items, payment and history, plus the buttons |
| Delivery DM | After Delivered, to the customer | Server and order |
| Review | An approved review in the review channel | none |
You can move required building blocks within the message, but not remove them. The status message, order card and delivery DM exist only as Components V2, the review also as an embed.
Variables
Status message: {openOrders}, {inProgress}, {queue}, {rating}, {guild}, {memberCount}
Order card in the ticket: {user}, {order}, {status}, {summary}, {total}, {lane}, {payment}, {guild}, {memberCount}
Delivery DM: {user}, {order}, {summary}, {total}, {ticketUrl}, {guild}, {memberCount}
Review: {stars}, {score}, {review}, {customer}, {product}, {guild}, {memberCount}
Which variables exist exactly and what they mean is shown by the editor itself.
Restock, upgrade and community goal
Restock notification
For products with stock, the price list shows the Restock notification button, whether sold out or not. Whoever clicks it gets a role that the bot creates per product (for example "Restock: Logo Pack"). After that they can sign up For every product or Unsubscribe again.
When a product is refilled from 0, the bot posts "Product is back in stock" once, with stock, price and the Order and Unsubscribe buttons. Only the role of this product and the role for every product are mentioned. Refilling works like this:
/restockwith product and amount, for the editor roles or members with "Manage Server"- Refill on the Products page
- raising the stock in the product from 0
- through the restock webhook, see below
Units that come back through a cancellation do not ping.
On the Products page you set the Channel for restock pings under Restock notifications (empty means: the price list channel) and see how many customers are waiting for each product.
Members give restock roles to themselves. That is why the bot only hands out such a role as long as it has no permissions and opens no channels, otherwise it writes a notice to the log channel. For the ping, the bot needs the "Mention @everyone, @here, and All Roles" permission in the channel.
Upgrade
Under Delivery time, card Upgrades, you decide whether customers can move to a higher variant: Upgrade possible is Off or up to 7, 14, 30 (default), 60 or 90 days after the delivery.
- On the delivered order card only the buyer sees the Upgrade button.
- The order panel only offers dearer variants of the same product, without extras, without a coupon and in the normal delivery speed.
- The customer pays the new variant at today's price, running discount included, minus what they paid for their old variant. Discount and coupon share are already deducted there, extras are never credited.
- The upgrade is an order of its own with a ticket and is paid like every order. The order card, confirmation and panel show the amount as Already paid.
- Every order can get an upgrade, an upgrade order too. If an upgrade is cancelled, the order is free again. An upgrade takes nothing from the stock, and a license key stays the same.
Community goal
An extra block of the status message, set up under Delivery time: Text of the goal, Goal (number of orders) and Period, that is Starts again every week (from Monday), Starts again every month (from the 1st, default) or Never starts again. Times are in Berlin time.
Only paid orders and paid Tebex purchases of the period count, cancelled ones do not. There is no number typed in by hand. The status message shows a progress bar, how many orders are still missing and when the goal starts again. Without a goal the block stays empty.
Orders and overview in the panel
Overview
| Area | Content |
|---|---|
| Key figures | Open orders, In progress, revenue this week compared to last week, average delivery time over the last 30 days |
| Needs you | Reported payments, requested corrections, orders shortly before automatic cancellation, declared withdrawals, reviews awaiting approval, sold-out products |
| Delivery time now | The load of each delivery speed |
| Latest orders | The newest orders with a jump to the list |
| Subscription | Tier and price, next payment or end of the trial |
Orders
Everything that was ordered in Discord. You search by number or customer, filter by delivery speed, payment method and period, and switch between the statuses via tabs.
A click on an order shows all details: history, items with discount, coupon and delivery speed, the customer with their previous orders, their wishes, the payment instructions they saw, an attached receipt, their consents, a withdrawal and their review. With Open ticket you jump straight into Discord.
From here you can run the same actions as with the buttons on the order card: Confirm payment, Reject report, Take over, Mark as delivered and Cancel. The bot updates the order card, ticket, log and DM.
Data of an order
With Data protection on a delivered or cancelled order you can Anonymise or Delete it, for example when a customer asks for it. Anonymising removes the name, Discord ID, wishes, receipt link, withdrawal details and the text of the review. Number, products, prices, status and times stay for your bookkeeping. Deleting removes the order and its review completely. Neither can be undone.
With CSV export and JSON export you download all orders with their reviews. Anonymising, deleting and exporting need the "Manage shop" permission.
Statistics & Customers
Under Statistics & Customers in the Insights group you see your shop in numbers, for the last 7, 30 or 90 days or for All time.
| Area | Content |
|---|---|
| Key figures | Revenue, Paid orders, Avg. order value and Avg. delivery time, compared to the period before |
| Revenue and orders | A chart Per day, Per week or Per month with revenue, new and cancelled orders |
| Top products | Your products by revenue |
| Delivery lanes | The share of each delivery speed |
| Coupons & Creator Codes | How often which code was redeemed and how much discount it gave |
| Tebex purchases | A series of its own if you connected Tebex. It does not count towards your shop's revenue |
| Customers | Every customer since your shop started, sorted by revenue, with a search by name or Discord ID |
Revenue counts orders your team marked as paid or delivered, never cancelled ones. All numbers come from your shop's own entries: AlphaCloud does not process payments and does not check any amounts. Anonymised orders are not in the customer list.
Anyone with "Handle orders" may view the page. Export CSV, the customer list with orders and totals as a file, needs the "Manage shop" permission.
Tebex
Do you already sell on Tebex, for example for a FiveM server? Then you show your Tebex packages in Discord and get every purchase in the log. Tebex stays your shop: Tebex takes the money, handles taxes, refunds and chargebacks and delivers in game. AlphaCloud does not accept any money.
Connecting
- On the Tebex page in the Extensions group, copy the Webhook address and enter it in Tebex under Developers > Webhooks > Endpoints. Select the payment webhooks there.
- Copy the Webhook secret from the same page in Tebex and the Public token under Developers > API Keys.
- Enter both and click Connect. Then click Validate next to the address in Tebex.
After that the page shows the connection status, the last sync and the last webhook. AlphaCloud syncs your packages every 30 minutes, and Sync now fetches them right away. Disconnect deletes token, secret and packages, and past purchases stay for the statistics.
Packages in the price list
Up to 250 packages are listed under Packages from Tebex. With Show in Discord you choose which ones appear in the price list. There they follow after your own products under "In-game packages via Tebex", each with the Buy in store button that opens the package in the Tebex store. You manage prices and sales in Tebex. Discord always shows the current price without a crossed out price.
Purchases
Tebex reports every purchase by webhook. The bot writes it to the log channel as "New purchase via Tebex", refunds and chargebacks as a warning. Purchases also appear under Recent purchases on the Tebex page, as a series of their own under Statistics & Customers and in the Latest purchases extra block of the status message. They do not count towards your shop's revenue, the seller here is Tebex.
From Tebex, AlphaCloud only stores package, amount, currency, transaction and the player name, never the buyer's name, email or IP. For the settings below, the buyer's Discord ID is added.
After purchase
Per package you decide under After purchase what the bot does in Discord after a paid purchase:
| Setting | Effect |
|---|---|
| Manual work: open an order ticket | For packages with manual work, for example a custom car or clothing. The bot opens a ticket with an order card for the buyer, your team takes over and delivers, and afterwards the buyer can leave a review. The card has no payment buttons, and the order does not count towards your own revenue. If Tebex later reports a refund or chargeback, the bot pings the editor roles in the ticket |
| Discord role after purchase | The buyer gets the role after the paid purchase. On a refund or a lost chargeback, the bot takes it away again |
Both need the buyer's Discord ID. Tebex only asks for it at checkout if the package has a Discord action or a variable with the identifier discord_id. If no Discord ID comes along or the buyer is not on your server, the bot reports the purchase in the log channel so you can contact the buyer.
Tebex can also give roles itself. If you use that, leave Discord role after purchase off, otherwise two systems give the same role.
FiveM: Sell in-game perks only through Tebex, never through the normal order. How to connect your FiveM server itself to AlphaCloud is described on the page of the FiveM module.
Updates, resellers and webhooks
Updates
When a product has a new version, you send every owner a DM with the changelog. Owners are everyone with an active license or a delivered order of the product.
- In the panel under Licenses, section Updates: Product, Version, Changelog and, if needed, New download link (optional), then Send to X owners.
- In Discord with
/product update: product, version (for example1.2.0), changes (\nstarts a new line) and optionally link. The bot first shows a preview with Send to X owners and Cancel.
The DMs go out two seconds apart and name your server. Sent DMs cannot be taken back. If the bot restarts while sending, it continues where it stopped. The History shows every update with its progress and how many owners were reached, and at the end the result is posted in the log channel.
A new download link also replaces the link of the product and of past orders in the customer area, but only if the product already delivers a download. Otherwise it is only in the DM.
Resellers
Resellers are members who may give out license keys of a product or use them themselves. Under Licenses, section Resellers, you give a member a quota per product with Add reseller:
| Field | Meaning |
|---|---|
| Total | How many keys the member gets in total |
| Own use | How many of them for themselves |
| Give away | How many of them for other members |
Quotas only exist for products that deliver license keys. The reseller then uses two commands:
/reseller givewith product and user: The member gets a new key by DM. With closed DMs they get it with/license. If the reseller picks themselves, the key counts towards their own use and is shown right away./reseller keys: the quota and the keys given out most recently, only with the last four characters.
A key given out stays used, even if you block it later. In the list under Licenses, each of these keys shows "via reseller" and the name, and each one can be blocked on its own. Every key given out is posted in the log channel.
Webhooks
The Webhooks page in the Extensions group connects your shop with your own systems, for example your bookkeeping, a license database or your own dashboard.
Outgoing webhooks: Up to five addresses receive the selected events as a signed JSON request by POST.
| Event | When |
|---|---|
order.created |
New order, as soon as its ticket is open |
order.paid |
Order marked as paid |
order.delivered |
Order delivered, by hand or automatically |
order.cancelled |
Order cancelled, by the team, by the customer or because it stayed unpaid |
order.withdrawn |
The customer declared the withdrawal |
license.issued |
New license key, from an order, newly created or through a reseller |
license.blocked |
License key blocked, by the team, replaced or because the order was cancelled |
- Only addresses with https on a public server. Redirects are not followed.
- Every request carries the headers
X-AlphaCloud-Signature,X-AlphaCloud-EventandX-AlphaCloud-Delivery. The signature is HMAC SHA256 over timestamp, dot and the unchanged body, with your secret as the key. The page itself shows an example for checking it in Node.js. - You see the secret only once. New secret replaces it, and a new address always gets a new one.
- Answer within 10 seconds with a 2xx status. Otherwise we try six more times, after 1 minute, 5 minutes, 30 minutes, 2, 6 and 12 hours. After at least ten failures in a row over one day, the webhook switches itself off and the panel shows a notice.
- An event can arrive twice. The
idin the body stays the same on every attempt. - The only personal data in a request are the buyer's Discord ID and the order number. No name, no wishes, no payment details, never a full license key.
- With Send test you send a test event to the address.
Restock webhook (incoming): Your external shop or a script raises the stock of a product here. If it is refilled from 0, the subscribers get their restock ping.
- Create secret switches it on, without a secret it accepts no requests. The address is shown on the page.
- Body:
id(your unique event ID),productIdorskuandamount(1 to 100,000 units added to the stock). - The signature is in the
X-AlphaCloud-Signatureheader as above. Requests older than 5 minutes are rejected. - The same
idis only booked once, a repeat gets200withduplicate: true. - Under SKUs you give products with stock an article number of your own that your shop can send instead of the product ID.
Website
Every shop can build its own website, from fixed building blocks and with the live data of your shop. Ordering still happens in Discord: the website sells nothing itself, its order button leads to your shop on the server. The website is included in every tier.
Not reachable yet. Websites only go live once their domain is switched on. Until then you can build and publish everything, but visitors cannot see the website yet.
Creating and editing
Under Website, Editor, click Create website. AlphaCloud builds a first draft from your server: name, icon, banner, products, reviews and delivery times. It only goes live with Publish.
In the editor you edit pages and building blocks with a preview for desktop, tablet and phone, light or dark. Changes are saved automatically as a draft, and Undo and Redo help you try things out.
| Building block | Content |
|---|---|
| Hero | Title, text, up to two buttons and, if you like, the members online |
| Products | All products, a category or your selection |
| Reviews | Only approved reviews from real buyers |
| Delivery time | Delivery speeds, delivery time and load |
| How to order | The steps and your payment methods |
| Discord | Server name, icon and members online |
| Text | Your own text, with an image if you like |
| FAQ | Questions and answers |
Prices, discounts, "sold out", delivery times and reviews come live from your shop. Every building block has several variants. Images only come from your own uploads in the Service area, there is no custom HTML and no scripts.
Design
Under Design you choose the Style:
- Studio: calm and bright, lots of white space. For designers and creatives.
- Arcade: dark and bold, hard edges. For gaming and FiveM.
Plus Light or dark and the Accent colour, either From the server icon or an Own colour.
Product pages
Every active product automatically has its own page with images, description, price, variants, extras, delivery speeds, rights of use and reviews. You change the content in the product, colours and style come from the website's design. The Order in Discord button leads to the product in your price list.
Publishing and settings
- Publish takes the draft live, Take offline hides the website. Every publish saves a version, the last 30 are kept, and Restore brings one of them back into the draft.
- Under Settings you choose the Address (subdomain, 3 to 32 characters). You can change it once in 30 days, and an old name stays blocked for others for 90 days.
- There you also find the Discord invite link for "Join server" and Let search engines find it.
- The footer of every page holds your legal texts from Legal and a link to report content.
Statistics without cookies
Under Statistics you see visitors, views, clicks on "Order in Discord" and "Join server", the click rate, top pages, top products, referrers, countries and devices. Counting works without cookies and without access to the visitors' devices. AlphaCloud only stores daily totals, no IP addresses, for 13 months. That is why your website shows no cookie banner without Google Analytics.
Google Analytics
Optionally you enter a Google Analytics ID under Settings, for example G-AB12CD34EF. Your website then shows a cookie banner automatically, rejecting there is just as easy as accepting, and Google only loads after consent. You are responsible for this measurement. Accept the data processing terms in Google Analytics.
Permissions
In the panel
Under Team & Permissions you see who may do what. Permissions are granted per person in the panel permissions, as Service: Handle orders and Service: Manage shop.
| Handle orders | Manage shop | |
|---|---|---|
| Can | View orders, customers, overview and statistics. Confirm payment, take over, mark as delivered, cancel. Refill stock | Everything from "Handle orders", plus products, discounts, delivery time, payment methods, messages, extensions (Tebex, licenses, webhooks), website, legal and team. Exports, anonymising or deleting orders |
| Cannot | Change products, prices, discounts, payment methods, messages, extensions, website, legal, team and subscription. Exports | Take out and cancel a subscription |
- Server admins (owner, administrator or "Manage Server") always have both permissions. Only they can start the trial and buy the module.
- With only "Handle orders" you see the other pages in View only mode.
- Without either of the two permissions, the area stays locked for you.
In Discord
The editor roles under Team & Permissions determine who may press the team buttons on the order card and use /order next and /restock. Members with "Manage Server" always may. The editor roles are pinged when a customer reports a payment and are added to the private threads of orders.
/discountand/product updatealways need the "Manage Server" permission./reselleris visible to every member, but only members with a reseller quota can use it./licensecan be used by every member for their own keys.
When access ends
When the trial, a cancelled subscription or the prepaid time ends, the shop closes for new orders:
- The Order button replies that the shop is currently closed. The status message shows this as well.
- You can still complete open orders. The buttons on the order cards keep working so your customers are not left hanging.
- The module's commands (
/discount,/order,/restock,/license,/product,/reseller) exist only while the shop is open. - The license check API keeps answering, so buyers can keep using what they paid for.
- For 7 days your website shows the notice that the shop is not taking orders right now, without order buttons. After that it is offline.
- Products, settings, orders and reviews are kept.
If you buy a subscription or prepaid again, the shop accepts orders again immediately. There is no second trial.
Limits
The limits are the same in all tiers.
| Limit | |
|---|---|
| Products | 250 |
| Categories | 25 |
| Images per product | 10, up to 8 MB each |
| Variants and extras per product | 25 each |
| Roles on delivery | 5 per product |
| Text on delivery | 2,000 characters |
| Payment methods | 10 |
| Percentage discounts | 50 |
| Coupons and creator codes | 100 together |
| Open orders per customer | 3 |
| Percentage discount | up to 90% |
Duration with /discount |
up to 90 days |
| Delivery date | 1 to 90 working days |
| Upgrade | up to 90 days after the delivery |
| Refill at once | up to 100,000 units |
| Restock sign-ups | 25 per member, 20,000 per shop |
| Restock roles | 25 products, plus one for every product |
| New license keys by buyers | 10 per hour, per buyer and shop |
| License check API | 600 checks per minute and token |
| Updates | 3 per product in 24 hours, one at a time, up to 10,000 owners |
| Version and changelog of updates | 32 and 1,500 characters |
| Reseller quotas | 200 per shop |
| Keys via resellers | 30 per hour and reseller |
| Outgoing webhooks | 5 |
| Tebex packages | 250 |
| Website | 20 pages, 30 building blocks per page, 30 versions |
Commands
| Command | Effect | Who |
|---|---|---|
/discount set |
Set a discounted price for a product, optionally with a duration | "Manage Server" |
/discount clear |
Remove a product's discount | "Manage Server" |
/order next |
Take over the next order from the queue | Editor roles or "Manage Server" |
/restock |
Refill the stock of a product, with product and amount | Editor roles or "Manage Server" |
/license |
View your own license keys in this shop, create a new one or show one not picked up yet | All members |
/product update |
Send an update of a product to all its owners, with product, version, changes and optionally link | "Manage Server" |
/reseller give |
Give a member a license key from your quota, with product and user | Resellers with a quota |
/reseller keys |
The keys you gave out and what is left of your quota | Resellers with a quota |
Required permissions
Send messages, embed links, attach files (for receipts and order confirmations), read message history, manage messages (to pin the order card). For orders without a ticket category, additionally in the price list channel: create private threads and send messages in threads. For orders in tickets, the permissions of the Ticket module apply.
For roles on delivery, restock roles and roles after Tebex purchases: manage roles, and the roles must be below the bot's highest role. In the channel of the restock pings: "Mention @everyone, @here, and All Roles".