← Back to App Saviors

Owner setup guide · Beta 3.11

Your website.
Your server. One order flow.

What changed in Beta 3.9

The Forum link in the homepage and shop navigation opens forum.appsaviors.com. It is also available in the mobile header. Forum sign-in is managed by the forum itself; no extra website setup is needed.

Earlier visual updates

Mobile delivery steps now stack clearly, and the background continues moving while you scroll throughout the page. Pause motion still stops it when you choose. The four character animations sit to the right of Services, the Order Desk, the People section and the Three Steps section. Scroll normally to move between them. The central text stays clear while surrounding text dims and softens. Selecting a form control keeps its section readable. Dark mode uses a vibrant spectrum over midnight blue. Light mode uses a coordinated pastel spectrum. The characters keep moving while you read. Each character is formed from the same moving data points that travel into the next character. Its ink travels as a continuous field of data into the next character as you scroll. Scroll backward to reverse those same paths. Scroll through each section to reveal its content and carry the data into the next figure. Scroll upward to reverse the sequence. Use Pause motion beside the character to freeze idle movement; scrolling still changes the scene. These visuals need no extra account or paid service. Your Discord and spreadsheet activation instructions below still apply.

Order connections verified

On October 10, 2026, a clearly marked zero-value test passed from website submission through Discord sign-in, private ticket creation, staff completion and a saved Google Sheets row. The test used the server owner. A regular customer account still needs to verify access, privacy and new-member joining before launch.

Connection reference for future maintenance

The server, bot and private spreadsheet are connected. The instructions below are retained for maintenance; do not create duplicate connections. Keep secret values in the private hosting settings.

  1. You prepare: your new server, an Order Team role, an Orders category and an empty, restricted Google Sheet.
  2. You send the non-secret details: server invite, server/category/role IDs, bot Application ID and Public Key, sheet link, accepted payment methods and currency.
  3. You add privately: the bot token, Discord client secret and Google private key. These are passwords. Do not paste them into this conversation or Discord.
  4. I connect and check: the correct callback addresses, role permissions, ticket creation and spreadsheet mapping.
  5. We test together: one customer account, one staff account, one test order and one completed row. No real payment is needed for this test.
  6. You decide when to open: the website is publicly accessible. Keep orders in review mode until the Discord and spreadsheet test passes.

Jump to the exact connection addresses and settings ↓ · Read the latest changes →

What is ready, and what still needs you

PartCurrent positionNext action
Website and formBuilt for Beta 3.11Review the design and run a sample request.
Discord ticket automationConfigured. Owner-account order flow passed October 10, 2026.Test access with a regular customer account.
Private order sheetConfigured. Zero-value test row saved and verified October 10, 2026.Keep TEST records separate from business reporting.
Proofs and payment optionsWaiting for your real business detailsProvide redacted proof screenshots and approved payment methods.
LaunchPublic website; owner-account order flow verifiedComplete the fresh-customer test before opening to customers.

Shop and coupon setup

  1. Open /shop to review all six game categories. Genshin includes six crystal sizes, Welkin, Gnostic Hymn, Travel Notes and Gnostic Chorus.
  2. Set SHOP_PRICES_JSON in the private hosting settings. Use whole cents ending in 99. Example only: {"gc6480":{"regular":9999,"sale":8999}}. This example means $99.99 regular and $89.99 sale; it is not a published business price. A sale must be lower than its regular price. Leave sale out when there is no discount.
  3. Product keys: gc60, gc300, gc980, gc1980, gc3280, gc6480, welkin, hymn, notes, chorus. Missing prices show a pending label. Staff confirms every final quote in Discord.
  4. Set SHOP_SALE_BANNER to your approved sale message. Avoid announcing a discount until the real prices and terms are ready.
  5. The two opening coupons are placeholders. Their claim buttons lead to the offer information page. This VPS edition uses Discord sign-in for orders. Separate website accounts are not enabled. No password database is added. Coupon issuance, expiry and redemption must be implemented after the actual offers are specified; no live discount is currently promised.
  6. Check each product from shop selection through the order review. Verify the product name and amount reach the Discord ticket after your server is connected.

