Skip to content

Organization basics ​

The Settings β†’ Branding tab carries two cards. The first is Branding itself (covered in the next article); the second is Regional Settings, where you tell GCM where your organization is in the world. There's also an Organization Identity card under the same tab that captures the legal-entity details that appear on receipts and privacy disclosures.

This article walks through both β€” they're the foundation everything else builds on.

Organization identity ​

The Organization Identity card lives below Branding on the same tab. Fill it in once and the values flow into tax statements, the privacy policy, edge-function-generated emails, and the public-facing visitor form's footer.

Organization identity card

The fields are:

FieldWhat it's for
Legal nameThe full legal name of your church or non-profit. Appears on tax receipts.
Brand nameThe friendly name (e.g. "Grace Church" vs "Grace Church Inc."). Appears in the app header and outgoing emails.
App nameWhat the app calls itself in the sidebar. Usually the same as brand name.
NIT / tax IDRequired for Colombian and other jurisdictions that expect a registered tax ID on receipts. Optional elsewhere.
AddressStreet + suburb, one line.
CityThe city or municipality.
EmailYour church's public contact email. Used as the default Reply-To if you don't configure email separately.
PhoneA public phone number. Shown on receipts.

Click Save organization settings. The values land in app_settings with the org_* keys and are read by every receipt, statement, and outgoing transactional email.

TIP

If you operate multiple legal entities (e.g. parent church + separate non-profit arm), set the legal name to the entity that holds the tax ID, and use brand name for what people actually call you. They can differ.

Regional settings ​

The Regional Settings card controls three things that affect the whole platform: default language, default country, and timezone.

Regional settings card

Default language ​

English or Spanish. This is the language new users see before they pick their own, and the language outgoing system emails use when the recipient hasn't logged in yet. Visitors who hit your public site also get this language first.

Individual users override the org default in their profile. Changing the org default doesn't change anything for users who've already set their preference.

Default country ​

Pick from the dropdown. This sets:

  • The default country code for new member phone numbers.
  • The default country for new member addresses (so the country dropdown defaults to the right one).
  • The currency symbol on donations (indirectly β€” via the country's currency).
  • The map module's initial centring.

Timezone ​

The single most important setting in the whole app. Get this right before you do anything else. Cron schedules, recurring donation runs, attendance window calculations, event reminder dispatch β€” all of it reads the org timezone.

The dropdown groups timezones by region (Africa, America, Asia, Australia, Europe, Pacific). A live clock under the dropdown shows the current time in the selected zone so you can sanity-check before saving.

Two storage sites

The timezone is written to two places when you save:

  1. organizations.timezone β€” read by every edge function (cron, reminders, payment processor webhooks).
  2. app_settings.app_timezone β€” read by the frontend via BrandingContext.

The save button updates both atomically. Don't ever edit one directly in SQL without editing the other β€” you'll get the frontend and the cron jobs disagreeing about what "today" means, which produces extremely confusing reminder bugs.

Saving regional settings ​

Click Save regional settings. The button is disabled until you change something, so the form remembers what was already saved on the server. A toast confirms; if either the org update or the timezone setting fails, the toast tells you exactly which one β€” they're saved in parallel via Promise.allSettled so a partial failure doesn't roll the whole thing back.

What "organization" means under the hood ​

Every signed-in user belongs to exactly one organization (multi-org membership isn't a feature β€” users with access to multiple orgs sign in to each separately). The organization is the boundary for RLS, billing, branding, and everything else. The current_org_id() SQL function resolves the active org from the JWT for every query, which is why you can't accidentally see another church's data.

For platform admins impersonating a tenant, current_org_id() returns the impersonated org's ID β€” so editing settings while impersonating writes to the right place. Look for the impersonation banner at the top of the page to confirm which org you're editing.

Common pitfalls ​

"My timezone is wrong on event reminders." You probably changed the timezone in the frontend (app_settings) but not in organizations. Re-save the regional settings via the UI and both update.

"The currency symbol on donations changed when I changed country." Yes β€” currency is derived from the default country. If your church uses a different currency from its host country (rare), tell support and we'll set a per-org currency override.

"I changed legal name and old tax statements still say the old name." Statements render the current org_legal_name value at the time the PDF is generated. Re-issue the statement and the new name will appear. We don't store a snapshot per receipt.

Next steps ​