Every Restaurant CRM CFO asks the same two questions in the same meeting: how do I bill my franchisees, and how much of my customers' data do you hold? Both answers come from the same primitive.
That's the entire billing surface. Everything else — the invoice, the reconciliation, the per-franchisee report — is derived from it.
Every workflow run is stamped with app_name, user_id, and uid. That's the entire billing surface — a two-column join, not a data warehouse.
The metering dashboard exports columns your CFO already uses: app name, restaurant name, executions, async runs, retention days, billing period. It's the same shape as the existing franchise invoice.
The runtime holds a reference, not the data. The uid is an opaque identifier only the CRM knows how to resolve. No PII, no order history, no menu, no pricing.
The moment the CRM outgrows the built-in attribution, they point their own finance stack at the metering export and stop paying the attribution fee. The runtime is designed to lose that business.
uid reference (a mapping only you can resolve)app_name attribution tagThe moment your CRM has its own billing system, you should stop paying Sageion for attribution. Point your finance stack at the metering export, and we'll get out of the way. There's no contractual bundling, no data portability puzzle, no migration project. The primitive is designed for exit — because a Restaurant CRM should never be locked into a billing layer they don't want.
Book a 30-minute call and we'll walk your CFO through the exact invoice shape, the custody boundary, and the exit path. No commitment, no procurement cycle.