Acquisition

Get Acquisition Cards by Channel

GET
/v1/acquisition/channels

One card per paid channel, such as Meta Ads and Google Ads, with investment, new customers, CAC, LTV, LTV/CAC, ROI and payback.

Use it to compare channels. Each metric carries value and changePct, the change against the previous period of the same length.

  • The Orgânico (organic) channel is not included, because it has no spend.
  • The list is not sorted. Sort it on your side, for example by investment.value.
  • cac only counts campaigns marked as acquisition. ltv and roi count every customer and all of the channel's investment. ltv is gross, with no margin.
  • A channel with no data in the previous period has changePct set to null. paybackMonths.changePct is always null.

Authorization

ClientIdAuthClientSecretAuth
headerx-client-id<token>

Client ID

headerx-client-secret<token>

Client secret

Query Parameters

organizationId*string

Organization identifier (required). A missing or non-string value is a 400.

period?stringDeprecated

Deprecated: 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.

Default"30d"
Value in"7d""30d""90d""1y"
startDate?string

Start 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.

Formatdate
endDate?string

End 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.

Formatdate

Response Body

Channel cards returned successfully

application/json
  1. response
marginConfigured?boolean

Indicates whether the organization configured a contribution margin on the platform. false means the 100% default is in use.

marginCompleteness?MarginCompleteness

Completeness 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).

Value in"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.

channels*array<>

One card per paid channel, unsorted. Empty when the organization had no paid channel data in the period.

hasAcquisitionClassification*boolean

The same flag as in /v1/acquisition/summary, with the same value: whether the organization marked any campaign as acquisition.

curl -X GET "https://example.com/v1/acquisition/channels?organizationId=c0ad4763-173e-4a05-9cff-5208c8ea5f6a&period=30d&startDate=2026-03-11&endDate=2026-03-22"
{  "channels": [    {      "channel": "Meta Ads",      "investment": {        "value": 128000,        "changePct": 9.4      },      "acquisitionInvestment": {        "value": 112000,        "changePct": 10.7      },      "acquisitionNewCustomers": {        "value": 800,        "changePct": 4.1      },      "newCustomers": {        "value": 1120,        "changePct": 3.2      },      "cac": {        "value": 140,        "changePct": 6.01      },      "ltv": {        "value": 486.5,        "changePct": -1.2      },      "ltvCacRatio": {        "value": 3.48,        "changePct": -6.8      },      "paybackMonths": {        "value": 2.7,        "changePct": null      },      "roi": {        "value": 1.94,        "changePct": 11.3      }    },    {      "channel": "Google Ads",      "investment": {        "value": 84000,        "changePct": null      },      "acquisitionInvestment": {        "value": 0,        "changePct": null      },      "acquisitionNewCustomers": {        "value": 0,        "changePct": null      },      "newCustomers": {        "value": 710,        "changePct": null      },      "cac": {        "value": null,        "changePct": null      },      "ltv": {        "value": 512.1,        "changePct": null      },      "ltvCacRatio": {        "value": null,        "changePct": null      },      "paybackMonths": {        "value": null,        "changePct": null      },      "roi": {        "value": 0.87,        "changePct": null      }    }  ],  "hasAcquisitionClassification": false}