Admin Panel
?
Loading…

Dashboard

Welcome back, Admin 👋

Connecting…

📈 7-Day Activity

Actions
Page views
🖥 Server
Loading…
⚡ Quick Actions
📋 Recent Activity
AdminActionWhen
Loading…
🏆 Top Contributors
Loading…
⚙️ Level Distribution
0total points awarded
Loading…

🎬 De animatie

By default the drawing follows the clock in Zaandam and the weather over the Schans. Every dial here says "follow" until you turn it. Nothing is saved until you press Save.

Live preview: what visitors would see.
Presets · ready-made scenes and your own

🎧 De Zaan vertelt

One true story a day, tied to a place. Written by you, or drafted by the assistant from facts the site already holds and read by you before it goes out. The voice reads only what is written.

Credits
Loading…
Voice and assistant

ElevenLabs key: checking…

Podcast: the recordings are also a feed, one per language, for Spotify, Apple Podcasts and every other app. Give it a square cover of at least 1400 pixels and the address the directories may write to.
The next two weeks
DayStoryStatusAudio
Loading…
Music library · calm instrumentals that play softly under a voice
Or let ElevenLabs compose a bed to fit a story. Pick a mood, change the words if you like, choose the length. It uses credits from the same account.
Assistant · drafts only from facts on the site or from your notes; you read it before it goes out

📍 Places

PlaceCategoryDistrictAddedStatusActions

🎭 Events

Manage all events

0
⏳ Pending Review
0
✅ Approved
0
❌ Rejected
0
📊 Total Events
0 selected
EventDateCategoryPriceFeaturedStatus Actions

🚴 Routes

🗺 Builder
RouteTypeDistanceDurationDifficultyActions

📜 History

YearTitleFeaturedStatusActions

👥 Users

UserEmailRoleStatusPointsJoinedActions

🔍 Audit Log

TimeAdminActionEntityDetail

📋 Activity Logs

Signups, logins, consent and admin changes — for your records

TimeActionUserEmailIPDetail

🧱 Page Builder

Edit the hero text, images and sections of each page — published live

↗ View page
Leave a field empty to keep the page's built-in text.
✍️ Hero content
🖼 Hero image

📈 Analytics

What people actually do on GoZaanstad

📅 Last 14 days
🍪 Cookie consent
🔝 Top actions
👁 Page views, last 14 days
📄 Most viewed pages (30d)
📱 Devices, themes, languages (30d)
🔗 Where visitors come from (30d)
🗺 Day planner, last 30 days
Interests people pick
Places the planner uses most
🔴 Live — the last 15 minutes
Happening now
Loading…
On the site right now
👆 Where visitors press
Views and interactions per day
Most pressed
Pages with the most interaction
Outbound links
How far people read

📰 Newspaper

Write stories, add photos and video, link articles together. Published pieces appear at /news and in Google News.

Select a story on the left, or start a new one.

🎬 Videos

One film on the homepage: the one you publish here. There is no built-in fallback, so an empty slot means no film.

Saved settings are live on the next page load of the homepage.

The full-screen film block at the top of the homepage. Off removes the whole block; the page opens on the windmill scene.

Off (default) shows the poster and a play button, so nothing downloads until a visitor taps. On starts the film as soon as the page loads.

The frame shown before play. Leave it empty and the first frame of the published film is used.

For the web, export the film as H.264 (not HEVC), landscape 1920×1080 at 25 or 30 fps, with the index at the front (faststart), under about 60 MB. A 6K HEVC master of more than a gigabyte will not play in most browsers and cannot autoplay anywhere.

✉️ Mail

Everything sent to info@gozaanstad.nl and instagram@gozaanstad.nl, and everything you send back. Incoming mail is still forwarded to your Gmail as well — this is a copy you can read and answer here, so a confirmation code never depends on finding the right inbox.

📣 Mailings

News to the people who asked for it. Everyone on this list confirmed by email, and every mailing carries a one-click way off it.

📨 Mailings
SubjectStatusSent
Loading…
New mailing
Plain text. The layout, the footer and each reader's own unsubscribe link are added on the way out.
👥 Subscribers
EmailLangStatusSince

📦 Storage

Where uploaded photos and videos are kept. Every upload goes to Cloudflare R2 first — places, events, routes, districts, the gallery, the newsroom and the homepage film. If R2 is ever full or unreachable, the upload goes to Bunny.net by itself so nothing is ever lost, and it is written down below. Files already online keep working whatever you change here.

Move files between them

Copies every file from one provider to the other and repoints the site at the new copy. The originals are left where they are, so you can always switch back.

🛡️ Moderation

Photo suggestions and problem reports from visitors. Nothing changes on the site until you act here.

📷 Photo suggestions

⚑ Reports

🏅 Community

The points board on the homepage, and what the day planner is being asked for

🏆 Top explorers on the homepage

Off removes the whole block — heading, text and list — from the page. It is not just hidden.

1 keeps brand-new accounts with no activity off the board. 0 shows everyone.

⚖️ Points integrity

Every balance is the sum of that person's point ledger. Awards are written in one transaction and the same action can never pay twice. This recomputes every total from the ledger and reports anything that had drifted.

