GGoApps GuidesAdministration handbook
Back to workspace
Tenant administration

Operate your customer app with confidence.

A complete guide to content, broadcasts, users, branding, permissions, and safe day-to-day operation.

Task-based walkthroughsPermission referenceTroubleshootingOperational checklists

For tenant owners, managers, and staff

The workspace automatically shows only the tools enabled for the tenant and permitted for the signed-in team member.

Tenant workspace

For GoApps platform operators

The platform console controls tenant records and provisioning manifests. It does not replace the tenant’s content-management workspace.

Platform operations
Chapter 1

Access and orientation

Understand how sign-in, sessions, navigation, vertical adaptation, and permissions work before making changes.

Sign in to the tenant workspace

Open the tenant’s administration hostname and sign in with the email address and password assigned by the tenant owner or GoApps during handoff. Customer mobile accounts use phone verification; those credentials do not grant administrative access.

Open the admin addressUse the dedicated hostname supplied for your company.
Enter your admin emailEmail matching is case-insensitive.
Enter your passwordUse Show only when the screen cannot be observed by someone else.
Select Sign in to workspaceThe permitted navigation appears after the account is verified.
Do not share accounts. Each teammate should have a separate login so access can be limited and activity can be attributed correctly.

How the workspace adapts to the tenant

The app type set during provisioning changes both the language and the management permission used for content.

App typeWorkspace sectionContent managedRequired permission
RestaurantMenuDishes, categories, prices, availabilitymanage_menu
BoutiqueCatalogueProducts, categories, prices, availabilitymanage_catalog
SalonServicesServices, categories, prices, availabilitymanage_services
InsuranceProductsInsurance products and customer-facing summariesmanage_insurance_products
GenericContentGeneral catalogue or informational itemsmanage_catalog

A missing navigation item normally means either the feature is not enabled for the tenant or the current member lacks the relevant permission.

Two-layer permission model

Access requires both layers to allow an action:

  1. Tenant entitlement: GoApps enables the capability for the tenant during provisioning.
  2. Member permission: An owner grants the capability to a manager or staff account.

Owners receive all member permissions, but a capability can still be unavailable when it is not part of the tenant’s entitlements. This prevents a local account from turning on a product feature that has not been provisioned.

Chapter 2

Dashboard and refresh

Use the overview to check workspace health and reach common actions quickly.

Read dashboard metrics

MetricMeaningRequired access
App usersTotal mobile accounts currently returned to the workspace.Manage app users
Published contentEnabled content currently eligible to appear in the mobile app.Vertical content permission
BroadcastsTotal notification campaigns recorded in the workspace.Send broadcasts
Hidden itemsSaved content excluded from the public mobile feed.Vertical content permission

A dash means the signed-in member cannot load that metric. It is not the same as zero.

Refresh and recent activity

Select Refresh in the top bar after another teammate makes a change. The workspace reloads only the datasets the current account can access. Recent activity combines the latest content updates and broadcasts; it is an operational summary rather than a complete audit log.

Quick actions respect permissions. A disabled action means the current account cannot perform it.
Chapter 3

Content management

Create, publish, update, hide, organise, and remove the items customers see inside the mobile app.

Create and publish an item

Open Menu, Catalogue, Services, Products, or ContentThe name is selected from the tenant app type.
Select AddThe editor opens with visibility enabled by default.
Enter a clear nameUse the wording customers will recognise inside the mobile app.
Add category, price, and descriptionChoose the correct currency and avoid internal terminology.
Choose an image from the deviceA local preview appears before upload.
Confirm visibility and publishVisible items enter the public mobile-content feed immediately after saving.

Field reference

FieldRequiredGuidance
NameYesAt least two meaningful characters; keep it concise.
CategoryNoUse consistent spelling so filtering and grouping remain useful.
Currency and priceNoPrice cannot be negative. Select GHS, USD, EUR, or GBP.
DescriptionNoMaximum 600 characters. Describe the customer benefit and essential conditions.
ImageNoJPG, PNG, WebP, or GIF; maximum 8 MB.
VisibleYesEnabled means customers can receive the item through the mobile API.

Prepare effective content images

  • Use a clear subject with breathing room around the edges.
  • Prefer a landscape or square composition that survives card cropping.
  • Avoid putting critical prices or terms inside the image; keep them in editable fields.
  • Upload directly from the device. The workspace stores the file and records the resulting asset URL automatically.
  • Remove the selected image before saving if the item should have no image.
