Programs & settings

Each program inside a tenant is its own pass: separate branding, separate audience, separate enrollment policy. You can run as many as you need — Dýrabær launches with two (Breeder Club and Food Club).

Create a program

Click + New program on the loyalty home page. The fields:

  • Name — shown on the pass and inside Stokk.
  • Slug — URL-safe identifier (e.g. breeder-club). Used in public form URLs.
  • Organization name— what shows on the pass lock screen. Usually the tenant's consumer-facing brand.
  • Background / foreground colors — hex values used for the wallet pass and the public form CTA.

Enrollment policy

Two toggles per program:

  • Require approval — submissions land in the Applications queue until a tenant admin acts on them. Use this for programs that need verification (e.g. a Breeder Club where you confirm the customer actually breeds animals).
  • Public enrollment form — exposes a tenant-branded form at /enroll/{tenant-slug}/{program-slug}. Customers can sign themselves up on a kiosk iPad or any device. Disabled by default.
Public form abuse

Public forms are rate-limited per IP and have a hidden honeypot field, but a determined bot can still flood the queue. Watch the applications queue after enabling public enrollment — if abuse appears, ask Stokk to wire up captcha (planned for v1.1).

Inactive programs

Toggle Active off to hide a program from the operator UI and 404 the public form. Existing pass holders are unaffected — the cards on their phones keep working until you revoke them.