🩺 Data health — what is thin or unverified
Loading…
🗺️ Day planner — what people actually ask for
Loading…

🏘 District photos

The full-screen photograph behind each district in the homepage scroll

These fill the whole screen as the visitor scrolls, so a wide, clean shot works best — a skyline, an aerial, a village street or the water. A close-up or a scanned photo with a border will read as half-empty at that size. Your own photos are ideal.

A green dot means you have replaced the default. Uploads go straight to the CDN and are live on the homepage immediately.

Loading…

🍪 Cookies

Control the consent banner and see what visitors choose

📊 Consent so far
Loading…
⚙️ Banner settings

Leave text empty to use the built-in default. Strictly necessary cookies are always required and can't be turned off (GDPR).

🎬 AI Studio

Generate media with PoYo.ai and publish it to your homepage

✨ Generate
🎯 Result
🎬 Your generation will appear here
🏠 Homepage Hero
The homepage hero is the animated windmill scene. A background laid over it hid the animation and needed a dark wash to keep the text readable, so it is no longer painted. Headline and subtitle below still publish. To change the film above the page, use “Upload intro video”.
🏘️ District / village photos

Change the photo for each city — used on the homepage city story and the village profile. JPG/PNG/WebP, max 10MB.

District photos have moved to their own screen — see District photos in the sidebar.
📚 Media Library

Every generation is saved here permanently. Nothing is deleted unless you remove it.

Loading your library…

🧾 Sales

Tickets and bookings paid through the site. Refunds go back through Stripe; the door checks codes here.

🎟 Door check-in
Type or scan the code from the buyer's mail. A code admits one person, once.
💳 Payments
fee % + € /order ·
Per event
EventSoldChecked inGross
Orders
WhenBuyerWhatQtyAmountStatus

🏷 Claims

Members who say a place is theirs. Approve and they can add offers and take bookings; reject with a reason. You can also add an owner yourself.

Add an owner directly
The member needs a GoZaanstad account. They are approved at once and mailed a link to their business page.
How it works
A visitor presses Claim this place on a place page and writes who they are. Only members with a verified e-mail can claim. Once approved they see Manage this place and reach /pages/business.html, where they add offers, a weekly rhythm and follow their bookings. Every booking's money lands in the platform Stripe account; the Payouts panel shows what each place is owed per month.
Claims
WhenPlaceMemberMessageStatus

📅 Bookings

Every booking at every place. A guest who cancels a paid booking leaves the refund to you: open the order (🧾) and refund there.

Bookings
WhenPlace · offerGuestPeopleAmountStatus

💰 Finance

Every euro through the platform, per month and per quarter: what visitors paid, the sellers' VAT passed through, your commission with its 21% VAT, what Stripe cost, your margin, payouts open and paid. The register lists every issued document; the exports feed the bookkeeping.

The year in months
MonthOrdersGrossSellers' VATCommissionVAT on itStripeMarginOwn salesRefundsPayout paidPayout open
VAT return (btw-aangifte) per quarter
Q1a base 21%1a VATof which commission1b base 9%1b VAT1e base 0%VAT due
Box 1a holds your commission (always 21%) plus your own 21% sales; 1b your own 9% sales (events without a seller place); 1e your own 0% sales. The sellers' VAT is theirs to declare, not yours. Input VAT (voorbelasting, box 5b) is not tracked here.
Pay the sellers: SEPA batch
One pain.001 file with a transfer for every open payout of a month to a verified seller with an IBAN. Upload it to your bank, then mark the months paid in Payouts (the export marks nothing by itself).
Register of issued documents
IssuedNumberKindRecipient · placeGrossVATCommissionPayout

🏪 Sellers

Who the platform sells for. Verify a place's legal identity and bank account before it publishes priced offers, set its commission, read what it earned from tickets and bookings, and issue its monthly statement.

Sellers
Place · legal nameStatusRegistersCommissionThis monthAll timePayout, all time
Platform details (printed on every statement)
Your own company's details, checked like a seller's. Nothing here is filled in for you.
Yearly tax report (DAC7)
One row per seller with money in the year: legal identity, KvK, VAT id, RSIN or BSN, birth date, address, IBAN, what they received per quarter, the fees withheld, the number of sales, and what is still missing. The platform reports to the Belastingdienst by 31 January and sends each seller their figures; this export is the accountant's input.

💶 Payouts

Per place per month: what visitors paid, the seller's VAT inside it, the commission with 21% VAT, and the payout you transfer. Marking a month paid issues the statement with the next invoice number and mails the owners; 📄 opens the statement, 🏪 the seller.

Net to pay out
Place · sellerOrdersGrossVAT in itCommission + VATPayoutStatus · invoice
⚠️
Confirm
Are you sure?
Add Place
Add Event
Linked to a place, its verified owners sell the tickets themselves and the money counts towards their payout. Leave empty for the platform's own event.
Tickets
What this event sells. Buyers pay on Stripe's page; free tickets are issued at once. Open the event page ↗ ·
Stripe is not configured on the server, so only free tickets can be bought right now.
Add a kind of ticket
Order
Add Route
Add History Entry
Edit User
Changes apply immediately.