Skip to content

Marketplace App Development Guide

Blesyum apps are extensions that add new capabilities to dashboards and products (CRM, ERP, e-commerce, email, etc.) — similar to apps in the Shopify App Store or Slack. T…

  • 6 min read
  • Last updated July 14, 2026
On this page
  1. Operating Model
  2. 1. Describe your application
  3. 2. Permissions
  4. 3. Authentication
  5. 4. Listen for events via webhooks
  6. 5. Publishing a Version
  7. 6. Pre-publication checklist

Blesyum applications are plugins that add new capabilities to dashboards and products (CRM, ERP, E-Commerce, Email, etc.)—similar to apps in the Shopify App Store or Slack. They are not mobile apps installed on a phone.

In short: your code runs on your own server. You simply register your app’s ID, the permissions it requires, and its price with Blesyum; once a Tenant installs your app, it operates via the Blesyum API.

Operating Model

Your application operates using the "remote HTTP" model: the code is not loaded into Blesyum; it runs on your server beyond the network boundary and communicates via signed, SSRF-protected, rate-limited REST calls. There is no direct access to the database.

  • Available on Blesyum → The app’s ID, category, target products, required permissions, pricing, and version history
  • On your end → The application itself: business logic, user interface, data processing
  • Data access → Only via the API, strictly limited to the permissions approved by the tenant

1. Describe your application

Fields you fill out when creating a new application from the console:

  • Name → Name displayed in the store
  • Slug → URL suffix; only lowercase letters, numbers, and hyphens
  • Category → One of the following canonical lists
  • Description → What the application does
  • Target Products → CRM · ERP · B2B · Email · Call Center · Shop · Consultant
  • Required Permissions → The scopes your app needs to function
  • Pricing → Free · One-time · Subscription

The category must come from the canonical list; submitting a key outside the list will result in rejection.

  • integration → Connects Blesyum to an external system
  • report → Adds a report/dashboard to the panel
  • theme → Visual theme
  • automation → Workflow automation
  • sales_channel → Sales channel
  • messaging_channel → Messaging channel
  • shipping → Shipping/Delivery
  • widget → Widget on the panel
  • sector_pack → Sector package
  • language_pack → Language pack
  • other → Other

If you are a developer with comprehensive product coverage, you can target only the products you have been approved for; submissions for products outside your scope will be rejected.

2. Permissions

Your app runs only with the permissions it requests and that the tenant approved during installation. Request fewer permissions: unnecessarily broad permissions erode trust during the installation approval process.

ScopeWhat it offersRequest it whenever you need it
core.readReading core dataIf you are reading tenant, user, or Subscription information
core.writeWriting core dataIf you are going to create or update a core record
crm.read / crm.writeCRM Read/WriteIf you are working with customer, call, or request data
erp.readERP ReadingIf you are going to read inventory, account, or invoice data
b2b.readB2B ReadingIf you are reading dealer/wholesale data
shop.readE-Commerce ReadingIf you are going to read product, order, or cart data
mail.sendSending an emailYou will be sending an email on behalf of the Tenant
webhooks.subscribeSubscribe to eventsIf you want to be notified when an event occurs

The permissions granted by the tenant during installation are recorded; your application can only operate within the limits of those permissions.

3. Authentication

Every request to the Blesyum API is signed with an API key. The key format is blsk_{ortam}_{kimlik}_{gizli}, and the secret portion is displayed only once at the time of creation.

curl https://firmaniz.blescript.com/api/v1/me \
  -H "Authorization: Bearer blsk_live_ab12cd34_gizli-anahtariniz"

Do not store the key on the client side (browser, mobile app)—keep it only on your own server. If it’s compromised, revoke it immediately via the console.

4. Listen for events via webhooks

Instead of constantly checking, get notified when an event occurs. Each delivery comes with three headings:

  • x-Blesyum-event → Event name (e.g., Invoice.paid)
  • x-Blesyum-delivery → Delivery ID; use to filter out duplicates
  • x-Blesyum-signature → HMAC-SHA256 signature of the raw body (hex)

Events you can subscribe to and when they are triggered:

  • invoice.created → A new invoice was created
  • invoice.paid → Invoice paid
  • invoice.refunded → Invoice refunded
  • subscription.renewed → Subscription renewed
  • subscription.plan_changed → Subscription plan has changed
  • subscription.canceled → Subscription canceled
  • user.invited → The user was invited to the team
  • user.joined → The invited user has joined
  • ticket.created → Support request created
  • ticket.answered → Support request answered

Verify the signature using a fixed-time comparison on the raw body (not the JSON-converted version—spacing differences will invalidate the signature):

import crypto from "node:crypto";

export function imzaDogrula(rawBody, header, secret) {
  const beklenen = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(beklenen);
  const b = Buffer.from(header ?? "");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Do not process requests with unverified signatures. The same delivery ID may be received again (retry) — design your processes to be retry-tolerant.

5. Publishing a Version

Fields you enter when publishing a version:

  • Channel → stable or beta
  • Spread → Gradual opening between 0% and 100%
  • Status → Published or Unpublished

Publication workflow:

  1. Submit a version — Enter the version number, channel, and release notes.
  2. Roll out gradually — Release the version to a small segment first, based on the adoption rate.
  3. Please wait for review — The app will be published in the store once it passes review.
  4. Roll back if necessary — Roll back to the problematic version; the registration will not be deleted, and the previous version will be restored.

The status of your application is displayed in the console:

StatusWhat does this mean?What do you do?
DraftNot yet submittedFill out the fields and submit
In the reviewThe Blesyum team is reviewing thisPlease wait; additional information may be requested
PublishedListed in the storeYou can publish a version
RejectedSubmission not acceptedPlease correct it according to the instructions and resubmit it
PendingRemoved from publicationResolve the issue and submit a support request

6. Pre-publication checklist

  • You have minimized the required permissions.
  • It verifies the webhook signature; you do not reprocess duplicate deliveries.
  • The API key is server-side only; your rotation flow is ready in the leak.
  • In the event of an error, your application does not interrupt the tenant's work (graceful fallback).
  • Descriptions and screenshots explain what the application actually does.

If you get stuck, submit a support request — you’ll get a faster response if you include your app’s slug.

Marketplace App Development Guide — Blesyum