Connection progress

Discord sign-in, private ticket creation, staff completion, ticket closure and private Google order logging passed a zero-value owner-account test on October 10, 2026. No payment was taken. Next: verify a regular customer cannot access other tickets or use staff actions, confirm new-member joining, and approve real payment methods, currency and business terms.

This is App Saviors Beta 2.2. The website and connection code are prepared. Your new Discord server, bot and private Google Sheet still need to be connected before real customers can use the complete flow.

What happens when a customer orders

  1. They choose top-ups, piloting, account trading, or a combined request on your website.
  2. They enter their game, server, item or goal, name, Discord username, preferred payment method and any deadline or notes.
  3. They click Continue to Discord. Discord asks them to sign in and agree to join your server. We identify them through that sign-in, so a mistyped username does not send the ticket to the wrong person.
  4. The customer is added to your server and a private order channel opens. Their brief is already inside. The order-team role is pinged.
  5. A team member checks availability, agrees on the exact price and timing, and provides your approved payment instructions.
  6. The team checks that payment really arrived, handles the order manually, and confirms delivery with the customer.
  7. The staff member presses Complete order, fills in the short form and submits it. The record goes to your private sheet. The customer can still read the closed ticket, but cannot send new messages there.

This version does not charge cards, take a payment on the website or check bank/PayPal receipts automatically. It gives customers a direct path to purchasing through your team. Payment verification and fulfillment stay with your staff.

What I have prepared for you

Step 1. Finish your new Discord server

  1. Create the server under the Discord account you want to own the business. Give it the App Saviors name and your current icon.
  2. Open Server Settings → Roles and create a role named Order Team. Give it only to you and the people who should see customer tickets and complete orders.
  3. Create a category called Orders. Private order channels will appear inside it. Keep unrelated conversations out of this category.
  4. Create #welcome, #how-to-order, #proofs-and-vouches and #support. Put your payment and delivery expectations in #how-to-order.
  5. Make #proofs-and-vouches readable by customers. Add genuine delivery screenshots and feedback with customer identifiers and sensitive information removed.
  6. Create an invite to the server that does not expire, if Discord allows that for your server.
  7. In your Discord user settings, open Advanced and turn on Developer Mode. This simply makes Copy ID available. Right-click the server to copy its ID; right-click the Orders category to copy its ID. Copy the Order Team role’s ID from the role menu. Send these three IDs and your invite link to me. They are identifiers, not passwords.
  8. Right-click #proofs-and-vouches and choose Copy Channel Link. Send that link too.

Customers may also need to accept your server rules or pass Discord’s own checks before they can speak. We need to test that with a fresh member account.

Step 2. Create the App Saviors helper bot

The bot is the account that creates private tickets and handles the completion buttons. It runs through the website’s connection, so this version does not require leaving your own computer on.

  1. Open the Discord Developer Portal and sign in with the account that owns your server.
  2. Choose New Application. Name it App Saviors Order Desk.
  3. On General Information, copy the Application ID and Public Key. These can be shared with me.
  4. Open Bot. Create or reveal/reset the bot token as needed. This is the bot’s password. Store it only in the website’s private connection settings, never in a channel, screenshot, the HTML file or a normal chat message.
  5. Open OAuth2 and obtain the Client Secret. Store it privately in the same way.
  6. Add your website address followed by /api/discord/callback to the allowed redirect addresses. Copy the exact address from the connection table below; do not add a trailing slash.
  7. Use Discord’s installation or OAuth2 URL generator to install the bot into your new server. Select the bot scope. Grant View Channels, Send Messages, Embed Links, Read Message History, Manage Channels, Manage Roles and Create Instant Invite. Grant Mention Everyone only if needed for the Order Team ping, or make that specific role mentionable. Administrator permission is not required.
  8. In Server Settings → Roles, put the bot’s role above any roles it must manage. Check that it can see the Orders category and create channels there. The connection assigns private access separately for every ticket.
  9. Once the private connection values are installed and the website is reachable by Discord, return to General Information and set Interactions Endpoint URL to your website address followed by /api/discord/interactions. Save. Discord checks that the address responds correctly.

