Zodiac Tech CRM Docs

Glossary

Every term used across this documentation, defined twice — first in plain language, then in its technical sense — with links to the guide that covers it.

everyone Easy ⏱ 10 min Updated 2026-10-05

Glossary

Every term you will meet in this documentation, defined first in plain words, then in the technical sense the system actually implements, and finally where it is used with a link to the full guide.

A

Ad Account

  • In plain words: The billing container inside Meta that pays for and runs your Facebook/Instagram ads.
  • Technical: act_<id> entity under a Meta Business; the CRM selects one per lead source connection and uses it for campaign reporting and management.
  • Where you'll see it: Campaigns

API key

  • In plain words: A long password that lets another system read or write your CRM data — with only the permissions you grant it.
  • Technical: Bearer credential created at Settings → Advanced → API Keys, with scopes (read:leads, write:leads, …), an hourly rate limit (default 1,000, max 100,000) and an optional expiry; stored hashed, shown once at creation.
  • Where you'll see it: Authentication

App Secret

  • In plain words: The private password of a Meta app; whoever has it can act as the app.
  • Technical: The Meta Developer App secret, stored encrypted (MetaSettings, #[ShouldBeEncrypted]) and used to verify webhook signatures (X-Hub-Signature-256) and OAuth exchanges.
  • Where you'll see it: Meta Developer settings

B

Business

  • In plain words: Your company's workspace in the CRM — your leads, users and settings, invisible to other companies.
  • Technical: A row in the tenants table; every tenant-owned record carries tenant_id enforced by the fail-closed BelongsToTenant global scope. "Business" is the UI word for "tenant".
  • Where you'll see it: Businesses (tenants)

C

Capability snapshot

  • In plain words: A report from a phone saying what it can actually do (record calls natively, import recordings, or only log call metadata).
  • Technical: Append-only rows in device_capability_snapshots describing the device's CallCapabilityEngine mode (NATIVE_RECORDING / IMPORTABLE_RECORDING / METADATA_ONLY / UNKNOWN), one of the latest 20 kept per device; posted via /api/v1/mobile/devices/capabilities.
  • Where you'll see it: Device health

Commercial Agreement

  • In plain words: The service contract behind a workspace — what is being paid, how often, and whether it is in good standing.
  • Technical: CommercialAgreement with a lifecycle: DRAFT → PENDING_CLIENT_APPROVAL → PENDING_PAYMENT_AUTHORIZATION → ACTIVE (then possibly PAYMENT_FAILED → GRACE_PERIOD → PAST_DUE → RESTRICTED → SUSPENDED) → CANCELLED/EXPIRED; versions are snapshotted so price and entitlements are separate concerns.
  • Where you'll see it: Commercial agreements

Cron

  • In plain words: The server's clockwork: a system that runs a command on a schedule.
  • Technical: There is exactly one cron entry required — schedule:run (or the shared-hosting cron.php runner) every minute; Laravel's scheduler then dispatches everything timed (sweeps, syncs, billing, backups).
  • Where you'll see it: Cron & queue workers

D

  • In plain words: A link that opens a specific record inside the app instead of just launching it.
  • Technical: crm:// URIs — crm://lead/{id}, crm://call/{id}, crm://followup/{id}, crm://appointment/{id}, crm://notification/{id} — attached to push payloads when an entity id is present.
  • Where you'll see it: Push notifications

Demo mode

  • In plain words: A safe sandbox state where the system refuses to do anything destructive or outbound.
  • Technical: Platform-wide lockdown via LEADHUB_DEMO_MODE (DemoMode::isOn/guard/abortIfOn) blocking destructive operations, credential saving and outbound communication. Distinct from the Android app's offline demo mode (bundled fixture data, no server).
  • Where you'll see it: Demo APK

Device token

  • In plain words: The mobile app's login badge — issued after you sign in, it proves your phone to the CRM.
  • Technical: Bearer credential for /api/v1/mobile/..., 90-day TTL, stored hashed (DeviceToken::hashToken), tied to a user + device.
  • Where you'll see it: Mobile API (device tokens)

E

Entitlement

  • In plain words: What a paying workspace is allowed to use.
  • Technical: Feature access derived from the billing state; RESTRICTED still allows crm, lead_management, followups and reports, while SUSPENDED denies everything. Entitlements are deliberately separate from price.
  • Where you'll see it: Billing overview

F

FCM

  • In plain words: Google's push-notification delivery service for Android.
  • Technical: Firebase Cloud Messaging, used via HTTP v1 with an OAuth2 token minted from a service-account JSON; device tokens register through the mobile API and UNREGISTERED responses clear them server-side.
  • Where you'll see it: Push notifications (FCM)

Firebase

  • In plain words: Google's developer platform; here it verifies phone numbers at login and can deliver push.
  • Technical: Firebase Authentication (Phone provider) verifies the handset; the Android app initializes Firebase at runtime from workspace options served by the CRM — no google-services.json is shipped.
  • Where you'll see it: Firebase phone OTP

G

Grace period

  • In plain words: The forgiving window after a failed payment before anything gets limited.
  • Technical: Billing state after PAYMENT_FAILED (default grace_period_days = 7); if payment still fails, the agreement moves to PAST_DUE / RESTRICTED.
  • Where you'll see it: Payment failures & restrictions

Guided onboarding

  • In plain words: The 12-step setup wizard that takes a new workspace from empty to live.
  • Technical: business_onboarding + _steps tables driving the /admin/guided-setup wizard (App\Support\OnboardingSteps), with signed 72-hour client links and a daily stuck-sweep at 08:15.
  • Where you'll see it: How guided onboarding works

L

Lead

  • In plain words: A person or company that showed interest — the record salespeople work.
  • Technical: The core CRM entity with source, stage, owner, score, tags, timeline and related records (messages, calls, follow-ups, appointments); multi-tenant by tenant_id.
  • Where you'll see it: Leads

M

Mandate

  • In plain words: The standing permission a customer gives to charge their UPI/card/bank for recurring payments.
  • Technical: PaymentMandate (UPI AutoPay / card token / eNACH) with provider_mandate_id, tied to a CommercialAgreement; providers Razorpay and Cashfree.
  • Where you'll see it: Payment providers (Razorpay / Cashfree)

Meta Business

  • In plain words: Your company's profile inside Meta that owns your Pages, ad accounts and WhatsApp assets.
  • Technical: The Facebook/Meta business entity whose Pages a user manages; the CRM talks to it through the platform Meta app via OAuth, scoped by the permissions the user grants.
  • Where you'll see it: Connect Meta (Facebook)

O

OAuth

  • In plain words: The "Continue with Facebook/Google/Microsoft" flow — you log in at the provider, not in the CRM.
  • Technical: Authorization-code flow with server-side callbacks (/oauth/meta/callback, /admin/calendar/oauth/callback), HMAC-protected state for calendar connections, and refresh-token upkeep.
  • Where you'll see it: OAuth & permissions

OTP

  • In plain words: A one-time code used to prove you own a phone number or email at login.
  • Technical: Firebase-verified phone OTP, or CRM-generated email/SMS codes: HMAC-SHA256 with a per-code salt, single-use, TTL from otp_ttl_minutes (default 10 min), max 5 wrong attempts, rate-limited at 3 per identifier / 10 per IP per 10 min.
  • Where you'll see it: Firebase phone OTP

P

Page

  • In plain words: Your Facebook Page — the public profile whose lead forms feed the CRM.
  • Technical: A Meta Page selected per lead source connection; only the selected Page's selected forms are ingested (MetaLeadFormService allowlist); Page access tokens can expire and need a reconnect.
  • Where you'll see it: Choose your Page & Ad Account

Q

Queue

  • In plain words: The waiting line where background work is parked until a worker processes it.
  • Technical: Laravel queues; local installs use QUEUE_CONNECTION=sync (run inline), production uses database with named queues — default, webhooks, automations, integrations, notifications, exports, ai-sdr, mail — that a worker must explicitly cover.
  • Where you'll see it: Queues, jobs & scheduler

R

RBAC

  • In plain words: Role-based access — who can see and do what.
  • Technical: Spatie permissions per tenant (e.g. leads.view, automations.create, whatsapp.templates.manage) surfaced through HasRolePermissions; roles: admin, manager, member (tenant) and super_admin (platform).
  • Where you'll see it: Roles & permissions (RBAC)

Restriction

  • In plain words: The limited mode a workspace falls into when payment is overdue for too long.
  • Technical: Billing state RESTRICTED — RESTRICTED_ALLOWED_FEATURES keeps crm, lead_management, followups and reports working while other features pause; the next step is SUSPENDED (all denied).
  • Where you'll see it: Payment failures & restrictions

S

Sales Process

  • In plain words: The set of stages a lead walks through from "new" to "won" (or "lost").
  • Technical: The pipelines builder, labelled Sales Process in the UI (PipelineResource); stages are custom per workspace and drive board columns, reports and stage-change automations.
  • Where you'll see it: Sales process & stages

SMTP

  • In plain words: The mail server the CRM sends your invites, resets and notifications through.
  • Technical: Per-tenant mailer built by TenantSmtpManager (tenant_smtp), overriding mail.default for the workspace; platform fallback comes from .env / Script Settings.
  • Where you'll see it: Email & SMTP

Stage

  • In plain words: One step in the sales process, e.g. "New", "Contacted", "Visit booked".
  • Technical: A pipeline_stages row within a workspace pipeline; stage changes fire lead_stage_changed automations and feed funnel and bottleneck reports.
  • Where you'll see it: Sales process & stages

T

Tenant

  • In plain words: The technical word for one isolated business (workspace) on the platform.
  • Technical: The tenants table; isolation via the BelongsToTenant fail-closed global scope on tenant_id; the Super Admin panel binds the internal "LeadHub HQ" tenant to operate safely.
  • Where you'll see it: Multi-tenancy & isolation

Test lead

  • In plain words: A fake lead created to prove your setup works end to end before real customers arrive.
  • Technical: TestLeadService creates a real lead through the full observer chain, tagged Test Lead with phone +91 90000 00000 and raw_data.is_test = true; it verifies lead creation, field mapping, assignment and follow-up creation.
  • Where you'll see it: Test your setup

W

WABA

  • In plain words: Your business's WhatsApp account at Meta — it owns your phone number and message templates.
  • Technical: WhatsApp Business Account (waba_id on whatsapp_connections); the CRM syncs its templates and sends through its phone number via the Cloud API.
  • Where you'll see it: WhatsApp Business API

Webhook

  • In plain words: An automatic "calling back" between systems: when something happens here, a message is sent there.
  • Technical: Two directions — inbound: Meta/WhatsApp/payment providers POST signed events to the CRM (X-Hub-Signature-256, provider signatures, idempotency); outbound: the CRM POSTs {event, tenant_id, timestamp, data} to your URL with an HMAC signature header, 5 retries on the webhooks queue.
  • Where you'll see it: Outbound webhooks & API keys

Worker

  • In plain words: The background process that actually does queued work (sending messages, webhooks, reports).
  • Technical: php artisan queue:work --queue=... covering all named queues, running beside the every-minute scheduler; on shared hosting the cron.php runner performs bounded queue work per minute instead.
  • Where you'll see it: Cron & queue workers

Was this page helpful?