Margin
super_admin
Platform

Margin

The margin Crackle keeps on managed advertising. We send the platform a reduced budget & targets; the customer is billed the grossed-up price. Applies to Google & Facebook campaigns. Locked onto each campaign at launch — changes affect new campaigns only.

Global default
margin_config WHERE tenant_id IS NULL
% of customer price
Gross margin on the customer-facing price. 0% = pure pass-through (no markup). Capped at 90%.
Customer with a ₹1,00,000 budget · full delivery
Sent to platform (×0.80)
₹80,000
Crackle margin (20%)
₹20,000
Customer billed
₹1,00,000
Same budget · under-delivery (spends ₹60k)
Platform cost
₹60,000
Crackle margin (held at 20%)
₹15,000
Customer billed (÷0.80)
₹75,000
Bidding intentWhat we send the platform at 20% margin
Max conversionsBudget ×0.80
Max conversion valueBudget ×0.80 · target ROAS ÷0.80 (if set)
Target CPABudget ×0.80 · target CPA ×0.80
Target ROASBudget ×0.80 · target ROAS ÷0.80
Limit bidBudget ×0.80 · bid cap ×0.80
Each lever is adjusted so the customer's billed CPA / ROAS / bid lands exactly on the number they entered.
Per-tenant overrides
margin_config WHERE tenant_id = '<tenant>'

Tenants without an override inherit the global default (20%). The Effective column is what actually applies to that tenant's new campaigns: the override if set, else the global default.

TenantOverrideEffective
Acme Ads Co.
%
25.0% +5 vs default
Bharat Media
%
20.0% inherits default
Chai Labs
%
0.0% pure pass-through
Clear an override to remove it — the tenant falls back to the global default. Override inputs are clamped 0–90 (capped at 90%).

Saving emits a customer_events row of type margin_changed. New margins apply to campaigns launched after the change; in-flight campaigns keep the margin snapshotted at their launch.