Tebex integration
Connect your Tebex stores to verify purchases, browse order history, and create coupons, gift cards, manual payments or payment links straight from a ticket.
The Tebex integration connects your webstore(s) to Joely so support always has purchase context: who bought what, when, and for how much, without leaving the ticket.
Connecting stores
A project can connect one or more Tebex stores from the project settings (the number of stores depends on your plan; see Features). Store credentials are encrypted at rest; see Tebex keys & security for what each key unlocks and how credentials are protected.
Managing stores is permission-controlled: Add Tebex stores, Update Tebex stores, and Remove Tebex stores. See Roles & permissions.
Package-linked tickets
When a customer opens a ticket on the portal, they can attach one of their purchased packages:
- The portal shows the customer the packages available in your store(s).
- Purchases are verified against the Tebex API, so the link is real purchase context, not a free-text claim.
- If the purchase is not found automatically, the customer can enter a Tebex order ID to look it up and link the product manually. The order only has to belong to one of your connected stores, not to the customer: a developer can, for example, use the server owner's order ID to open a ticket on their behalf. Turn the Allow Manual Order ID ticket setting off to remove this option.
- Projects can also allow tickets without a package for general questions.
A ticket can be linked to several packages at once (from the staff sidebar or when answering the AI's package question). The linked packages then power other features: automation workflows (conditions match any linked package), package-scoped AI knowledge (union of the linked packages), and package-to-repository linking for GitHub issues.
Hiding packages
Some packages are not worth surfacing in support, for example deprecated, internal, or test products. From the Enabled packages card of the Tebex settings (Update Tebex stores), you can uncheck individual packages, a whole category, or a whole store. Unchecking a category or a store also hides the packages added to it later. A hidden package is no longer offered anywhere:
- Staff package pickers (ticket linking, ticket settings, automation conditions, AI knowledge scope, GitHub repo linking)
- The AI's package question on the portal ("Which script is your message about?") and AI package matching
- The package-name filter on ticket lists
The AI's package question follows these settings live: a question already open in a ticket stops offering a package as soon as you hide it. If none of its packages is still offered, the question disappears and the customer's next message is handled as usual.
Purchases are not affected. A hidden package still shows in the customer's purchases and orders on the portal, and in the order history your team sees: if the customer bought it, it stays in their history.
Hiding applies to discovery and listing only; it does not change tickets already linked to a package that is later hidden. Re-check a package at any time to bring it back everywhere.
Inactive and plan-locked stores
- An inactive store is left out entirely: its packages are offered nowhere and its purchases are not fetched, so they no longer appear in the portal or in the order history.
- A store locked by your plan (more stores connected than your plan allows) is not offered either, but its purchases stay visible to your customers and your team.
Purchase lookup from a ticket
Staff with the View a customer's purchases and orders from a ticket permission see the customer's order history directly in the ticket view:
- Every order with amount, status, and product details
- Drill-down into any order: line items, fees, coupons, gift cards, and payment info
- Full transaction details in a side panel
Coupons and gift cards
Staff can create and send Tebex coupon codes and gift cards directly from the ticket view, typical for goodwill gestures or refund alternatives. These actions require the Create Tebex coupons from tickets / Create Tebex gift cards from tickets permissions and are available on paid plans.
A coupon or gift card issued from a ticket can also be revoked from the same sidebar card, gated by the Revoke Tebex coupons from tickets / Revoke Tebex gift cards from tickets permissions. Revoking a coupon permanently deletes it on Tebex (customers can no longer redeem it) and removes it from the ticket. Revoking a gift card voids it on Tebex: any remaining balance becomes unusable and the card stays listed with a Void status. The revoke action is only offered while the gift card is still active: once it has been voided or its balance is fully spent, the action no longer appears. Both actions are irreversible.
Discount limit
From the Tebex settings (Update Tebex stores), you can cap the percentage discount your team grants from tickets. There is no limit by default.
- The limit applies to percentage coupons and to payment link discounts created by team members, the Admin role included. A discount above it is refused.
- The project owner is not limited.
- Fixed-amount coupons are not limited: a percentage cap cannot be compared with an amount without knowing the price of what the coupon applies to.
Payment links
Staff can also send a one-click payment link for a package in the ticket conversation. The customer pays it without leaving the ticket, and the card turns Paid once Joely has confirmed the payment with Tebex. See Tebex payment links.
Manual payments
When the right fix is "give the customer the package" (lost delivery, migration, goodwill gesture), staff can use Give a package on the same sidebar card, which creates a Tebex manual payment. A manual payment delivers the selected packages to a player exactly like a purchase (the package commands run on your game server) but charges nothing: the amount is always 0 and cannot be changed from Joely.
- Permission: Create Tebex manual payments (deliver packages for free) from tickets. Only the Admin role has it by default; grant it to other roles from Roles & permissions. Available on paid plans.
- Player: prefilled with the customer's Cfx.re username when their account is linked, and editable. When the customer has no linked Cfx.re account the field starts empty and must be filled in.
- Packages: one or more packages of the selected store (up to 10 per payment). Packages hidden from pickers cannot be delivered this way. When a package requires extra information on Tebex (for example a server to run the commands on), those fields are loaded from Tebex and shown under the package. They are all optional, as in the Tebex panel: a field left empty is not sent to Tebex. A Discord field is prefilled with the customer's Discord account when it is linked, and shows the account name rather than its ID. To give the package to another Discord account, type its ID and press Enter: Joely looks the account up and shows its name. Tebex always receives the ID.
- Confirmation: a recap step (store, player, packages and their options, amount, note) must be confirmed before anything is sent. Delivery is immediate and cannot be undone from Joely; undoing it is done in your Tebex panel.
- Note: every manual payment carries a note that always starts with
Joely ticket #N – Created by {staff account name}, added by Joely and not editable by staff. An optional short text (150 characters max) can be added after it. - In the conversation: once Tebex confirms the delivery, a Package given card is posted in the ticket, visible to the customer: the packages, their catalog price (shown struck through, the customer is charged nothing; a package not synced from your store yet shows Free alone), the player they were delivered to and the date. The store and the staff member who gave it are only shown to your team. No card is posted when Tebex refuses the payment or when its outcome could not be confirmed.
- Traceability: each manual payment is recorded in the project audit log (who, which ticket, which store, player, packages and the note sent).
Stores connected through a self-hosted Tebex bridge need a bridge version that exposes the payment routes; an older bridge makes the package fields fail to load until it is updated.