Marketing
The /marketing endpoints need the Pro plan, the plan that includes the Marketing suite.
Other plans get 403 plan_feature_required.
Read what marketing booked, the posts and the ads, the same numbers the Marketing suite page shows.
Every endpoint is read only and needs the marketing:read scope.
| Endpoint | What it returns |
|---|---|
GET /v1/marketing/overview | Bookings from marketing by channel, against the same days last year |
GET /v1/marketing/posts | Social posts and website articles, with what each did |
GET /v1/marketing/ads | Google, Meta and TikTok ads from the connected ad accounts |
What counts as a booking from marketingโ
A booking made in the period that carries any attribution: an ad click id (gclid, fbclid,
ttclid), a utm tag, a tagged link (?ref=) or the page it arrived on. Cancelled bookings,
quotes nobody accepted and unsent drafts are left out.
Get the overviewโ
GET /v1/marketing/overview?days=30
| Parameter | Type | Required | Description |
|---|---|---|---|
days | integer | no | 7, 30 (default), 90 or 365, ending today in the shop's time zone |
{
"data": {
"days": 30,
"compared_with": "the same days last year",
"totals": {
"bookings": 12,
"revenue": 1840.5,
"previous_bookings": 9,
"previous_revenue": 1290,
"revenue_change_pct": 43,
"spend": 210,
"cost_per_booking": 35
},
"channels": [
{ "key": "google_ads", "label": "Google Ads", "bookings": 6, "revenue": 980, "spend": 210, "cost_per_booking": 35, "previous_bookings": 4 }
],
"posts_waiting": 3,
"bots": [
{ "key": "fill_spots", "name": "Fill empty spots", "on": true, "does": "Drafts a post for a spot still to sell in the next 10 days, for your OK." }
]
}
}
A channel the shop never used is not listed. spend and cost_per_booking are null until an ad
account is connected, never 0.
An API key sees every figure. The phone app, signed in as a person, gets money only when that
person can see revenue; otherwise the money fields are left out and money_hidden says so.