sayren

Add the features your store needs
with apps.

Apps act on order events and show their own screens inside the Sayren dashboard. Developers upload code and Sayren runs it. Sellers review a consent screen before installing.

Two people at a small brand packing ordered items into a box
  • Order email alertsSends an email for each paid order.Official example app
  • Message alertsShipping and delivery updates as customer messagesYou could build
  • Logistics integrationPaid orders to your warehouse systemYou could build
  • Accounting integrationPayments and refunds to your booksYou could build
  • Your own app
What apps do

Apps can do six things.

  • Receive events

    Run on store events like payment completed, shipped or return requested.

  • Dashboard screens

    Show app screens inside the Sayren dashboard that sellers use.

  • AI agent tools

    AI agents call app features during a conversation.

  • Order flow steps

    Get notified at flow steps and send results back to the flow.

  • Scheduled jobs

    Run on a set schedule.

  • Inbound webhooks

    Receive requests that external services send to the app's public URL.

Sellers

See what an app does before you install it.

The consent screen lists the data the app reads, the events it receives and the external URLs it connects to. Apps can't send requests anywhere not listed there.

Order email alertsThis app wants to access your store
Data read
View orders
Events received
Payment completed
External connections
api.resend.com
Settings
Recipient · Sender address
Developers

Deploy apps without a server.

Write functions in TypeScript and upload them. Sayren builds and runs them. If you already run your own server, you can run the app there instead.

  1. Create an app folder and declare permissions and events in the manifest.
  2. Upload your code. A version is created after checks pass.
  3. Release the version to apply it to stores that installed the app.
src/server.ts
import { defineApp } from "@sayren/app";

export default defineApp({
  events: {
    "ORDER.PAID": async (event, ctx) => {
      const order = await ctx.api.orders.get(event.data.orderId);
      await sendMail(ctx.settings.to, order);
    },
  },
});
npx sayren app init order-mailnpx sayren app deploynpx sayren app release 1
Distribution

Build for your store, then publish to every store.

  1. Development app

    Installs only on stores you manage and development stores.

  2. Private app

    Built for a single store.

  3. Public app

    Appears in every store's app list after review.

FAQ

Do I need a server to run my app?

No. Upload your code and Sayren runs it. If you prefer, run it on your own server and verify Sayren's calls by signature.

Can an app take any store data it wants?

No. Apps read data only within the permissions the seller approved, and send requests only to the external URLs listed in the manifest.

Do sellers need to re-consent when I update my app?

Only changes that add permissions, external URLs, events or app screens require the seller to re-consent. Until then, the previous version keeps running.

Is there example code?

The full code for an app that emails paid orders is in a public repository. The guide walks you from the start through installation.