Documentation

Operational guide for OKR and KPI goal governance, differentiating KRs from KPIs, staff quota planning, 2-way Kanban linkage, zero-API inbound email forwarding, custom domain DNS, and counter dispatch.

Goal governance

In daily hospitality, retail, studio, and tour operations, goal systems fail when teams confuse directional Objectives (O), breakthrough Key Results (KR), ongoing operational metrics (KPI), and daily tasks. DING OS separates all four layers and wires them directly to live revenue, bookings, staff attribution, and Kanban boards.

Open Goals

1. Goal hierarchy matrix

Enterprise standard
LayerRecommended limitCore questionMeasurementVenue example
OKR · Objective
Strategic Objective
3 - 5 per quarter
Per venue or department
Where do we want to break through this quarter?Qualitative directional goal for a quarter or year. Progress (0-100%) rolls up automatically from its child Key Results.Become the premier corporate banquet and wellness destination in Q4.
KR · Key Result
Key Result
3 - 5 KRs per Objective
Never exceed 5 KRs
How do we measure that we achieved the Objective?Quantitative milestone (from baseline X to target Y) nested under an Objective. Measures net-new change or transformation.Grow B2B banquet revenue from $15,000 to $40,000; increase repeat member rate from 18% to 35%.
KPI · Metric
Operational KPI
3 - 5 KPIs per month
Per team or staff member
Are daily and monthly operations running at standard?Standalone quantitative metric tracked month after month to maintain revenue quotas, occupancy, and service standards.Monthly revenue quota of $50,000; room occupancy above 75%; order void rate under 2%.
Task · Kanban
Execution Task
Unlimited
Linked to 3 - 5 goals
What concrete action must we execute today to move the numbers?Actionable card on the Kanban board with an assignee, due date, and workflow state (To Do ➔ In Progress ➔ Review ➔ Done).Send year-end banquet packages to 30 corporate partners; call 50 VIP members with birthday vouchers.
Rule 1

Why teams confuse KRs with KPIs

Both KRs and KPIs are written as numbers ($40,000, 300 bookings, 85%). To tell them apart in 3 seconds, picture driving a car: a KPI is the dashboard gauge (engine temperature, fuel level, steady cruising speed) that must stay healthy every single month. An OKR is the GPS route to a new destination, and its KRs are the mile markers proving you are getting closer.

Rule 2

When an operational KPI becomes a KR

If a metric is stable and you simply assign monthly targets to maintain rhythm (for example, $20,000 monthly bar revenue), create it as a standalone KPI. However, if a KPI drops into trouble or you launch a campaign to double it next quarter (growing bar revenue from $20,000 to $45,000 by launching live acoustic nights), that metric becomes a Key Result (KR) nested inside a strategic Objective.

Rule 3

Anti-gaming 3-5 focus limit

The most common governance failure is creating 10-15 goals at once or stuffing daily tasks into KRs to inflate completion scores. Limit each quarter to 3-5 Objectives with 3-5 outcome-based KRs each, and keep each staff member focused on 3-5 monthly KPIs tied to verified settled orders (booking.owner). Move day-to-day activities onto the Kanban board.

2. Four-step goal rollout

Step 1: Select goal classification

In Tasks ➔ Goals, click Create Goal. Selecting OKR · Strategic Objective hides raw target fields and opens an inline Key Results (KR) builder so you can define 2-4 measurable KRs in one pass. Selecting KPI · Operational Metric exposes direct Baseline, Target, and Unit inputs.

Step 2: Bind live metric sources

Bind each KR or KPI to one of five sources: Revenue (auto-summed from settled folios), Bookings (completed orders and reservations), Attribution (real-time staff performance via booking.owner), Completed Tasks (auto-counted from linked Kanban cards in Done), or Manual check-in.

Step 3: Distribute targets with Quota Planner

Click Quota Planner in the toolbar, enter the total venue target (for example, $60,000 monthly revenue), select participating staff members, and choose equal or weighted allocation. DING OS generates child KPIs for every staff member and tracks their live progress.

Step 4: Dispatch recovery tasks to Kanban

DING OS compares actual progress against elapsed time in the period to flag Behind or At-Risk goals. Open the goal Check-in drawer and click + Add task to Board to dispatch an execution card straight to the Kanban board with a linked goal badge.


System architecture

DING OS is a multi-tenant commerce, booking, and counter dispatch operating system. It operates standalone or sits at the operational edge alongside your existing accounting or property management ledger, standardizing unstructured inbound messages, on-premise QR transactions, and open-tab reconciliations into a single real-time queue.