The mobile app provides a vertical-specific placeholder when an item has no image or an image cannot load.

Edit, hide, republish, and delete

  • Edit: update any customer-facing fields and save. The Updated timestamp changes.
  • Hide: use the eye action to remove an item from the mobile feed without deleting its record.
  • Republish: use the eye action again. Verify time-sensitive details before making an old item visible.
  • Delete: permanently removes the item after confirmation. Prefer hiding when the item may return.
Deletion is destructive. The current workspace does not provide an undo or recycle bin.

Search and organise content

Search matches item names and descriptions. Category options are built from existing items. Establish a small approved category vocabulary before adding many records—for example, Mains, Sides, Drinks, and Desserts rather than several variations of the same label.

Chapter 4

Broadcasts

Compose push notifications, preview the message, attach optional media, and review campaign history.

Send a broadcast

Write a titleMaximum 90 characters. Put the most important information first.
Write the messageMaximum 240 characters. Explain the action or value clearly.
Choose the audienceAll app users or recently active users.
Add an optional destinationUse an app deep link only when the mobile app supports that destination.
Add an optional imageChoose a JPG, PNG, WebP, or GIF up to 8 MB.
Review the phone previewCheck truncation, tone, and image clarity.
Select Send broadcastThe campaign is created and queued for delivery.
Sending is an external customer communication. Confirm facts, dates, prices, destination links, and audience before submitting.

Understand campaign history and status

Broadcast history records the title, message, status, creation time, and creator. A queued result confirms that GoApps accepted the campaign for background delivery; it does not guarantee that every device displayed the notification. Delivery also depends on registered device tokens, notification permission, provider availability, and device connectivity.

Recommended message pattern

Title: specific event or benefit. Body: essential detail plus one action. Destination: the exact in-app screen that completes that action.

Chapter 5

App users

Find mobile customers, review account activity, and control access to the customer app.

Search, filter, disable, and enable users

Search uses the customer’s phone number. Filter by Active or Disabled to narrow the table.

  • Disable when access should be stopped. The account remains recorded but cannot be treated as an active account.
  • Enable when the reason for restriction has been resolved.
  • Joined shows account creation time; Last active reflects the latest recorded login.
Confirm the phone number and follow the organisation’s identity-verification process before changing access. The current screen does not include free-form suspension notes.
Chapter 6

Branding

Control the app name, tagline, logo, and splash-screen colours without shipping a new mobile release.

Update the splash screen

Enter the customer-facing app nameUse the approved brand name.
Add a concise taglineMaximum 90 characters.
Choose a logoA square transparent PNG or WebP usually works best; maximum 8 MB.
Choose background and text coloursUse the colour picker or a six-digit hexadecimal value.
Review the live phone previewCheck contrast, legibility, and logo scale.
Save brandingThe mobile app reads the updated remote splash configuration at startup.
Use a text colour with strong contrast against the background. Test both bright and dim screens before approving a combination.

Know what branding changes do not replace

The branding page updates the remotely configured splash experience. Store listing artwork, installed app icons, native launch screens, bundle identifiers, and store names belong to the signed mobile release and require a separate build-and-publish cycle.

Chapter 7

Team access and permissions

Create named administrative accounts and give each person only the access required for their role.

Add a teammate

Select Add teammateOnly members with Manage team access can do this.
Enter name and emailThe email becomes the sign-in identifier.
Select a roleOwner, Manager, or Staff.
Add an optional phone numberThis is contact information, not the admin sign-in method.
Create a temporary passwordAt least 10 characters; send it through a secure channel.
Select permissions and create the accountChoose the smallest useful set.

Permission reference

PermissionAllows
Send broadcastsCreate, queue, and review notification campaigns.
Manage app usersView customers and enable or disable access.
Manage teamList and create tenant administrator accounts.
Manage menu/catalogue/services/productsManage the content type associated with the tenant vertical.
View usageReserved for usage and activity reporting capabilities.
Edit brandingUpdate splash branding and upload a logo.

Owners have all member permissions. Manager and Staff permissions come from the selected checkboxes and remain bounded by tenant entitlements.

Chapter 8

Security and operating routines

Use repeatable checks to reduce accidental publication, over-broad access, and customer communication mistakes.

