332 lines
10 KiB
Markdown
332 lines
10 KiB
Markdown
---
|
||
title: Support Guide
|
||
tags: [usage, role/support]
|
||
audience: Support agent
|
||
created: 2026-05-23
|
||
---
|
||
|
||
# Support Guide
|
||
|
||
End-to-end usage for **Support** agents — Tier-1 customer help, account recovery, troubleshooting. Support has elevated read permissions but limited write power; serious actions escalate to admin.
|
||
|
||
> [!info]
|
||
> Looking for a different role? See [[User Guide]] (Buyer), [[Seller Guide]] (Owner), [[Admin Guide]].
|
||
|
||
---
|
||
|
||
## 1. Support account
|
||
|
||
Support agents are provisioned by an admin (see [[Admin Guide]] §3.3). A typical seed:
|
||
|
||
| Email | Role | Capabilities |
|
||
|---|---|---|
|
||
| `support@amn.gg` | support | Read users, reset passwords, view chat (case-scoped), escalate |
|
||
|
||
A support account CANNOT:
|
||
|
||
- Change roles
|
||
- Ban / unban
|
||
- Resolve disputes (read-only)
|
||
- Issue refunds (escalate to admin)
|
||
- Modify points or financial records
|
||
- Publish blog posts
|
||
|
||
---
|
||
|
||
## 2. Workflow
|
||
|
||
Support tickets flow through these stages:
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
A[New ticket] --> B[Triage]
|
||
B --> C{Resolvable?}
|
||
C -- yes --> D[Resolve]
|
||
C -- no --> E[Escalate to admin]
|
||
D --> F[Close]
|
||
E --> G[Wait]
|
||
G --> H[Admin resolves]
|
||
H --> F
|
||
```
|
||
|
||
Ticket sources:
|
||
|
||
- In-app contact form (writes to a `support` Notification / dedicated collection)
|
||
- Email to `support@amn.gg` (forwards to ticketing tool)
|
||
- Live chat widget (if enabled)
|
||
|
||
---
|
||
|
||
## 3. Common Tier-1 tasks
|
||
|
||
### 3.1 "I can't sign in"
|
||
|
||
1. Ask the user for their email.
|
||
2. **Dashboard → User → [profile]** to look them up.
|
||
3. Check status: `active`, `banned`, `pending email verification`?
|
||
4. If pending verification → **Resend verification email** (button in user profile).
|
||
5. If account locked → wait out the lockout (default 30 min) OR escalate to admin for immediate unlock.
|
||
6. If forgotten password → tell the user to use **Forgot password** on the sign-in page OR you can trigger **Reset password** from their profile (sends a fresh reset code).
|
||
|
||
> [!warning]
|
||
> Never ask a user for their password. Never SET a password for them — the platform sends a reset code so only they can complete the change.
|
||
|
||
### 3.2 "I didn't receive the email"
|
||
|
||
Checklist:
|
||
|
||
1. Confirm the correct email is on file.
|
||
2. Ask them to check Spam / Promotions.
|
||
3. Check if the user's email domain is on a known block list (yopmail, mailinator, etc.).
|
||
4. Resend (max 3 retries / hour).
|
||
5. If issue persists → check backend SMTP logs (escalate to admin).
|
||
|
||
### 3.3 "How do I change my email?"
|
||
|
||
1. Ask the user to first verify ownership of the new email.
|
||
2. Today this is an admin-assisted change — escalate.
|
||
|
||
(Roadmap: self-service email change with verify-old + verify-new.)
|
||
|
||
### 3.4 "I lost access to my Passkey device"
|
||
|
||
1. They can use their password as a fallback.
|
||
2. Direct to **Dashboard → Account → Passkey → Remove [device]**.
|
||
3. Add a new passkey from the new device.
|
||
4. If passkey was their ONLY auth method → escalate to admin who can manually unlock.
|
||
|
||
### 3.5 "I'm a seller — how do I withdraw?"
|
||
|
||
1. Verify they completed shop setup (payout wallet on file).
|
||
2. Walk them through **Dashboard → Payment → Payouts → Request payout**.
|
||
3. Remind them that payouts process within 1–2 business days.
|
||
4. If a specific payout is stuck → escalate to admin with the payout ID.
|
||
|
||
### 3.6 "My payment is stuck"
|
||
|
||
1. Get the payment ID or invoice URL.
|
||
2. Open in Admin user (if you have read access).
|
||
3. Check status:
|
||
- `pending` for <1h — tell user to wait for blockchain confirmation.
|
||
- `pending` for >1h — escalate to admin (webhook may have failed).
|
||
- `processing` — usually clears within minutes.
|
||
- `failed` — note the error code and escalate.
|
||
4. If user sent wrong network/token → **escalate immediately**, recovery may require manual on-chain work.
|
||
|
||
### 3.7 "I want to delete my account"
|
||
|
||
1. Confirm via email reply (anti-impersonation).
|
||
2. Check for: open orders, in-flight payments, open disputes — none should exist.
|
||
3. If any open obligations → ask user to settle first.
|
||
4. Escalate to admin for the actual deletion (it's a manual op to ensure data retention compliance).
|
||
|
||
### 3.8 "How do I become a seller?"
|
||
|
||
Walk them through:
|
||
|
||
1. **Dashboard → Account → Become a seller**.
|
||
2. Fill in shop info (name, country, payout address, social links).
|
||
3. Submit → admin verification within 1 business day.
|
||
4. Once approved → can build templates and submit offers.
|
||
|
||
See [[Seller Guide]].
|
||
|
||
### 3.9 "I see stale data / the page is broken"
|
||
|
||
Suggest the **localStorage cleanup** trick:
|
||
|
||
1. Open browser DevTools (`F12` or `Cmd+Opt+I`).
|
||
2. Console tab → paste:
|
||
```js
|
||
Object.keys(localStorage)
|
||
.filter(k => /^(manual-payment|buyer-step|LAST_(PAYMENT|TEMPLATE|SOCKET))-/.test(k))
|
||
.forEach(k => localStorage.removeItem(k));
|
||
location.reload();
|
||
```
|
||
3. (This pattern matches the keys cleared by `frontend/cleanup-localstorage.js`.)
|
||
|
||
If the issue persists → screenshot + browser info + URL → escalate.
|
||
|
||
### 3.10 "I want a refund"
|
||
|
||
1. Confirm what they're requesting (full / partial / for which order).
|
||
2. Check the order status & history.
|
||
3. If order is **Funded** and not yet shipped → they can negotiate cancellation with the seller (no admin needed).
|
||
4. If order is shipped/disputed/refund-disputed → direct them to open a **dispute** (or it's already open).
|
||
5. Goodwill refund < $10 — admin can issue. Note the case and escalate.
|
||
6. Larger refunds — must go through dispute process.
|
||
|
||
See [[Dispute Flow]].
|
||
|
||
---
|
||
|
||
## 4. Triage rubric
|
||
|
||
Assign priority based on impact:
|
||
|
||
| Priority | Examples | SLA |
|
||
|---|---|---|
|
||
| **P0 — Site outage / data loss** | Cannot reach amn.gg, all logins failing, payments silently failing | Immediate page admin |
|
||
| **P1 — User cannot transact** | Specific user can't pay, payout failed, dispute stuck > 7 days | 4 hours |
|
||
| **P2 — Functional bug, workaround exists** | Notification not arriving, cosmetic issue | 1 business day |
|
||
| **P3 — Question / how-to** | "How do I…" inquiries | 2 business days |
|
||
|
||
---
|
||
|
||
## 5. Escalation matrix
|
||
|
||
| Issue | Escalate to |
|
||
|---|---|
|
||
| Account un-ban request | Admin |
|
||
| Role change (buyer→seller, granting support) | Admin |
|
||
| Refund > $10 | Admin |
|
||
| Dispute resolution | Admin (mediator) |
|
||
| Manual payout exception | Admin |
|
||
| Database correction | Admin + engineer on-call |
|
||
| Site outage | Engineering on-call |
|
||
| Security incident (suspected breach / abuse) | Admin + engineering on-call IMMEDIATELY |
|
||
| Legal request (law enforcement, GDPR) | Admin + legal/compliance |
|
||
|
||
---
|
||
|
||
## 6. Communication templates
|
||
|
||
### 6.1 Password reset
|
||
|
||
```
|
||
Subject: Reset your Amn password
|
||
|
||
Hi {name},
|
||
|
||
You can reset your password at https://amn.gg/auth/jwt/reset-password. You'll receive a 6-digit code by email valid for 1 hour.
|
||
|
||
If you didn't request this, please ignore this email — your password remains unchanged.
|
||
|
||
— Amn Support
|
||
```
|
||
|
||
### 6.2 Verification email not received
|
||
|
||
```
|
||
Hi {name},
|
||
|
||
The verification email was sent. Please:
|
||
|
||
1. Check your Spam / Promotions folder.
|
||
2. Allow up to 5 minutes for delivery.
|
||
3. Click "Resend code" if it still hasn't arrived.
|
||
|
||
If the issue persists, reply with the email address you signed up with so we can investigate.
|
||
|
||
— Amn Support
|
||
```
|
||
|
||
### 6.3 Payment stuck (>1 hour)
|
||
|
||
```
|
||
Hi {name},
|
||
|
||
We see your payment {paymentId} is still showing pending. Crypto confirmations usually take a few minutes; an hour is unusual.
|
||
|
||
We've escalated this to our payments team for investigation. We'll update you within 4 hours.
|
||
|
||
In the meantime, please do NOT send additional funds — that may complicate recovery.
|
||
|
||
— Amn Support
|
||
```
|
||
|
||
### 6.4 Refund request → dispute path
|
||
|
||
```
|
||
Hi {name},
|
||
|
||
I understand you'd like a refund for order {orderId}. The fairest way to resolve this is through our dispute process, which gives both you and the seller a chance to provide evidence before a neutral mediator decides.
|
||
|
||
To open a dispute:
|
||
|
||
1. Open the order page (link below).
|
||
2. Click "Open dispute".
|
||
3. Choose a reason and upload photos / chat screenshots as evidence.
|
||
|
||
A mediator will pick up your case within 24 hours.
|
||
|
||
Link: https://amn.gg/dashboard/request/{orderId}
|
||
|
||
— Amn Support
|
||
```
|
||
|
||
### 6.5 Account un-ban (require admin approval)
|
||
|
||
```
|
||
Hi {name},
|
||
|
||
I've escalated your account review to our admin team. They'll look at the original reason for the suspension and respond within 1 business day.
|
||
|
||
In the meantime, you won't be able to sign in. Funds in escrow are unaffected and will be settled once any open orders complete.
|
||
|
||
— Amn Support
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Tools & access
|
||
|
||
| Tool | Purpose | Permission |
|
||
|---|---|---|
|
||
| Admin dashboard (read mode) | Look up users, orders, payments | Yes (read) |
|
||
| User → Reset password | Trigger fresh reset code | Yes |
|
||
| User → Resend verification | Resend signup code | Yes |
|
||
| Notification system | Send "follow-up" notifications | Yes (scoped) |
|
||
| Chat history viewer | Read dispute chats | Yes (case-scoped) |
|
||
| MongoDB direct | Ad-hoc queries | No (escalate) |
|
||
| Payout trigger | Issue payouts | No (escalate) |
|
||
| Refund issuer | Issue refunds | No (escalate) |
|
||
| Dispute resolver | Make resolution | No (escalate) |
|
||
|
||
---
|
||
|
||
## 8. Privacy & ethics
|
||
|
||
> [!warning]
|
||
> Support has powerful read access. Do not browse user chats, payments, or addresses unless investigating a specific ticket. Each access should be tied to a ticket ID, ideally logged.
|
||
|
||
- Never disclose one user's data to another user.
|
||
- Verify identity before discussing account specifics (signed-in session > email reply > anonymous form).
|
||
- For financial / legal inquiries, escalate to admin + legal.
|
||
|
||
---
|
||
|
||
## 9. Common knowledge base
|
||
|
||
Bookmark these for instant reference:
|
||
|
||
- [[User Guide]] — common Buyer questions
|
||
- [[Seller Guide]] — common Seller questions
|
||
- [[Glossary]] — terminology reference
|
||
- [[Authentication Flow]] · [[Password Reset Flow]] · [[Passkey (WebAuthn) Flow]] — how auth actually works
|
||
- [[Payment Flow - SHKeeper]] · [[Payment Flow - DePay & Web3]] — how payments flow
|
||
- [[Dispute Flow]] — when refund requests need to go to dispute
|
||
- [[Notification Flow]] — why a user might not have received an email
|
||
- [[Error Codes]] — interpret HTTP errors / app-specific codes the user reports
|
||
|
||
---
|
||
|
||
## 10. Improving the docs
|
||
|
||
If you answer the same question repeatedly, propose a **knowledge-base article**:
|
||
|
||
1. Note the recurring question.
|
||
2. Write a short answer with screenshots.
|
||
3. Submit to admin for inclusion in `frontend/src/sections/blog/` or this vault.
|
||
|
||
A good support team grows the docs over time.
|
||
|
||
---
|
||
|
||
## 11. Related
|
||
|
||
- [[User Guide]] · [[Seller Guide]] · [[Admin Guide]]
|
||
- All flow docs in [[04 - Flows]] folder
|
||
- [[Incident Response]] — when support is alerted to outages
|
||
- [[Glossary]]
|