If Discord refuses the endpoint, stop there and send me the error text. The usual items to check are the public key, whether the site can be reached without a ChatGPT sign-in, and whether the newest connection settings have been applied.

Step 3. Create the private order sheet

  1. Open Google Sheets and create a blank spreadsheet called App Saviors Orders.
  2. Rename its first tab to Orders, with that exact spelling. Start with a completely empty tab. Add enough rows for your expected order volume, such as 10,000 rows.
  3. Keep the spreadsheet’s general access set to Restricted. Only add owners or finance staff who should see costs and profits.
  4. Send me the spreadsheet link. The link alone does not grant access.
  5. Open Google Cloud Console. Create a project named App Saviors Orders, or choose the project you want to use.
  6. Go to APIs & Services → Library, find Google Sheets API and enable it.
  7. Go to IAM & Admin → Service Accounts → Create Service Account. Name it App Saviors Order Writer. This gives the bot its own Google identity. It does not need a broad project administrator role.
  8. Open that account, choose Keys → Add Key → Create New Key → JSON, and download the file. Treat this file like a password. If your Google organization blocks key creation, tell me; do not change organization security rules just to force it through.
  9. Copy the service account’s email address. In the spreadsheet, click Share, paste that email, and give it Editor access.
  10. Enter the service account email and private key from the downloaded file into the website’s private connection settings. Do not upload the key file to your public site or paste it into Discord.

The connection writes a heading row automatically on the first completed order. Each sale has a permanent row number, so retries update the same row. Do not sort, delete, insert or rearrange rows in the Orders tab. Use a filter view or a separate reporting tab for sorting and analysis. Archive copies when needed. If you prefer Excel for reporting, download a copy using File → Download → Microsoft Excel. This beta writes automatically to Google Sheets, not directly to a live Excel workbook.

Step 4. Give me the business details

The secret bot and Google values must be entered privately. The connection table below gives the exact setting names so there is no guesswork. If you cannot find private settings in your hosting account, tell me what controls you see and I’ll guide that step. Do not send secrets in an ordinary message.

Step 5. Connect and test before inviting customers

After you provide the non-secret details and enter the private values, I can finish the site configuration, check the connection and help you run the first test. The website is publicly accessible. Discord and Google still need the private connection values and the full test below before you invite paying customers.

  1. Use a second Discord account that is not an administrator and has not joined the server.
  2. Submit a small test request on the website. Confirm the sign-in screen names your bot and the correct server.
  3. Confirm that the account joins the server, accepts any rules and lands in a ticket containing the exact order details.
  4. Check that the Order Team is notified. Use another ordinary account to confirm it cannot see the ticket. Server owners and administrators can still see private channels.
  5. Try Complete order as the customer. It must refuse the action.
  6. Use a staff account and press Complete order. Enter a test amount of 25.00 and a total cost of 18.50 in your selected currency. This is test data; do not take real payment.
  7. Verify that the private sheet shows a profit of 6.50, the correct customer, payment method, delivered item and staff identity.
  8. Verify that the customer cannot post in the closed ticket, and that the completion details and profit were never posted publicly in the customer channel.
  9. Test an interrupted sheet connection and the Retry saved completion button. The ticket must remain open until recording succeeds, and retrying must not add a second sale.
  10. Test top-ups, piloting, an account request and a combined request, including on your phone.
  11. Once these pass, confirm that the website should be open to customers and add its address to #welcome and #how-to-order.

