Companies Overview

Understand company-level configuration, settings, and how the top-level tenant works in OnSched.

Environment tip: All examples use v3.onsched.com for production. Replace the host with api-stage.onsched.com when calling the staging environment.

What Is a Company?

In OnSched, a Company represents your organization—the top-level tenant that owns all other entities. It's your account's root, encompassing:

  • All locations
  • All services (company-scoped and location-scoped)
  • All resources
  • All appointments and customers
  • API credentials and authentication
  • Default settings inherited by child entities

Think of the company as your business entity in the OnSched platform.

Core Properties

Basic Information

  • name (required) – Your company name (unique across OnSched)
  • registrationEmail (required) – Primary contact email
  • email (optional) – General company email for notifications
  • phone (optional) – Company phone number
  • website (optional) – Company website URL

These details appear in:

  • Dashboard branding
  • Customer notifications (if not overridden at location level)
  • API metadata

Settings

  • timezone (string) – IANA timezone (e.g., America/New_York, default: America/New_York)
  • notificationType (enum) – Default notification method (EMAIL, SMS, ALL, NONE)

These settings cascade to locations and resources unless overridden.

Status

  • suspended (boolean) – Whether the company account is active (default: false)

Suspended companies:

  • Cannot create new appointments
  • Existing appointments remain accessible
  • Dashboard access is restricted
  • API authentication fails

Branding

  • urlName (string) – Unique URL slug for public booking pages (if applicable)
  • imageUrl (string) – Company logo URL

Used for white-label booking interfaces and branding.

Retrieving Company Information

Get Your Company

curl https://v3.onsched.com/v3/company \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response:

{
  "id": "company-uuid",
  "name": "Acme Scheduling",
  "registrationEmail": "[email protected]",
  "email": "[email protected]",
  "phone": "+1-555-0100",
  "website": "https://acme.com",
  "timezone": "America/New_York",
  "notificationType": "EMAIL",
  "suspended": false,
  "imageUrl": "https://cdn.acme.com/logo.png",
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2025-11-20T14:30:00Z"
}

This endpoint returns the company associated with your authenticated credentials.

Updating Company Information

Use PUT /v3/company to modify company settings:

curl -X PUT https://v3.onsched.com/v3/company \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+1-555-0200",
    "timezone": "America/Los_Angeles",
    "notificationType": "ALL"
  }'

Changes apply immediately and cascade to child entities using company defaults.

Company Hierarchy

Company
  ├── Locations (1 or more)
  │     ├── Services (location-scoped)
  │     ├── Resources (linked at location)
  │     ├── Appointments
  │     └── Customers (optionally location-scoped)
  └── Services (company-scoped)

See Architecture Guide for detailed hierarchy explanation.

Settings Inheritance

How Inheritance Works

Company settings provide defaults for child entities:

SettingCompany DefaultLocation OverrideResource Override
Timezone✅ Sets default✅ Can override✅ Can override
Notification Type✅ Sets default✅ Can override✅ Can override

Example:

  • Company timezone: America/New_York
  • Location A: Uses company default (America/New_York)
  • Location B: Overrides to America/Chicago
  • Resource at Location A: Uses America/New_York (inherited from location)
  • Resource at Location B with timezone set: Uses America/Denver (resource-specific)

Cascade order: Resource → Location → Company

When to Use Company Settings

Set at company level when:

  • All locations operate the same way
  • You want centralized control
  • Consistency across locations is important

Override at location or resource level when:

  • Locations have different requirements
  • Multi-timezone operations
  • Per-location branding

Timezone Configuration

Importance of Timezone

Timezone affects:

  • Availability slot calculations (operating hours)
  • Notification timing
  • Appointment display times
  • Date-only input interpretation

Example:

Company timezone is America/New_York. Customer requests availability for 2025-12-01:

  • System interprets as 2025-12-01 00:00:00 America/New_York
  • Converts to UTC for calculations
  • Returns results in requested timezone (or UTC if not specified)

Always set accurate timezones to avoid scheduling errors.

Changing Timezone

When updating company timezone:

curl -X PUT https://v3.onsched.com/v3/company \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "timezone": "America/Chicago"
  }'

Impact:

  • Future availability calculations use new timezone
  • Existing appointments retain original times (stored in UTC)
  • Locations without explicit timezone inherit the new default

Best practice: Set timezone correctly during initial setup. Changing mid-operation can cause confusion.

Notification Preferences

Company-Level Notifications

  • EMAIL – Send notifications via email
  • SMS – Send notifications via SMS (requires phone numbers and SMS gateway)
  • ALL – Send both email and SMS
  • NONE – Suppress automated notifications