SubsystemEndpointOperational specification
Inbound MIME parserPOST /v1/email/ingest/Terminates inbound SMTP traffic addressed to [slug]@getding.io at the Cloudflare edge worker, extracts structured entities (customer, line items, schedule, reference, total), and enforces a 30-day SHA-256 idempotency window.
Edge hostname proxyproxy.getding.ioMaps custom subdomains (ding.yourbrand.com) and wildcard handles ([slug].getding.io) to isolated tenant containers with automated DV TLS 1.3 certificate lifecycle management.
Counter dispatch buswss://api.getding.io/v1/wsStreams ticket state transitions (pending, confirmed, ready, completed) across all paired counter terminals with dual-modality visual and 880Hz acoustic alerting.
Multi-mode folio enginePOST /v1/counter/Executes instant checkout, time-slot unit reservations, and open-tab post-audit reconciliation (reconcile_order) with mandatory staff attribution (booking.owner).

Legacy software coexistence

DING OS can operate standalone or alongside existing back-office accounting software without modifying your chart of accounts or fiscal tax ledger.

Front-of-house operations (DING OS)

Inbound email order and booking extraction, 14-locale QR storefront, conversational quote capture (capture_inquiry), open-tab quantity auditing, and real-time counter dispatch.

Back-office ledger (ERP, POS, PMS)

Statutory VAT e-invoicing, general ledger posting, end-of-day fiscal register closure, room key-card encoding, and warehouse stock depletion via CSV or webhook sync.


Email ingestion

Forward order notifications, OTA booking confirmations, and B2B quote requests from your mail server to your workspace ingestion address with zero API setup. Inbound MIME payloads are parsed directly into your dispatch queue without polling IMAP mailboxes or storing mail server passwords.

Target ingestion address
Dual-receipt fail-safe

Configure your mail server forwarding rule with "Keep a copy in the inbox" enabled. Your corporate mailboxes ([email protected], [email protected], [email protected]) retain every original message as the primary archive while DING OS processes a forwarded copy in parallel.

  1. Open Gmail Settings ➔ See all settings ➔ Forwarding and POP/IMAP.
  2. Select Add a forwarding address and enter [slug]@getding.io.
  3. Google sends a verification message to your workspace address. Open the DING OS Inbox view to retrieve the confirmation link and approve forwarding.
  4. Open Filters and Blocked Addresses ➔ Create a new filter and set the Has the words query to subject:(Order OR Quote OR Booking OR Reservation OR Confirmation).
  5. Enable Forward it to [slug]@getding.io, leave Skip the Inbox unchecked so your primary mailbox retains the original copy, and save the filter.
3-tier infinite loop suppression
1. Header suppression

Outbound notifications from api.getding.io include X-Ding-Generated: true and Auto-Submitted: auto-generated. The SMTP worker drops any message carrying these headers.

2. Reference digest

Inbound tickets are indexed by sha256(organization_id + ":" + reference) for 30 days. Duplicate deliveries update status rather than creating duplicate tickets.

3. Envelope filter

Messages with an SMTP Return-Path or From matching *@getding.io or @trip.express are rejected prior to AI parsing.


Channel integrations

Step-by-step configuration playbooks for Zalo Official Account (ZBS and ZNS), Telegram Bot, WhatsApp Cloud API, Messenger, Open Banking (VietQR, SePay), Stripe, PayPal, and OTA channels.

Stage 1: Zalo app activation

developers.zalo.me
  1. Open developers.zalo.me, select your application, and switch the top-right status toggle to Active so Zalo stops returning error -209.
  2. In Domain verification, enter workspace.getding.io, copy the zalo-platform-site-verification meta tag code, paste it in Workspace ➔ Tracking, and confirm verification.
  3. In Products ➔ Official Account API ➔ General settings, request permissions for OA profile management and user message management.
  4. In Webhooks, set the callback URL to and enable user_send_text, user_send_image, and oa_send_text events.

Stage 2: OAuth token renewal

API Explorer
  1. Open developers.zalo.me/tools/explorer, select your app, choose OA Access Token, and authorize your Official Account.
  2. Copy the generated OA Access Token (valid for 25 hours) and Refresh Token (valid for 3 months), plus your App ID and App Secret from application settings.
  3. Paste all four values into Integrations ➔ Zalo OA ➔ Connection. DING OS automatically exchanges the refresh token in the background every 25 hours so delivery never stops.

Stage 3: Business account linking

business.zalo.me
  1. If the application dropdown in Zalo ZBS template creation is empty, open business.zalo.me ➔ select your ZCA Account ➔ Settings ➔ Applications ➔ click Link application and enter your Zalo App ID.
  2. Two-way OA chat API note (Error -224): Zalo requires an active 1-month trial or paid OA package (zalo.cloud/oa/pricing) to send outbound replies via openapi.zalo.me/v3.0/oa/message/cs. While on the Free tier, DING OS automatically copies the AI draft to your clipboard and opens oa.zalo.me/chatv2 in 1 click.

Stage 4: ZNS template parameters

account.zalo.cloud