Your team’s everyday instructions

  1. Open the new ticket when Order Team is pinged.
  2. Confirm the game, server, requested work and deadline. Agree on the exact item, price and expected delivery.
  3. Send your approved payment instructions. Check your own payment account to verify receipt; a customer screenshot is not the payment record.
  4. Fulfill the request manually. Keep progress updates in the ticket.
  5. Confirm delivery with the customer.
  6. Press Complete order. The form is visible to the staff member, not posted into the ticket.
  7. Review the prefilled customer name, actual payment method and item/service delivered. Enter the amount actually received and your total cost, including any fees you want deducted from profit.
  8. Submit. The signed-in staff member is recorded as the handler automatically; profit is calculated automatically. If a different person did the work, have that person complete the form.
  9. If the sheet update fails, leave the ticket open and press Retry saved completion after the connection is fixed. Saved amounts cannot be silently overwritten by another staff submission.

Use Cancel request only for unpaid, unfulfilled requests. It asks for confirmation and closes the ticket without recording a sale. Paid cancellations, refunds, chargebacks and corrections need owner review and a separate adjustment record in this first version. Do not delete a paid ticket to pretend an order never happened.

When something goes wrong

What you seeWhat to do
The new order desk is not connectedFinish the private connection settings and apply them. The site deliberately does not pretend a ticket opened.
Discord sign-in is cancelled or expiresOpen the order form again and continue. The browser keeps the brief for the session.
The customer is in the server but cannot speakAsk them to accept server rules. Check verification settings and the ticket’s customer permission.
The bot cannot create a ticketCheck the server/category IDs, bot permissions and role position. Retry the same order; existing tickets are reused.
No staff pingCheck the Order Team ID and whether the bot can mention that role. Also check each staff member’s notification settings.
The sheet does not updateCheck that the service account has Editor access, the tab is named Orders and there are enough rows. Restore the connection and use Retry saved completion.
Wrong amount was enteredAsk the owner to reconcile it. Keep the original sale and make a documented adjustment in a separate adjustments tab. Do not create a second sale.

What remains before real orders

Your real server and payment details, the bot installation, private connection settings, genuine proofs, a publicly reachable customer address and the fresh-account test. The code has been checked locally, but no live ticket, payment or private-sheet transaction has been tested without your accounts.

Technical references for whoever helps you connect it: Discord sign-in and joining, Discord interaction verification, and Google Sheets writes.

Connection settings reference

These are setting names, not values to copy as passwords. Never place secret values in the HTML or browser code. This guide contains no saved secret values.

Setting nameWhat goes here
APP_ORIGINWebsite address, without a trailing slash
DISCORD_CLIENT_IDDiscord Application ID
DISCORD_PUBLIC_KEYDiscord Public Key
DISCORD_CLIENT_SECRETDiscord Client Secret · private
DISCORD_BOT_TOKENDiscord bot token · private
DISCORD_GUILD_IDNew server ID
DISCORD_TICKET_CATEGORY_IDOrders category ID
DISCORD_STAFF_ROLE_IDOrder Team role ID
GOOGLE_SERVICE_ACCOUNT_EMAILGoogle order-writer email
GOOGLE_PRIVATE_KEYGoogle order-writer private key · private
GOOGLE_SHEET_IDSpreadsheet ID from its address
GOOGLE_SHEET_TABOrders
ORDER_CURRENCYYour currency, e.g. USD
PAYMENT_METHODSAccepted methods, separated by commas
DISCORD_INVITENon-expiring server invite
DISCORD_PROOFS_URLProof-channel link
VERIFIED_PROOF_COUNTConfirmed count, only after verification
PROOF_GALLERY_JSONReal screenshot links and captions, added by me

Discord redirect address: https://appsaviors.com/api/discord/callback

Discord incoming message address: https://appsaviors.com/api/discord/interactions

Bot connection values present: Yes. Owner-account test passed; regular-customer check remains. Google connection values present: Yes. Owner-account test passed; regular-customer check remains.