Get Acquisition Summary Cards
The organization's consolidated acquisition numbers for the period: investment, new customers, CAC, LTV, ROI and payback.
Use it for a dashboard's headline indicators. Each metric carries value and changePct, the percentage change against the previous period of the same length.
investmentandnewCustomersare the broad totals: every campaign, with organic customers included.acquisitionInvestmentandacquisitionNewCustomerscount only the campaigns marked as acquisition and are exactly the two sides ofcac. Do not combine one field from each pair.acquisitionAvgLtv,acquisitionLtvCacRatioandacquisitionRoialso consider only acquisition campaigns.paybackMonths.changePctis alwaysnull.hasAcquisitionClassification: falsemeans no campaign was marked as acquisition, which is whycacand the acquisition metrics arenull.
ClientIdAuthClientSecretAuthx-client-id<token>Client ID
x-client-secret<token>Client secret
organizationId*stringOrganization identifier (required). A missing or non-string value is a 400.
period?stringDeprecatedDeprecated: use startDate and endDate, which take precedence when sent. Relative period of N days ending today, inclusive (7d = today and the 6 days before it). "Today" is the UTC calendar day, and that last day is still partial. Accepted values: 7d, 30d, 90d, 1y. Omitted or empty means 30d; any other value returns 400.
"30d""7d""30d""90d""1y"startDate?stringStart of the period (YYYY-MM-DD, inclusive). Send it together with endDate: sending only one of them returns 400. Takes precedence over period. Send the date only: a date with a time or a date that does not exist returns 400. Rules: startDate ≤ endDate, neither date in the future (UTC), and at most 365 days between the dates (up to 366 days in the period). The comparison uses the period of the same length right before it.
dateendDate?stringEnd of the period (YYYY-MM-DD, inclusive). See startDate for the rules. When the end date is today, that last day is still partial, because the day's data keeps arriving.
dateAcquisition summary returned successfully
application/json- response
marginConfigured?booleanIndicates whether the organization configured a contribution margin on the platform. false means the 100% default is in use.
marginCompleteness?MarginCompletenessCompleteness of the contribution margin configured by cost item: complete = every item resolved; partial = some item is pending, so the applied margin is partial; none = no item breakdown (margin never configured, or configured as a single percentage; tell them apart with marginConfigured).
"complete""partial""none"marginItemStatus?Status per item of the margin composition (synced = from the orders, configured = informed by the user, pending = not configured or missing data). null when the organization has no composition.
investment*TOTAL media spend of the period, brand and monetization included. value is always a number (0 when nothing was spent). Not margin-scaled. This is NOT the CAC numerator — see acquisitionInvestment.
acquisitionInvestment*Spend of the campaigns marked as acquisition on the platform (brand, monetization and unclassified campaigns are excluded). It is the exact numerator of cac. Always a number; 0 means no acquisition campaign spent in the period, in which case cac is null. No margin applied.
acquisitionNewCustomers*New customers attributed to those same configured campaigns — the exact denominator of cac, so acquisitionInvestment.value ÷ acquisitionNewCustomers.value = cac.value holds (modulo the 2-decimal rounding of cac). It is NOT newCustomers: dividing the configured spend by every customer of the organization would credit the strategy with traffic it did not bring and understate CAC. Always a number, and always ≤ newCustomers.
newCustomers*New customers acquired in the period, all channels including organic and all campaigns regardless of configuration. This is the business-outcome KPI and the number the /new-customers-over-time tabs sum to — NOT the CAC denominator, which is acquisitionNewCustomers. value is always a number (0 when none).
cac*acquisitionInvestment ÷ acquisitionNewCustomers: both sides come only from campaigns marked as acquisition. value is null (never 0) when no acquisition campaign spent in the period (including when no campaign was marked; see hasAcquisitionClassification) or when they brought no customer. No margin applied.
acquisitionAvgLtv*Average LTV of the customers brought by campaigns marked as acquisition, with the contribution margin applied (unlike the gross ltv of /v1/acquisition/channels). value is null (never 0) when no acquisition campaign spent in the period or brought customers.
acquisitionLtvCacRatio*acquisitionAvgLtv ÷ cac. Both sides consider only acquisition campaigns, so it answers "do the acquisition campaigns pay for themselves?". It differs from the ltvCacRatio of /v1/acquisition/channels, whose LTV counts every customer of the channel. value is null when either side is null.
acquisitionRoi*(revenue of acquisition campaigns × margin − acquisitionInvestment) ÷ acquisitionInvestment, as a decimal ratio (0.42 = 42%). It is usually far below a broad ROI, because it only counts revenue attributed to acquisition campaigns, with no organic, direct or unattributed sales. value is null (never 0 or −1) when no acquisition campaign spent in the period or when they brought no customer, under the same conditions in which cac is null.
paybackMonths*Payback in months: customer-weighted average of the first month in which each group of customers' cumulative contribution (revenue × margin) covers its acquisition cost. Groups are formed by acquisition month, so even a 7-day period considers whole months. value is null when no group reached payback or every group's cost is unknown; 0 is real (paid back within the acquisition month). changePct is always null.
hasAcquisitionClassification*booleanWhether the organization marked any campaign as acquisition on the V4MOS.AI platform, at any date (it does not depend on the selected period). false explains a null cac, ltvCacRatio, paybackMonths and acquisition metrics, and the empty acquisition group in /v1/acquisition/campaigns: it is not missing data for the period, the acquisition campaigns still need to be marked.
curl -X GET "https://example.com/v1/acquisition/summary?organizationId=c0ad4763-173e-4a05-9cff-5208c8ea5f6a&period=30d&startDate=2026-03-11&endDate=2026-03-22"{ "investment": { "value": 212000, "changePct": 12.5 }, "acquisitionInvestment": { "value": 180000, "changePct": 14.2 }, "acquisitionNewCustomers": { "value": 1200, "changePct": -2.1 }, "newCustomers": { "value": 1830, "changePct": -4.32 }, "cac": { "value": 150, "changePct": 6.11 }, "acquisitionAvgLtv": { "value": 141.34, "changePct": -3.2 }, "acquisitionLtvCacRatio": { "value": 1.42, "changePct": -8.7 }, "acquisitionRoi": { "value": 0.42, "changePct": -11.4 }, "paybackMonths": { "value": 3.4, "changePct": null }, "hasAcquisitionClassification": true}