Write it, publish it, and it is live in the app.
Marketing teams ship in-app banners, offers, and campaigns in minutes. One engineering integration up front. After that your team publishes content changes without a new app build and without a new app store submission.
Update blocks, launch campaigns, define audiences, and manage localization without waiting for the next release. Every change is approved, tracked, and reversible.
See your first update go liveTurn home-screen heroes, promo cards, and onboarding messages into controlled blocks your team can update safely, without rebuilding the app.
Blocks
Cashback
Earn 5% back on every purchase through the end of the month.
Check eligibilityEvery channel, one block. In-app, Push, Banner, WhatsApp and SMS from a single source.
Our controls are built around the requirements of the Saudi PDPL. Backups are encrypted with AES-256 and restore-tested. HTTPS is enforced across the site. SOC 2 Type II and ISO 27001 are planned.
Today ContentFlow runs as a single deployment on infrastructure located in Riyadh, Saudi Arabia, so production content and end-user data are processed in the Kingdom; that is a property of how we are currently deployed rather than a control the product enforces, encrypted backups and some third-party processors are handled outside the Kingdom, and an in-Kingdom-only arrangement is something we agree in writing on an Enterprise plan rather than something this page can promise.
Paste the setup prompt into your AI coding agent, or follow the developer guides. Production integration today uses the REST API; native SDKs for React Native, iOS, Android and Web are in preview and are not generally available.
npx @contentflow/cli init --ai
The CLI is built but not published to npm yet, so this command will not resolve today. The AI setup prompt tab works right now.
$ npx @contentflow/cli init --ai
Detected platform: react-native ("expo" found in package.json)
SDK key (ws_..._app): ws_..._app
Workspace id (ws_...): ws_...
[x] src/lib/contentflow.ts written
[x] .env.example updated (added EXPO_PUBLIC_CF_SDK_KEY, EXPO_PUBLIC_CF_WORKSPACE_ID)
[x] contentflow-setup-prompt.txt written
Verifying against https://app.contentflow.click/api/v1 ...
Handshake verified.
Workspace ws_... confirmed.
No published blocks found yet.
Next: open https://app.contentflow.click and publish a block to see it appear.
Integrate ContentFlow (an in-app dynamic content platform) into this project.
My workspace credentials (already valid, use them exactly):
- API base URL: https://app.contentflow.click/api/v1
- SDK key (public): ws_..._app
- Workspace / tenant ID: ws_...
Build a small client module (no new dependencies): identify() handshake, sync() (handle the double data wrap), track() impression/tap. Render the first block as a card with a calm empty state until I publish, and re-sync on focus. Then run it once so identify() fires and remind me to hit PUBLISH.
The version in your dashboard is pre-filled with your real keys.
Today: production integration uses the REST API. Native SDKs for React Native, iOS, Android and Web are in preview and are not generally available. The @contentflow/cli package is not published yet.
App store review: publishing content through ContentFlow does not require a new build or a new store submission. Any change to your app's own code still goes through Apple and Google review, and remotely delivered content has to stay inside the purpose your app already declares and the store policies that apply to it.
Offline: with no network the app renders the fallback content compiled into your build. No ContentFlow change can reach a device that is offline, and a device that has never reached us has nothing of ours cached.
One engineering integration up front. After that your team publishes content changes without a new app build and without a new app store submission. Read the developer docs
Swipe to compare plans, or open the full breakdown for every limit.
Must-have features to ship your first controlled in-app campaigns.
For regulated teams with custom infrastructure, data, and governance needs.
The Free plan is for evaluation. Our terms do not permit real production, personal or regulated end-user data in evaluation or sandbox environments, so a pilot carrying real customer data runs under a signed agreement.
Paid plans are charged in Saudi riyals. Our receipts are payment receipts and are not tax invoices today.
Start free without a credit card. Talk to us if you need Enterprise controls.