For League organisers
You only ever see your own league. Nothing you do here can touch another league, a tournament, or anything else on the site.
Sign in, then open the league screens
Sign in with your phone, then go to qwahabedi.co.za/admin. Down the left, under Leagues:
- Paste a result sheet — the one you will use every week
- Enter results — one match day, two boxes a match, for fixing a single score
- Leagues — the league itself: its badge, its sponsors, how a table is worked out, and who runs it
- Fixtures — who plays who, where and when
- Opening balances — the figures the season started from, and points taken off
- Clubs — the clubs and where they are from
Every week: paste the sheet
Open Paste a result sheet, paste the whole message the referees sent you — emoji and all, exactly as it arrived — and press Read the sheet.
Nothing is saved yet. You get the date, the ground and every match it found, so you can look before anything reaches the site. Then press Save.
It reads the sheet however it is written: one line with a dash, the two sides stacked with a score each, scores in brackets, "Walkover" on its own line. You do not have to tidy anything up first.
Pasting the same sheet twice is safe. A match already on the board is updated, never added again — so if you are not sure whether it went through, just do it again.
How a result sheet should be written
It reads a sheet however it is written, but a post with every stream on it has to say which is which. Each stream is its own block, in this order every time:
♻️Makwane Stream 📅31 October 2026 🏟Makwane Sports Ground ⏰10h00 🪪Under 13 ⚽Golden Birds FC 2 - 0 Junior Madrid FC ⚽77 FJ Contact 2 - 0 Amaroto FC -Walkover
Then the next stream, starting again from the recycling mark.
- The recycling mark goes in front of every stream, even one whose name already says "Stream". Without it a name like "Namahadi A" is not read as a stream at all, and its results land in the block above.
- Every stream repeats its own date. This is the one that goes wrong quietly: a stream with no date of its own takes the one above it, which on a Saturday-and-Sunday post is the wrong day.
- The age group goes under the stream, never above it.
- One line a match, with a separator. Never the score pushed up against the club name, never the two sides split over two lines.
- A note goes on the line after the match it belongs to – "Walkover", "abandoned the match", "did not honour their match".
- A match that produced no result still needs a score line. Write it 0 - 0 with the reason underneath. The score is ignored and the match is left out of the table, but without it the note has nothing to attach to and the match disappears.
What it will forgive. A score as 2 - 0, 2-0, 2 : 0, 2 v 0 or (2)-(0). An age group as "Under 13", "U13", "U/13" or "Open". A walkover written "Walkover", "Walk over", "(Walk over)", "-Walkover" or "W/O". A time as 10h00 or 10:00, and anything before seven is read as the afternoon, so 01h30 is half past one. Club names it already knows by another spelling, such as First Eleven for Fast Eleven.
The date needs the month in words – 31 October 2026 or 31 Oct 2026. Written 31/10/2026 it is not read as a date at all.
The trophy and "Weekend Results" at the top are for the people reading it; the site ignores them. The ground and the kick-off are optional, though a ground is worth giving.
One thing no format can fix: write each result under the stream the clubs actually play in. A result filed under the wrong stream is put right on the site, and it still says the wrong thing to everybody reading the post.
When it stops on a club's name
If a name on the sheet is not one the league knows — "First Eleven" where the squad list says "Fast Eleven" — that match goes amber and waits. It will not guess. Pick the right club from the list underneath it.
Tick Remember this spelling and it will never ask again: the next sheet written the same way goes straight through. The rest of the sheet still saves, so one odd name does not hold up the round.
Three things it will refuse to do
- Record a result before the match is played. A score on a day that has not happened is always a mistake — either the sheet is misdated or it is the fixture list.
- Save a sheet with no date on it. Without one there is no way to tell this round from the return match between the same two sides.
- Quietly count the same games twice. If a sheet is older than the figures the league supplied at the start, it says so and asks you to check first. Those games are probably already in the table.
Points taken off
Open Opening balances, find the side, and use Points taken off. Put in a negative number and the reason — "Fielded an ineligible player". The reason is printed under the public table word for word, so write it as you would want it read.
A side that loses points drops down the table, not just in the right-hand column. If a deduction is later overturned, add a new row with a positive number rather than deleting the first one — that way both decisions are still on record.
Fixtures, grounds and sponsors
Fixtures is where you add a match before it is played. Every match needs a date: the site uses it to tell a played round from one still to come, and to keep the two legs of a home-and-away apart.
A ground with a page on Qwahabedi is linked from the fixture, and the match shows on that village's page too. If a ground has no page yet, ask a Qwahabedi admin to add it.
Sponsors sit on the league itself — open Leagues, click the league, and scroll down. A logo with a line under it ("Main sponsor", "Partner") shows on every league page and is drawn into every share image. A sponsor with no logo yet shows as their name, so add them the day they sign.
How the table is worked out
Nothing about a table is stored. Played, won, drawn, points and position are worked out from the results every time the page is drawn, so a table can never drift away from the matches underneath it. Correct a score and every table changes with it.
The points, the order ties are settled in, and what a walkover is scored at are all settings on the league, under How a table is worked out. Change one and every table changes the moment you save.
Where two sides are level on everything the league settles ties by, they share a position — the table reads 1, 1, 3. The site will not invent an order it has no rule for.
Posting the table as a picture
Every table makes its own picture, ready to post. Open the table on the public site — Competitions, then Table, then the one you want — and click Share image above it. Then Download image, and post it the way you would post any photo.
It is drawn the moment you open it, from the table as it stands. So it cannot be an old log: whatever score was entered last is already on it. There is nothing to remake when a result changes — open it again and download it again.
The shape is right for WhatsApp status and for Facebook, so nothing is cut off, and the site’s address is on the picture itself. Somebody who sees it on a status can come and read the rest.
Each stream and group has its own — U13, U15, U17, U19 and Open, every table separately.
Giving somebody the league
Open Leagues, click the league, and find Who runs this league at the bottom. Give somebody the league and search for them by name or phone — they must have signed in once before, so that there is an account to find.
They will be able to enter results, add fixtures and edit clubs for this league, and nothing else on the site. Take it away removes it again.
What the site will not publish
No player is named anywhere. There is no squad list, no scorer, no date of birth — not hidden, not there at all. Every player in this league is a child, and the site holds nothing about any of them.
If squads are ever published it will be one at a time, with each parent's consent recorded first, the same way the Bana ba Motse profiles work.
Still stuck? Use Report or take down for anything wrong on a page, or ask whoever sent you here.