Recommended operating checklist

Before opening

  • Confirm prices, availability, service details, and active promotions.
  • Hide items that should not be visible today.
  • Review scheduled customer communications outside the platform, if used.

Before a broadcast

  • Have a second person verify the title, dates, price, audience, and link.
  • Confirm the destination works in the current production app.
  • Verify the image contains no outdated information.

Monthly

  • Review team membership and remove unnecessary privileges through the responsible owner or GoApps support.
  • Review disabled users and confirm restrictions remain justified.
  • Check branding and key content on a physical customer device.

Session and device safety

  • Sign out when using a shared or borrowed device.
  • Do not save administrator passwords in shared browser profiles.
  • Use separate accounts rather than sharing an owner login.
  • Treat downloaded or copied customer data according to the organisation’s privacy rules.
  • If an account may be compromised, stop using it and contact the tenant owner or GoApps administrator.
Chapter 9

Troubleshooting and FAQ

Resolve common workspace issues without guessing or repeating destructive actions.

A navigation item is missing. What should I do?

Ask the tenant owner to confirm your member permissions. If the owner also cannot see it, the capability may not be enabled in the tenant’s provisioning entitlements.

I saved an item but it is not in the mobile app.

Confirm Visible in the mobile app is enabled, refresh the workspace, then reopen the customer app. If the item is visible in the admin table but absent from the app, confirm the app points to the correct tenant API.

An image will not upload.

Use JPG, PNG, WebP, or GIF and keep the file below 8 MB. Re-export unusual camera formats before retrying. Do not paste a filesystem path into the form.

A broadcast is queued but a customer did not receive it.

Queued means the campaign entered delivery processing. Check that the user has a registered device, allowed notifications, network connectivity, and a valid provider token.

Can I undo deletion?

No. Hide content when there is a reasonable chance it will return. Recreate a deleted item manually if necessary.

Why is a dashboard value shown as a dash?

The account lacks access to the underlying dataset. A dash is a permission state, not a count of zero.

Does changing the splash logo change the installed app icon?

No. Installed icons and store assets require a new signed mobile build. The Branding page controls the remote splash experience.

Chapter 1

Access and responsibilities

Understand the boundary between platform provisioning and tenant application management.

Sign in to platform operations

The Super Admin console uses the configured platform administrator password. A successful sign-in creates a signed session token valid for approximately eight hours and stores it in the current browser profile.

Open the platform consoleUse the restricted internal operations address.
Enter the administrator passwordNever reuse a tenant owner password.
Select Enter platformThe overview loads tenant records from the control database.
The current console has one platform credential rather than individual operator accounts. Restrict distribution, rotate it deliberately, and sign out on shared devices.

Platform versus tenant responsibilities

Super Admin consoleTenant workspace
Create tenant records and identifiersManage customer-facing content
Select app type and entitlementsSend broadcasts
Capture the owner and handoff manifestManage mobile users and team members
Define infrastructure names and production variablesUpdate remote splash branding
Coordinate build and deployment lifecycleOperate the app after handoff
Chapter 2

Portfolio overview

Monitor the tenant inventory and enter provisioning from the platform control centre.

Read overview metrics

  • Total tenants: every tenant record returned by the control database.
  • Draft: manifests created but not marked active by the broader deployment lifecycle.
  • Active: records whose stored status is active.
  • App types: number of distinct vertical types represented.

Recent tenants shows the five newest records. Portfolio by type compares restaurant, boutique, salon, insurance, and generic records.

The current provisioning form creates records in draft status. The current UI does not provide an activation action; deployment and status promotion require the operational workflow around the generated manifest.
Chapter 3

Tenant inventory

Find tenant records, inspect their identity, and retrieve the provisioning manifest.

Search and filter tenants

Search matches company name, tenant ID, and admin hostname. The type filter limits results to one app vertical. The table shows the tenant, app type, hostname, feature count, status, and manifest action.

Search operates on the records already loaded into the browser. The API currently returns up to 200 tenants ordered by latest update.

Review an existing manifest

Select View manifest to inspect the stored JSON. Use Copy JSON for a controlled handoff into another tool, or Download manifest to save a file named with the tenant ID. Treat manifests as operational configuration: verify the tenant identity before using one for deployment.

Chapter 4

Provisioning preflight

Collect decisions and approvals before creating an identity that must remain stable across infrastructure and app stores.

