Events, SMS keywords and other extras

Track webinar registrations, let people text a keyword, estimate SMS cost, show in-app messages, and set up referrals, loyalty and coupons.

Embed
Preview of the card
<a href="https://hermeticor.com/guides/marketing-extras"><img src="https://hermeticor.com/guides/_api/public/orgs/5fcd8b3c-a27c-4688-972f-de710125592f/spaces/9a3da731-ded5-4536-b84f-8c9a61420ff4/pages/97e76604-f5c0-4f98-a24e-dd14e607a794/social-card.svg?v=3e7ae33eec8b" alt="Events, SMS keywords and other extras" width="600" height="315"></a>

These features sit around your campaigns and journeys. None of them needs an extra provider account, except sending SMS.

Webinars and other events

Keep a record of an event and who registered. Needs mkt_events:write.

curl -s -X POST "$BASE/v1/marketing-events" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Webinar: Bring your own provider","kind":"webinar",
       "startsAt":"2026-11-19T17:00:00Z","endsAt":"2026-11-19T17:30:00Z","capacity":300}'

curl -s -X POST "$BASE/v1/marketing-events/<eventId>/registrations" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"emails":["maya@example.com"]}'

The event shows registered and attended counts. To collect registrations yourself, use a sign-up form on a landing page.

SMS

These need campaigns:write.

A keyword people text in. Someone texts WEBINAR and gets your reply:

curl -s -X POST "$BASE/v1/sms/keywords" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"keyword":"WEBINAR","replyText":"You are on the list for the 19 Nov webinar reminder. Reply STOP to opt out.","action":"grant_consent"}'

action is none, grant_consent or add_tag (with tag). STOP, HELP and the other words carriers reserve are refused.

What a send will cost before you send it. recipients counts people per country:

curl -s -X POST "$BASE/v1/sms/estimate" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"body":"Starts in 1 hour: https://example.com/webinar","recipients":{"US":4},"shortenLinks":true}'

A tracked short link: POST /v1/sms/links {"url":"https://example.com/webinar","ttlDays":30}.

Saved replies for your team's SMS inbox: POST /v1/sms/canned-replies {"title":"Webinar link","body":"Here is the link: https://example.com/webinar"}.

In-app messages and inbox cards

For people using your app. Needs campaigns:write.

curl -s -X POST "$BASE/v1/in-app-messages" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Webinar banner","layout":"banner_top","content":{"html":"<p>Join our webinar on 19 November.</p>"},
       "audience":{"kind":"everyone"},"trigger":{"type":"app_open"}}'

It starts as a draft. An inbox card is a message for one person, kept in their in-app inbox until it expires:

curl -s -X POST "$BASE/v1/inbox-messages" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"profileId":"<profileId>","title":"Your webinar seat","body":"See you on 19 November.","link":"https://example.com/webinar","expiresInDays":30}'

Referrals

Give each customer a link that credits them when a friend signs up. Needs profiles:write.

curl -s -X POST "$BASE/v1/referral-programs" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Invite a friend","destinationUrl":"https://example.com/signup","rewardEvent":"Sent first campaign","status":"paused"}'

Start it with PATCH /v1/referral-programs/<id> {"status":"active"}. GET /v1/referral-programs/<id>/links lists each person's link.

Loyalty points

Needs integrations:write.

curl -s -X POST "$BASE/v1/loyalty/programs" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Example Champions","pointsName":"credits","status":"paused"}'

Products and coupons

Needs templates:write. Add the products you sell to the catalog:

curl -s -X POST "$BASE/v1/catalog/items" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"externalId":"plan-growth","title":"Growth plan","priceMinor":4900,"currency":"USD"}'

A coupon pool hands out codes through a coupon block:

curl -s -X POST "$BASE/v1/coupon-pools" \
  -H "Authorization: Bearer $HERMETICA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Webinar 20% off","kind":"static","discountType":"percentage","amount":20,"enabled":false}'

Add codes with POST /v1/coupon-pools/<id>/codes. A static pool gives everyone the same code; a unique pool gives each person their own and runs out when its codes do. Set enabled: true when you are ready to hand them out.

Next: Reports and dashboards.

Updated