Company default applies to:

  • Locations without specific setting
  • Resources without specific setting
  • Customers without preference specified

Cascading Notifications

Example:

  • Company: notificationType: EMAIL
  • Location A: No override → uses EMAIL
  • Location B: Override to ALL → uses ALL (email + SMS)
  • Resource at Location A: No override → uses EMAIL
  • Resource at Location B: No override → uses ALL (inherits from location)

See Notifications Guide for detailed configuration.

Authentication and API Credentials

Company-Scoped Authentication

All API authentication is company-scoped:

  • OAuth2 tokens embed company ID
  • API keys belong to specific companies
  • Users are associated with companies

You cannot access another company's data, even with valid credentials.

Managing Credentials

API credentials are managed via:

  • Dashboard → API Settings
  • POST /v3/clientId (create OAuth client)
  • DELETE /v3/clientId/:id (revoke client)

See Authentication Guide for details.

Multi-Company Scenarios

When to Use Multiple Companies

Create separate companies for:

  • Distinct brands – Different brands with separate identities
  • Franchise/partner isolation – Complete data separation
  • Reseller/white-label – Each client gets their own company
  • Testing/staging – Separate company for development

When to Use One Company

Use one company with multiple locations for:

  • Multi-location single business
  • Franchises with shared branding and customers
  • Centralized reporting needs
  • Staff working across locations

See Architecture Guide for decision framework.

Use Cases

Single-Location Business

Example: Solo consultant

  • Company: "Jane Doe Consulting"
  • Locations: 1 ("Virtual Office")
  • Services: Company-scoped (available everywhere, but only 1 location)
  • Resources: Just Jane

Even single-person businesses benefit from company structure for future growth.

Multi-Location Chain

Example: Fitness studio chain

  • Company: "FitLife Studios"
  • Locations: 10 (different cities)
  • Services: Company-scoped (same classes everywhere)
  • Resources: Location-specific (instructors assigned to locations)

Centralized service definitions, distributed operations.

Franchise Model

Example: Salon franchise

Option 1: One Company

  • Company: "Style Salons"
  • Locations: 50 (each franchise location)
  • Services: Company-scoped (standardized menu)
  • Resources: Location-specific (franchise-employed staff)
  • Customers: Shared (customers can book at any location)

Option 2: Multiple Companies

  • Company: One per franchise ("Style Salon - Downtown", "Style Salon - Midtown")
  • Isolation: Complete separation of data, branding, billing

Choose based on franchisee autonomy needs.

Best Practices

Set Timezone Accurately

  • Match your primary business location
  • Don't change frequently
  • Document timezone for team awareness

Use Descriptive Names

  • Company name should match business name
  • Keep urlName slug professional and memorable
  • Update branding URLs (imageUrl) to reflect current logo

Configure Notifications Thoughtfully

  • Start with EMAIL (most universal)
  • Add SMS only when you have phone numbers and SMS gateway configured
  • Override at location/resource level as needed

Protect Registration Email

  • Use a monitored email address
  • Don't use personal emails
  • Consider team@ or admin@ addresses

Review Settings Periodically

Quarterly:

  • Verify timezone is correct
  • Update contact information
  • Check notification preferences
  • Audit child entities for overrides

Troubleshooting

Can't authenticate

Check:

  1. Company is not suspended
  2. OAuth credentials are valid and belong to this company
  3. API key (if using dashboard auth) matches company

Locations showing wrong timezone

Check:

  1. Company timezone is set correctly
  2. Location isn't overriding with incorrect timezone
  3. Resources aren't overriding timezone

Cascade order matters: Resource > Location > Company.

Notifications not sending

Check:

  1. Company notificationType isn't NONE
  2. Email/SMS gateways are configured (contact support if unsure)
  3. Locations/resources aren't overriding to NONE
  4. Appointment creation included customer contact info

Can't see other company's data

Expected behavior: Companies are isolated. You cannot access another company's data via API.

Solution: Use correct credentials for the target company.

Common Questions

Can I rename my company?

Yes, update via PUT /v3/company. The internal ID remains the same, only the display name changes.

Can I transfer locations between companies?

Not directly. Contact support for complex migrations.

Can I have multiple companies with the same name?

No, company names are unique across OnSched.

What happens if my company is suspended?

  • Existing appointments remain visible
  • New bookings are blocked
  • API authentication fails
  • Dashboard access restricted

Contact support to resolve suspension.

Can I delete my company?

Contact support for account deletion. This is permanent and cannot be undone.

How do I add users to my company?

User management is handled via dashboard or user management endpoints. See User Management (if available).

Related Documentation

The company is your OnSched foundation. Configure it correctly, and all child entities inherit sensible defaults automatically.