Zalo ZNS requires two horizontal transparent PNG logos (Light and Dark mode) sized at 400 x 96 px (50:12 aspect ratio, centered horizontally and vertically). Create four templates from the Zalo library (Order, Transfer, Rating, Voucher) and map parameters using the reference table below:

TemplateParameter keyZalo technical typeSample value
Order, Ratingorder_codeMã số (30)
Order (CTA link)order_idURL (200)
Orderphone_numberThông tin liên hệ (50)
Order, TransferpriceSố lượng / Số tiền (20)
OrderstatusTrạng thái giao dịch (30)
OrderdateThời gian (20)
OrdernameTên khách hàng (30)
Transfer, Rating, Vouchercustomer_nameTên khách hàng (30)
Transfercontract_numberMã số (30)
Transfertransfer_amountTiền tệ (VNĐ) (12)
Transferbank_transfer_noteBank Transfer Note (90)
Ratingorder_dateThời gian (20)
Vouchercustomer_idMã số (30)
Vouchervoucher_codeMã số (30)
Voucherstart_dateThời gian (20)
VoucherexpireThời gian (20)
Standard reviewer note (under 140 characters)
Gửi tự động xác nhận mã đơn, tổng tiền và trạng thái ngay khi khách đặt dịch vụ thành công. Không chứa quảng cáo.

Custom domain DNS

Publish these two DNS records at your registrar (Cloudflare, Route 53, GoDaddy) to route ding.yourbrand.com through the edge proxy.

TypeHostRequired valueTTLStatus
CNAMEAutoPending
TXT
AutoPending
If your zone uses Cloudflare DNS, set the CNAME proxy status to DNS only (grey cloud) during initial verification.Domain settings

Counter dispatch

Counter terminals maintain a persistent WebSocket session (wss://api.getding.io/v1/ws) scoped to your workspace. When a new order, reservation, or quote inquiry arrives, the terminal triggers dual-modality alerting: an 880Hz Web Audio oscillator chime paired with a persistent visual dispatch banner.

Acoustic alert

Grant site sound permission on dedicated counter tablets so background tabs synthesize the 880Hz A5 and 1318.5Hz E6 chime without gesture prompts, then test speaker gain below.

ChromiumSite settings ➔ Sound ➔ Allow
SafariSettings ➔ Websites ➔ Auto-Play ➔ Allow all
Visual banner

Every inbound ticket renders a persistent visual notification banner displaying the unit reference, customer name, service category, and required action, operating reliably even when device speakers are muted.

WebSocket streamwss://api.getding.io/v1/ws
Muted fallbackPersistent dispatch card

Unit binding

Physical and virtual service points are modeled using the canonical Unit entity across all 13 categories: spaces, realty, events, appointments, travel, mobility, retail, sports, spa, amenities, dining, drinks, and takeaway. QR spot generation is unlimited across all plans.

Location parameter locking

Each QR standee encodes the target unit identifier (UNIT #04 or REF #12). Once scanned, the storefront locks the unit badge in read-only mode so guests cannot manually alter their table, court, or room number.

Open-tab reconciliation

Units configured in open-tab mode allow continuous item additions throughout a session. Before closing the bill, staff run reconcile_order to verify actual consumed quantities and credit unconsumed returns.


Attribution

Every order, walk-in reservation, and reconciled tab records an immutable creator identifier in booking.owner. Automated inbound orders default to System AI Ingest until claimed or reconciled by a counter operator.

Performance board

DING OS never applies a fixed default commission percentage. Every order, booking, and task records multi-role attribution (SALES, OPERATIONS, FINANCE, MANAGER, OBSERVER) on the live Performance Board so your accounting team reconciles monthly payouts according to your internal compensation policy while shared front-desk headers keep individual balances private.


Data isolation

Tenant boundaries are enforced at the database query layer in api.getding.io. Every request is strictly scoped to the authenticated workspace organization_id.

OneUID authentication

Operator sessions authenticate via OneUID (uid.one) using OIDC and DPoP-bound tokens. OneUID verifies identity (sub) without storing merchant CRM data or guest transaction histories.

Data controller ownership

Each merchant organization acts as the independent data controller for its customer profiles, contact records, and cashback wallet balances under GDPR and PDPA, with zero cross-merchant data sharing.


Frequently asked questions

Technical and operational reference for venue owners, operations managers, and IT teams.

Both KRs and KPIs use quantitative numbers, which is why teams often confuse them. The difference lies in their purpose: a KPI measures ongoing operational health that you must maintain month after month (for example, keeping room occupancy above 75%, monthly revenue at $50,000, or order cancellation rate below 2%). A Key Result (KR) always lives inside a strategic Objective (OKR) and measures a time-bound breakthrough from baseline X to target Y (for example, growing corporate banquet revenue from $15,000 to $40,000 in Q4). When a healthy KPI suddenly drops and needs a strategic turnaround, it becomes a KR inside an Objective.
Last updated: November 2026Contact support →