People tap a plan in the app, then contact you on WhatsApp to pay. When a payment is confirmed, Approve here grants that plan to the user instantly — Reject closes the request. The request itself carries the plan and the user's ID (payment details were shared over WhatsApp, not stored here).
In the current app version, premium activates automatically when a payment completes — requests on this page come from old app versions. Treat a request as paid only if it shows a Google Play order ID or has a matching record on the Sales page.
| User | Plan | Contact | Payment proof | Date | Status | Actions |
|---|
Promotion Requests
Link promotions bought inside the app. The current app version writes a request here only after a real Google Play payment completes, and stores the order ID with it — check the Payment proof chip on each row. Requests with no order ID come from old app versions, where a promotion could be earned by watching ads or a request sent without paying at all.
| User | Link | Package | Payment proof | Date | Status |
|---|
| Link | Category | Status | Views | Promotion | Actions |
|---|
⚠️ Links remember their category by name. Renaming a category here does not rename it on links that already use the old name.
| Emoji | Name | Order | Actions |
|---|
Add a category
| User | Premium | Push | Status | Last seen | Actions |
|---|
| Date | Type | Product | Price | User | Order ID |
|---|
Prices are the display texts the app recorded at purchase time (the Sales log stores price text, not a structured amount), so totals are grouped by the currency found in that text.
| Link | Reason | Reported by | Date | Actions |
|---|
| Type | Message | From | Date | Actions |
|---|
1 · Sending key
Push is set up automatically for this panel — right after you sign in, the sending key loads securely from the panel's private store, so notifications work on any device you sign in from. You normally never need to touch anything here.
Manual override: paste a Firebase service account key (Firebase Console → Project settings → Service accounts → Generate new private key). It is stored only in this browser (localStorage), never in the panel's code, and it takes priority over the automatic key. It is only ever sent to Google's own token endpoint.
2 · Auto notifications
The app sends users a friendly push twice a day, automatically — one in the morning, one in the evening — so your users stay active without you lifting a finger. Turn it off or change the times here.
Messages rotate daily from a built-in set of friendly messages.
3 · Compose & send
Goes to every user who has the app installed (their device tokens are collected from the Users list). The app shows the title, body and — if given — the big image; tapping opens the link if one is given, otherwise the app.
Ads
House ad (your own ad in the ad slot)
When ON with an image and a link, your ad replaces the Adsterra banner everywhere. Premium users never see it.
Prices & promote (display texts the app shows)
These are the texts shown on the Premium and Promote screens. The amount actually charged is set in Play Console per product.
Links & contact
App update prompt (sideload fallback)
Play-store users update through Play automatically. These two fields drive the in-app prompt for anyone running a directly-installed copy.
One save writes every setting on this page. Saved values apply to the app within a few minutes (the app re-reads them on start).
Signed in
You are signed in as —. This is the only account allowed into this panel. To sign out, use Logout at the bottom of the side menu.
Change password
Type your current password, then the new one. The change happens directly in Firebase Auth — the new password works from your very next sign-in, on every device.