Integrations
Salla
Install DeelFlows from the Salla App Store and connect your store in one click. COD orders become confirmation triggers; unpaid checkouts become recovery triggers.
Install and connect
Salla partner apps use Easy Mode: the merchant installs from the Salla App Store and Salla pushes the OAuth tokens to DeelFlows as an app.store.authorize event. There is no redirect back through the DeelFlows dashboard, so there is no “Connect with Salla” button to click on our side — and none is possible, because Easy Mode is the only authorization mode Salla permits for apps published on its App Store.
DeelFlows reads the installer's identity right after the install and offers the store to the matching Operator, so connecting is one click:
1. Install DeelFlows from the Salla App Store and approve the permissions.
2. Open DeelFlows → Integrations. Your store is already listed.
3. Select Connect.
What arrives
Every store's events reach one partner-level endpoint, signed with one partner-level secret, and are mapped per order:
SallaOrderCreated — a cash-on-delivery order, whatever its status. This is the entry event for a COD confirmation journey, carrying paymentMethod: "cod".SallaCheckoutStarted — a non-COD order left in payment_pending, carrying the customer order URL so a recovery message can link straight back to the checkout.
Journey entry is deduped by a deterministic message id (salla-order-{id}), so order.updated redeliveries and status changes never double-enter an order. Canceled and restoring orders are ignored.
Self-hosted: your own partner app
Running your own DeelFlows instance means running your own Salla partner app. Create it at salla.partners, then set three environment variables:
SALLA_CLIENT_ID=...
SALLA_CLIENT_SECRET=...
SALLA_WEBHOOK_SECRET=... # partner-level, one value for every storeIn the Partner Portal, point the webhook at /api/public/webhooks/salla on your API host, keep the default Signature security strategy, and subscribe to app.store.authorize, app.uninstalled, order.created, and order.updated.
SALLA_WEBHOOK_SECRET makes the endpoint answer 503 rather than accept unsigned payloads — Salla retries instead of the events being trusted. After a valid signature the route always answers 200, so a processing error never causes Salla to disable delivery.Testing before the app is published
An app that is still a draft cannot be installed from the public Salla App Store — that is by design, not a misconfiguration, and no tunnel or webhook change works around it. Salla provides demo stores for this:
1. In the Partner Portal, set your app's price, then save it as a draft. App events are not testable until it has been saved as a draft.
2. Open Demo Stores and create one. The default OTP is 1111.
3. Use Install App next to that demo store. This runs the real authorization flow and delivers a real app.store.authorize event to your webhook.
4. Place a test order in the demo store to exercise the order mapping.
To receive those events on a local machine, expose your API host with a tunnel and use the tunnel URL as the webhook. A partner app has one webhook URL, so pointing a production app at your laptop takes the production stores' events with it — register a second partner app, with its own client id and webhook secret, for local work instead.
Publishing to the App Store is a separate submission and review step in the Partner Portal once testing on the demo store passes.
Tokens and uninstall
Access tokens last about 14 days and refresh tokens about a month. Refresh tokens are single-use: Salla revokes the whole grant if one is replayed, and the merchant then has to reinstall. DeelFlows refreshes with a five-minute slack window and retries once on a 401.
app.uninstalled deletes the stored tokens and disables the integration. Reconnecting after a reinstall does not require rebuilding journeys — contacts and journeys are untouched.