All modules

Store email from the store's own domain.

Verify the store's domain once, add a sending address on it, and Arky sends receipts, sign-in codes, booking, cart, form, return, and renewal emails at their moments. A newsletter is a free customer group people join, and each issue is a broadcast to its members.

Best for

  • order receipts
  • booking reminders
  • staff alerts
  • newsletters

Use it when the store should send its own transactional email and newsletters without another email tool.

What this module gives your project.

Verified domains

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Sending and receiving addresses

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Template families with explicit moment selections

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Broadcasts to customer groups

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Unsubscribe and bounce handling

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Custom UX with backend state managed in Arky.

  • Emails sent by checkout, forms, and bookings
  • No email code in the frontend
  • Emails in the language of the order
  • Newsletter sign-up as a free customer group

A client-facing back office for the same module.

  • Domain DNS lines ready to copy
  • Template editor with preview and test send
  • Broadcast scheduling
  • Email history by address
  • Suppression list

Code the frontend. Connect Arky as the backend.

Start with the frontend stack the project deserves, then connect only the Arky modules it needs. The Admin, API, SDK, and store email stay behind the custom experience.

  1. Connect the store's provider and verify its domain there
  2. Add a sending address and explicitly select templates
  3. Edit the templates and send broadcasts
import { createOrderToken, initialize } from "arky-sdk/storefront";

const arky = initialize("arky_pk_...", {
  locale: "en",
  createVisitorIdentity: () => ({
    customer_id: crypto.randomUUID(),
    session_id: crypto.randomUUID(),
  }),
  createSessionId: () => crypto.randomUUID(),
  createId: () => crypto.randomUUID(),
  createOrderToken,
});

const website = await arky.content.load({ collection: { key: "website" } });
const {
  items: [catalog],
} = await arky.eshop.catalog.find();
const cart = arky.eshop.cart({ buyer: { type: "customer" }, catalog_id: catalog.id });
const current = await cart.ensure();
const services = await arky.eshop.bookingService.find({
  catalog_id: catalog.id,
  limit: 6,
});

await arky.actions.track({
  key: "website_action",
  data: {
    page: website.record.id,
    cart: current.id,
    services: services.items.length,
  },
});

Useful API touchpoints.

  • POST /v1/stores/{store_id}/email-provider
  • POST /v1/stores/{store_id}/email-addresses
  • POST /v1/stores/{store_id}/broadcasts
Start free

Early access for custom frontend teams.