Information to confirm with the tenant

  • Legal or trading company name and approved customer-facing app name.
  • Best-fit app type: restaurant, boutique, salon, insurance, or generic.
  • Approved company logo in JPG, PNG, WebP, or GIF under 8 MB.
  • Unique tenant slug, admin subdomain, Android application ID, and iOS bundle ID strategy.
  • Owner name, email, and optional phone number.
  • Contracted feature entitlements and any features intentionally excluded.
  • Production domain ownership, mobile signing ownership, and store-account ownership.
  • SMS, push, and other provider requirements for the tenant’s launch market.
Tenant ID, application ID, bundle ID, and production resource names are costly to change after launch. Resolve naming disputes before creating the manifest.
Chapter 5

Provision a tenant

Complete the guided form, validate derived identifiers, select rights, and create the tenant record.

End-to-end provisioning walkthrough

Open Provision tenantUse the sidebar or New tenant action.
Enter company name and app typeThe selected type automatically recommends a rights bundle.
Upload the optional logoPreview it in the sticky summary before continuing.
Review generated identifiersThe form derives them until an identifier is edited manually.
Enter owner detailsThe owner email seeds the initial tenant administrator identity.
Review feature entitlementsRemove capabilities that are not contracted; add only approved optional capabilities.
Check the summaryConfirm hostname, app ID, owner, app type, and feature count.
Create tenant manifestThe tenant record is stored as draft and the output modal opens.
Copy or download the JSONMove it into the controlled deployment workflow.

Provisioning field reference

FieldRulesDownstream effect
Company nameRequired; customer and operator-readable.Seeds tenant slug, subdomain, app ID, summary, and manifest name.
Application typeOne supported vertical.Selects content model and recommended entitlements.
Company logoOptional supported image, maximum 8 MB.Stored as a platform asset and included in the tenant record.
Tenant IDLowercase letters, numbers, hyphens; valid slug length.Primary stable identifier and basis for resource names.
Admin subdomainLowercase letters, numbers, hyphens; unique.Builds the admin hostname under the configured base domain.
Mobile app IDReverse-domain syntax such as com.goapps.company.Feeds the mobile identity manifest. Coordinate with native IDs.
Owner emailValid email; normalised to lowercase.Seeds the owner administrator account.
RightsSupported values only; duplicates removed.Gates tenant navigation and APIs.

Tenant ID or subdomain conflicts return an error and do not create a duplicate record.

Recommended naming convention

Use one canonical tenant slug everywhere. For example, acme-kitchen can produce:

  • Tenant ID: acme-kitchen
  • Admin hostname: acme-kitchen.goapps.com.gh
  • Mobile ID: com.goapps.acmekitchen
  • Worker: goapps-acme-kitchen-prod
  • D1 database: goapps_acme_kitchen_prod
  • R2 bucket: goapps-acme-kitchen-assets-prod
Chapter 6

App types and entitlements

Use the closest vertical model, then adjust optional rights to the signed agreement.

Recommended rights matrix

TypeVertical rightRecommended supporting rights
RestaurantMenuBroadcasts, users, team, bookings, branches, loyalty, usage, branding
BoutiqueCatalogueBroadcasts, users, team, branches, loyalty, usage, branding
SalonServicesBroadcasts, users, team, bookings, branches, loyalty, usage, branding
InsuranceInsurance productsBroadcasts, users, team, branches, usage, branding
GenericCatalogueBroadcasts, users, team, usage, branding
Some provisionable rights—such as bookings, branches, and loyalty—may be present in the manifest before their tenant-facing screens are implemented. Treat entitlements as product authorization, not proof that every UI module is already available.

What each right authorizes

RightPurpose
send_notificationsBroadcast composition, queueing, and history.
manage_usersMobile account visibility and status management.
manage_authTenant administrative membership.
manage_menuRestaurant content.
manage_catalogBoutique and generic content.
manage_servicesSalon services.
manage_insurance_productsInsurance products.
manage_bookingsAppointments and reservations entitlement.
manage_branchesBusiness locations entitlement.
manage_loyaltyRewards and retention entitlement.
view_usageUsage reporting entitlement.
manage_brandingRemote splash configuration and assets.
Chapter 7

Manifest and handoff

Understand exactly what the generated document contains—and what it does not do automatically.

