In this case study

Monetisation

Three revenue lines and a shop. Slapp+ is a subscription sold through the app stores. Tilboð sells monthly ad slots and loyalty club plans to merchants. The shop sells one tee. Merchant billing is by bank transfer, with an invoice status set by hand.

Slapp+

Slapp+ is a RevenueCat subscription. The perks are listed on the product page: profile viewers, post analytics, incognito viewing, a private group, and dating perks.

The entitlement flows through webhooks. RevenueCat grants on purchase, renewal and product change, and revokes on expiry. A grant sets the premium flags on the user and syncs membership in the private Slapp+ group. Comped time exists for prizes. The paywall is custom on mobile; the web client explains that the purchase is made in the app stores.

Tilboð

Tilboð is the business-offer marketplace. Merchants reserve monthly slots in three tiers: 50,000, 35,000 and 15,000 krónur. A slot bought mid-month is prorated to the nearest 500 krónur. Nova and Domino's were the first major advertisers, signed through direct sales, and the self-service portal at tilbod.slapp.is lets any merchant do the same without a call.

An offer moves through four states: draft, pending review, scheduled, active. Admin approval sits between pending review and scheduled, and 16 kinds of Resend email carry the merchant through the lifecycle. Redemption at the till is by code, by a daily-rotated PIN, or by tap, with a 72-hour attribution window between a person seeing the offer and redeeming it.

The portal itself, on the newest Next.js in the repository:

Onboarding
A public lead form with an interactive offer editor inside an iPhone frame, then sign-in with Kenni and a business registration validated as a company kennitala. Team members join through invitations, and a signed-in user with no business is sent to sign-up.
Buying slots
A month grid across future months with availability per tier, mid-month proration mirrored from the backend, and batch reservation across months.
Editing offers
Per-slot and per-batch editors with image upload, submit and withdraw from review, clone content across a batch, and release unused slots.
Analytics
Per-offer stats, a daily chart and a funnel.

Vildarklúbbur

A Vildarklúbbur is a merchant's loyalty club inside Slapp, on one of three plans: free, plus at 14,900 krónur, and pro at 39,900 krónur, with reach and push quotas per plan. Merchants set a club up through a wizard, post to their members with an immediate or scheduled push within quota, and see performance reports, membership mix and invite stats.

These limits apply on every plan:

  • At least 48 hours between pushes from one club.
  • Quiet hours from 22:00 to 09:00.
  • At most three proactive pushes to a user per day, across all sources.
  • A k-anonymity floor of three for social proof, so social proof never identifies a single person.

Invoicing

Invoices are manual bank transfers. An admin sets the status: pending, sent, paid, overdue or void. The merchant's Bókhald page shows year-to-date paid and committed amounts with prices excluding VAT, and states that invoices are sent by Slapp by email. There is no online payment integration outside the app stores and Shopify.

The member tee

The shop sells one item: the member tee, printed with the buyer's member number, for 5,000 krónur, one per member. Slapp+ has no shop perks.

  1. Sign in with Kenni. The backend returns the member number and whether the tee has already been bought.
  2. Pick a size, S to 2XL. The checkout route re-validates the session against the backend, rejects repeat purchases, and creates a Shopify Storefront cart with the member number as a line attribute.
  3. Shopify's hosted checkout completes the order and calls the webhook, which is verified with a timing-safe HMAC.
  4. The webhook marks the purchase idempotently, renders a 4,500 by 5,400 print file with sharp (the number set in Inter Black in Slapp orange, with the Slapp ari mascot), uploads it to R2, and places a Printful order for a black Bella and Canvas 3001.

A guarded backfill route regenerates missing print files. The member number itself, and why it exists, is on the identity page.