Business goals and conversions
Set a revenue or conversion target for a quarter, name the events that count as conversions, and add ad spend for return on spend.
A business goal is a target for a date range, such as new revenue this quarter. Hermeticor tracks progress from the conversions it records.
What you need first
Events from your app for the things that count, such as an upgrade (see Track events).
A key with
analytics:read, plussettings:writefor conversion labels,campaigns:writefor goals andintegrations:writefor ad spend.
1. Name your conversions
Tell Hermeticor which events are conversions, and which property holds their value:
curl -s -X POST "$BASE/v1/analytics/conversion-labels/bulk-create" \
-H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
-d '{"items":[
{"label":"workspace_activated","event":"Connected provider","folder":"Activation"},
{"label":"paid_plan","event":"Upgraded plan","valueProperty":"mrr_minor","folder":"Revenue"}]}'Each event can have one label. GET /v1/analytics/attribution/settings shows how conversions are credited to campaigns and journeys.
2. Set a goal
curl -s -X POST "$BASE/v1/business-goals" \
-H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Q4 2026: $15k new MRR","metric":"revenue","targetValue":1500000,"currency":"USD",
"startsOn":"2026-10-01","endsOn":"2026-12-31"}'metricisrevenueorconversions.Revenue is in minor units:
1500000is $15,000.00. A revenue goal needs acurrency.The end date cannot be before the start date.
3. Watch progress
curl -s "$BASE/v1/business-goals" -H "Authorization: Bearer $HERMETICA_API_KEY"Each goal shows progress and percent. Change the target with PATCH /v1/business-goals/<id> {"targetValue":2000000}.
When the quarter is over, archive it: POST /v1/business-goals/batch/archive {"ids":["<goalId>"]}. batch/restore brings it back.
4. A target per conversion
curl -s -X PUT "$BASE/v1/analytics/conversion-labels/paid_plan/target" \
-H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
-d '{"targetMinor":1500000}'
curl -s "$BASE/v1/analytics/conversion-labels/paid_plan/metrics?from=2026-10-01&to=2026-12-31" \
-H "Authorization: Bearer $HERMETICA_API_KEY"5. Add ad spend
To see return on ad spend next to your conversions, import what each ad campaign cost per day:
curl -s -X POST "$BASE/v1/ad-spend/import" \
-H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
-d '{"rows":[{"platform":"linkedin","campaignKey":"li-agencies-q4","campaignName":"LinkedIn: agencies",
"day":"2026-10-15","spendMinor":42000,"currency":"USD","impressions":18000,"clicks":210}]}'
curl -s "$BASE/v1/ad-spend/report?from=2026-10-01&to=2026-10-31&groupBy=campaign" -H "Authorization: Bearer $HERMETICA_API_KEY"Importing the same platform, campaign and day again updates that row: spend and currency are replaced, and impressions, clicks and campaignName change only when you send them. Remove a range with DELETE /v1/ad-spend?platform=linkedin&from=2026-10-01&to=2026-10-31.
Next: Reports and dashboards.