Manifest contents

  • Tenant identity: tenant ID, company name, app type, app ID, logo, hostname, and rights.
  • Owner seed: name, email, and optional phone number.
  • Cloudflare names: Worker, D1, R2, SMS queue, notification queue, and custom domain.
  • Runtime variables: tenant, app, environment, public URL, splash defaults, and SMS sender.
  • Database seed intent: tenant rights and owner admin email.
Creating a manifest does not create Cloudflare resources, mobile signing identities, app-store listings, or a production deployment by itself. It is the deterministic input to those steps.

Handoff checklist

  • Re-open the saved tenant and compare the manifest to the approved intake.
  • Store the manifest in the approved configuration repository or deployment system.
  • Transfer owner setup instructions through a secure channel.
  • Record who owns Android, iOS, domain, and provider credentials.
  • Confirm production secrets are created outside the manifest.
  • Do not send platform credentials to the tenant.
Chapter 8

Deployment lifecycle

Turn a draft manifest into isolated backend infrastructure and separately signed tenant mobile applications.

Recommended deployment sequence

Validate the manifestCheck names, rights, owner, hostname, and app identifiers.
Create isolated backend resourcesWorker, D1, R2, queues, secrets, and custom domain.
Apply schema and seed dataRun migrations, store rights, and create the tenant owner safely.
Deploy and smoke-test the tenant APIHealth, admin login, asset upload, content, splash, and mobile feed.
Generate the tenant mobile buildSelect the vertical base app and inject tenant ID, API URL, branding, and native identifiers.
Sign Android and iOS separatelyUse tenant-specific application/bundle IDs and controlled signing credentials.
Complete acceptance testingVerify content, login, images, notifications, links, and branding on physical devices.
Publish and hand offSubmit to store listings and deliver tenant workspace instructions.
Promote operational statusMark active only after production verification through the status-management workflow.

Tenant isolation model

Each white-label tenant receives a unique mobile identity and an isolated backend resource set. Source code remains shared through the vertical apps and common packages. Avoid copying shared code into tenant forks; drive differences through tenant manifests, branding assets, native identifiers, and deployment configuration.

Chapter 9

Security and governance

Protect the control plane, secrets, manifests, and tenant boundaries.

Required operating controls

  • Keep the platform password and session secret in managed secrets, never source code or manifests.
  • Rotate shared platform credentials when operator access changes.
  • Use distinct tenant secrets for OTP/session hashing, admin bootstrap, SMS, push, and other providers.
  • Never reuse a D1 database, R2 bucket, or queue binding across tenants unless the architecture explicitly changes.
  • Review app IDs and custom domains for ownership conflicts before deployment.
  • Store mobile signing credentials in the approved CI secret store.
  • Record provisioning and deployment approvals outside the current console until full audit workflows are implemented.

Current console boundaries

The current implementation creates and lists tenant records, uploads a provisioning logo, and produces manifests. It does not yet edit or delete tenants, create infrastructure automatically, rotate credentials, manage individual Super Admin accounts, activate records, or publish mobile builds. Those actions must remain in controlled operational procedures until corresponding product workflows are implemented.

Chapter 10

Troubleshooting and FAQ

Diagnose common provisioning errors while preserving stable tenant identity.

The tenant ID or subdomain is already in use.

Search the tenant inventory for the conflicting identity. Do not add a suffix until you confirm whether the existing record is the same customer, a previous attempt, or a reserved production identity.

The application ID is rejected.

Use reverse-domain format with alphabetic segment starts, such as com.goapps.acmekitchen. Avoid hyphens in the mobile application ID.

The logo will not upload.

Use JPG, PNG, WebP, or GIF under 8 MB. The logo is optional, so provisioning can continue without it and branding can be completed later.

Why is every newly created tenant a draft?

The create operation intentionally stores draft status. The current UI has no activation endpoint; production deployment verification and status promotion are separate operational steps.

Does Create tenant manifest deploy anything?

No. It creates the control-plane record and deterministic deployment input. Infrastructure, secrets, mobile builds, and store publication are separate.

A recommended right has no tenant screen.

Some entitlements describe roadmap or backend capabilities. Verify implemented product coverage before promising the module to a tenant.

How should two apps for the same company be handled?

Use separate tenant/app identities when they require separate mobile listings, isolated data, or distinct operations. Reuse a tenant only when the product and data-isolation design explicitly supports multiple apps.